C++版的坦克大战(1)---实现基本设计和j简单思想
2015-09-01 17:53
435 查看
最近在学习c++,发现好难学,还在还学会一点。那么,就学以致用一下,打算写个c++简单版的坦克游戏。只所以选择做这个,因为比较简单。
相信很多人都玩过这个游戏,如果没有玩过的话,可以去问问“度娘”,会找到好多。我们玩游戏比较简单,但是,动起手来写代码总会不知道从何下手,我也很纠结。想来想去,有了点眉目:
将所有的数据封装到数据类(CData)中
将所有的算法、检测判断放到引擎类(CEngine)中
将绘图的放置到绘图(CDraw)中
将业务逻辑放置到 游戏类(CGame)中
将CData作为基类存在,CEngine、CDraw作为CData的子类,同时作为CGame的基类,由于c++中存在多继承,为了避免出现多继承的二义性,建议使用虚基类实现。
形成如下的逻辑:
CData
/ \
/ \
/ \
CEngine CDraw
\ /
\
/
\ /
CGame
代码如下:
CData类
CDraw类
CGame类
先这样,后面再接着写
相信很多人都玩过这个游戏,如果没有玩过的话,可以去问问“度娘”,会找到好多。我们玩游戏比较简单,但是,动起手来写代码总会不知道从何下手,我也很纠结。想来想去,有了点眉目:
将所有的数据封装到数据类(CData)中
将所有的算法、检测判断放到引擎类(CEngine)中
将绘图的放置到绘图(CDraw)中
将业务逻辑放置到 游戏类(CGame)中
将CData作为基类存在,CEngine、CDraw作为CData的子类,同时作为CGame的基类,由于c++中存在多继承,为了避免出现多继承的二义性,建议使用虚基类实现。
形成如下的逻辑:
CData
/ \
/ \
/ \
CEngine CDraw
\ /
\
/
\ /
CGame
代码如下:
CData类
class CData{ public: CData(); ~CData(); }CEngine 类
class CEngine : virtual public CData { public: CEngine(void); ~CEngine(void); }
CDraw类
class CDraw : virtual public CData { public: CDraw(void); ~CDraw(void); }
CGame类
class CGame : virtual public CDraw, virtual public CEngine { public: CControl(void); ~CControl(void); }
先这样,后面再接着写
相关文章推荐
- C++包括头文件<>和""差额
- c语言编的心形图案,有兴趣的看看
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言day02-变量、数据类型、赋值、其他
- C/C++_文件重定向的几种方式
- c语言练习题 2-5 反弹
- Effective C++ 条款29 为"异常安全"而努力是值得的
- C++面向对象高级开发课程(第一周)
- 详解C语言中telldir()函数和seekdir()函数的用法
- C++11(std::thread)
- C++ 虚函数
- 链表初始化看C语言的二级指针(转)
- c语言bit倒置最好的算法-离msb-lsb至lsb-msb
- C++ 传参时传内置类型时用传值(pass by value)方式效率较高
- C++ 传参时传内置类型时用传值(pass by value)方式效率较高
- EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP
- C,C++
- C++中定义字符串数组
- 递归实现字符串逆序打印
- 【c++ Primer stringstream流总结】