坦克大战的编程代码(代码之坦克大战)

这个项目

C 讲解

坦克大战的编程代码(代码之坦克大战)(1)

对坦克大战情有独钟是因为大学时候第一次参加程序设计比赛就做的这个游戏。当时用的语言是Java,那个比赛让我悟出了面向对象的强大之处,我也是从那时开始接触设计模式的。对我而言,坦克大战有着非同寻常的意义,所以一定要带大家用C 实现一下。

坦克大战

我们依然使用EasyX在控制台程序中制作这个游戏程序。这一篇的主要任务是在屏幕上画出一个白色的主战坦克,可以通过方向键控制它的前进方向。效果如下:

下面我们正式开始。

画布类

在这个工程中,我们将EasyX画布相关的功能封装在一个Graphic类中,创建两个文件:Graphic.h和Graphic.cpp。

坦克大战的编程代码(代码之坦克大战)(2)

所有坦克都需要引用的东西会定义在这个文件中。这里定义了一个枚举类型,表示方向用的。我们的程序只考虑四个方向,如果需要让坦克可以有八个前进方向后面可以在这里扩充其他方向。

坦克抽象类中,我们定义了两个函数,Display和Move大家很熟悉了,在星空项目里用的很多,主要是负责将自己画在屏幕上和移动自己。

属性中m_dir保存坦克的行驶方向,Display和Move都需要使用它。

主战坦克

所谓主战坦克就是玩家控制的坦克,所有的坦克中,只有这个一个是可以控制的。这一点它比较特殊。

创建文件MainTank.h,写入下面代码:

坦克大战的编程代码(代码之坦克大战)(3)

坦克大战的编程代码(代码之坦克大战)(4)

这个类继承了Tank类,在初始化时给各个属性赋初值。我们默认主战坦克一开始在屏幕中间,行驶方向向上,颜色为白色。

我们主战坦克的形状如下:

坦克大战的编程代码(代码之坦克大战)(5)

我们来看看怎么实现它。创建文件MainTank.cpp代码如下:

坦克大战的编程代码(代码之坦克大战)(6)

坦克大战的编程代码(代码之坦克大战)(7)

坦克大战的编程代码(代码之坦克大战)(8)

坦克大战的编程代码(代码之坦克大战)(9)

SetDir

这个很简单,就是修改成员变量的值。通过这个函数能够改变坦克的行驶方向。

DrawTankBody

这个函数负责画坦克的主题部分,一个正方形的坦克身和两个矩形的履带。由于坦克上下行驶和左右行驶形状不同,因此通过一个参数负责绘制不同的形状。

Display

这个是核心的绘制方法,提供给外部调用的。这里主要是两部分工作:

  • 判断坦克的行驶方向,之后调用DrawTankBody绘制出坦克身

  • 根据行驶方向画上炮管

Move

这个函数每执行一次,坦克向前移动m_step长度。当超出屏幕边沿时,从另一侧重新出现,行驶方向不变。是不是很简单。

键盘事件监听

最后到了我们的主程序了,新建文件main.cpp,加入下面代码:

坦克大战的编程代码(代码之坦克大战)(10)

坦克大战的编程代码(代码之坦克大战)(11)

坦克大战的编程代码(代码之坦克大战)(12)

坦克大战的编程代码(代码之坦克大战)(13)

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

639368839,我们一起学C/C !

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页