文字RGP游戏——人魔之战!

NOTE:更新,源码及程序可以从百度网盘下载:下载文字RPG游戏

NOTE:此游戏是很久之前的作品,由于某些原因不再提供更新,未来有可能提供新版本的游戏代码,敬请期待。

NOTE:游戏里面的BUG还很多,所以代码只是供大家参考!

===============================================================================

这个RPG游戏算是自己写的比较正规的一个程序了吧,毕竟下了不少功夫,公开源代码,程序是在VS2005下编译的,想要程序,或想学习C++和游戏框架编程的朋友可以给我发邮件: lvpengms@gmail.com

上学期开学时,开始想写一个RPG游戏,但是由于自己个体能力有限,Directx也不怎么会,所以只能就写一个文字版的RPG游戏了,写了一个多月,每天晚上晚自习后就开始写坚持了一个月,算是写完了,然后就是编译和调试,总共用了一周的时间,最后一天调试时从下午2点一直到第二天凌晨4点,眼和身体几经都不行了,但是总算是完成了,整个代码大约8000~9000行,里面还有一些功能没完善,存储游戏功能还没有加入,不过最近时间很紧,过一些日子再把这个功能加入。

=========================================================================

游戏简介:

《人魔之战》:由于没有图形效果的支持,所以使游戏简陋了不少,不过麻雀虽小,五脏俱全,游戏里面包括了NPC系统、任务系统、物品道具系统、地图系统、打斗系统、技能,任务系统中可以添加收集物品类任务、NPC对话类任务、BOSS类任务、循环类任务,游戏大致是依据升级打怪过任务来设置的,就当是练手了。

游戏骨架:

Mission Class 任务类是非常重要的一个类,这个继而衍生出了其他几个子任务类,包括MissionBoss,MissionUsing,MissionNPC等几个小类。

Map Class 这个就是地图的结构,里面有显示地图,查找地图等功能。

NPC Class 是npc类,里面定义了npc的几个函数:对话、买卖、任务等。

Role Class & Monster Class 就是人物和怪物的类,操作都是些必要的功能。

Using Class Skill Class 定义了物品和技能。

Battle Class 是战斗场景,可以执行打斗和掉宝的功能。

Weapon Class 武器防具类,这个就不多说了。

=================================================================

回头看看写游戏时的档案,启发还是很多的,现在就贴一部分出来,与大家共勉!-----stl中类对象的拷贝

stl中list执行压入类对象的操作时,类对象是被复制,而不是执行引用操作,但是当动态建立一个类对象时,

压入此动态对象,当list被清空或者执行erase操作时,类对象是会被自动销毁的,不管原对象是通过动态

申请或者是直接写入得来的,故只要记住要手工销毁原动态申请的类对象就行了。

-----虚基类的构造函数和拷贝构造函数

当声明一个类为虚基类,其子类要重写虚基类中的虚函数,尤其是析构函数,若不重写析构函数,那么当

派生类对象执行销毁操作时,会执行基类中的析构函数,那么有可能会造成内存泄露,引起程序崩溃,故写一个

虚基类的派生类时,一定要重写基类的析构函数!

-----拷贝复制在项目中的作用

拷贝构造函数是用该类型的另外一个实例化的对象来初始化一个新建的对象,C++中拷贝构造函数有三种用途:

1) 一个对象以值传递的方式传入函数体;

2) 一个对象以值传递的方式从函数返回;

3) 一个对象需要通过另外一个对象进行初始化;

在本项目中用到的大致是以传地址引用的方法,当然也有以传值得方式进入函数主体,这种情况下要及时销毁

源对象,以免造成内存泄露。(当然,如果不是动态申请的对象可以不用手动析构)

------今天写了些重要的类函数,好累,近一千行代码,我的眼.脑&手快受不了了。。。。。。

-------再谈srand()函数

写游戏肯定离不开rand()产生的伪随机数,先看一个简单例子

for(int i=0;i

{

srand(unsigned(time(NULL)));

a[i]=rand()%100;

}

运行之快后会发现,输出的结果是大致一样的,原因就是time计算是以s为单位,srand()以不同的种子做种

,进而rand()产生不同的伪随机数,而这段程序整个执行时间不到1s,所以每次做种时种子是一样的,故

产生的伪随机数是一样的,要解决问题很简单,只要把srand(unsigned(time(NULL)))放在for循环的前

面就好了,同理,在游戏中,对于循环很而且每次到随机数时,最好把种子函数放在外面,这

样会保险一点。最最保险的做法是把种子在程序开始时就做了循环都要用。

---------在控制台下显示地图的函数写完了,算法太慢了,不过不想再改了。。。凑合着用吧。。。。。

----------list lt,lt.size() 返回的是size_t类型,用时别忘了类型区别

---------终于知道游戏开发文档在开发游戏历程中是多么重要了,因为没有考虑周全,想当然的写了些函数和调用,结果

到头来吃亏的还是自己,最后修改时才发现,写的类是多么的脆弱,类间耦合太差,函数接口太乱,分层

机制没有弄好,只是调试错误就让我马不停蹄得足足用了整整6个小时才搞定,开始时的编译错误有600多个,

我当场晕,眼前眼花撩轮,那种感觉。。。。沙漠中忽然看见绿洲却发现那是幻觉。。。。还好

坚持过来了,下面的工作就是添加游戏数据,修改游戏bug,估计要用2周的时间来完成,尽量赶吧,时间

不早了,眼皮快掉下来了。。。。。(2009-10-03)

--------调试工作进行中,程序中有太多意想不到的错误,有些甚至连做梦都不敢想,如果说类似悬挂else是手误的话,

那么 if() { stat; return 1; } 写成 if() stat; return 1;又该如何解释?像 a==b&&c==d 写成

a==d||c==d 这种错误是很难察觉的,有时就是这么一个小错误却让你费尽心机花费一个小时的时间来找出来,

比如修改一个全局的量,这个量可能经过几层函数最后修改,可是你能保证这几层函数栈关系没有发生过拷贝?

传指针是个不错的选择,那么有如何有效的避免野指针的出现?少写一个&或*对程序造成的影响,又该谁来

负责?这些问题都是不可避免的,我们的目标是如何尽量避免这些问题。

--------bug修正:

修正npc任务显示问题(原因:代码逻辑错误)

修改 物品npc 卖物品问题(逻辑错误)

修正部分技能显示及使用错误(代码问题)

修正魔法使用mp为负bug(白痴错误)

修正任务完成不能揭开新任务bug

修正 role卖装备部分内存错误(情况少考虑)

修正npc对话问题

修正任务信息显示问题

修正程序中类似cout<

修正游戏任务无法放弃bug(添加)

修正已做任务和未做任务删减出现的内存读取错误

修正一个NPC老邢任务循环显示问题

修正怪物打人掉血BUG

修正金钱减少时显示问题

lvpengms

=======================================================

最后附上游戏截图:

c++rpg黑框游戏_RPG游戏 C++源码 文字RPG游戏相关推荐

  1. c++编写手机小游戏代码_经典小游戏大集合(C++ 源码)

    [实例简介] 五子棋 贪吃蛇 俄罗斯方块 黑白棋 连连看 推箱子 扫雷等7个小游戏 C++源码 VC6.0 下编译运行. [实例截图] [核心代码] 经典小游戏大集合(C源码) └── 经典小游戏大集 ...

  2. 云开发版合成大西瓜小游戏微信小程序源码 微信游戏小程序附带流量主功能

    这是一款云开发版的合成大西瓜小游戏微信小程序源码,微信游戏小程序源码.该小游戏玩法简单,只需要拖动同样的水果落下合成新品众的水果,最终合成大西瓜,玩法酷似俄罗斯方块,相当于换一种形式的俄罗斯方块,简单 ...

  3. 打砖块小游戏php程序,javascript实现打砖块小游戏(附完整源码)

    小时候玩一天的打砖块小游戏,附完整源码 在?给个赞? 实现如图 需求分析 1.小球在触碰到大盒子上.左.右边框,以及滑块后沿另一方向反弹,在碰到底边框后游戏结束: 2.小球在触碰到方块之后,方块消失: ...

  4. 【通知】▁▂▃ Himi 最新著作《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发》★书籍源码+第4/5/6样章★-免费下载★ ▃▂▁

    2013年新年,Himi的第二本著作:<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>一书正式发售: (大家可以到新华书店.淘宝.拍拍.当当.亚马逊等进行购买) ...

  5. 最新好看的自适应手机版软件APP下载类网站源码,游戏软件应用网站源码,自适应手机端Pbootcms模板

    自适应手机软件APP下载类网站源码/游戏软件应用网站源码/自适应手机端 Pbootcms模板 测试环境:Linux  nginx1.18  PHP7.3 下载地址:自适应手机端软件APP下载网站源码 ...

  6. 娱乐小游戏助力神器威信小程序源码下载多种游戏选择玩法多种

    大家好今天给大家带来另外一款小神器 好像记得小编之前也发过好几款这种小程序源码吧 但是每一款的UI或者功能什么的都还是会有所不一样的 大家也可以找找之前所发的那几款对比一下然后决定自己需要哪一款哟 这 ...

  7. “限时分享“ 本地80个小游戏 HTML+CSS+JS源码分享

    开源项目集合 1. "限时分享" 本地80个小游戏 HTML+CSS+JS源码分享 2. "限时分享" 别错过了,最全的微信小程序源码收集分享 里面有80款小游 ...

  8. 游戏约玩app源码开发,重复请求如何处理?

    在游戏约玩app源码开发当中,很多时候会出现短时间内接口重复请求的情况,如果没有妥当地处理,很可能会造成以下的影响: 对于get请求: 1.游戏约玩app源码页面触发多次渲染,造成页面抖动的现象: 2 ...

  9. vs+cmake完美编译RTS游戏,类似魔兽争霸源码

    网上的一个RTS游戏,网上的代码比较老,不能直接编译.这个仓库是我整理编译通过的.代码版权归于原作者. 源码下载 vs+cmake完美编译RTS游戏,类似魔兽争霸源码下载-其他文档类资源-CSDN文库 ...

最新文章

  1. usaco Stringsobits
  2. mysql的in查询是可以用到索引吗?亲测详解
  3. leetcode 909. 蛇梯棋
  4. android Sqlite小记
  5. vuex commit 模块_分享一个Vuex的使用的新姿势
  6. C#通过COM组件调用IDL的pro程序
  7. 去掉input回车自动提交
  8. Navicat Premium 11.2.7 中文破解版安装
  9. java解压jar包的方法_Java 打包成jar包 和 解压jar包
  10. PR转场预设 放大特效带有重影效果的PR视频转场预设
  11. 20135202闫佳歆——信息安全系统设计基础第九周学习总结
  12. C++之struct
  13. 3322的动态域名申请设置
  14. 进阶无人驾驶—百度Apollo高精度地图
  15. 2020.9.2丨个体重测序、KASP分型产品介绍
  16. angular使用echarts词云图wordCloud
  17. win7 U盘安装和激活
  18. Android基础课程:第三方视频播放器(播放网络资源)
  19. Xilinx FPGA 将寄存器放入IOB中
  20. 2018区块链概念股龙头

热门文章

  1. android换苹果,苹果换手机怎么转移数据?苹果、安卓都可以一键转移数据
  2. Docker最全教程——从理论到实战
  3. STM32F103C8T6驱动6线OLED(SPI通讯)
  4. windows电脑蓝光过滤,颜色校准调节蓝光,电脑源头过滤蓝光,保护眼睛,护眼软件原理
  5. 遗传算法中交叉方法简介及基于适应度的启发式多点交叉
  6. 华为昇腾系列开发入门教程二:开局一张图,手把手教你鉴“XX”
  7. kali linux adb 安装教程,kali linux 使用scrcpy手机投屏
  8. 最长回文子串(C语言)
  9. 【JavaScript】Generator函数
  10. aizu/aoj-0118-Property Distribution