想学编程?那就关注《一碳科技》吧,干货十足哦!

坦克大战小游戏

《一碳科技》好久没有发布长篇教程了,实在是抱歉,为此,《一碳科技》正好利用了周末仅有的空闲时间为大家更新教程。本次《一碳科技》给大家带来的是“坦克大战小游戏”教程,为刚入门小伙伴打打基础,此次教程涉及到了一些C++的知识,如果对C++还不是太了解的小伙伴可以去学习一下。

未优化的代码

代码敲起来!

首先要明确我们要做的是一个“坦克大战小游戏”,所以很明显,我们需要定义一个“坦克类”和一个“炮弹类”,我们的“坦克类”一共有4个属性(依个人而定),分别为生命值、前进方向、坦克绘制原点(x),坦克绘制原点(y)。

▲坦克绘制原点

这里小编给大家解释一下“坦克绘制原点”。我们的游戏画面是在一个窗口中显示的,所以我们需要根据这个窗口的位置、大小来绘制我们的“坦克”图像,并且我们的“坦克”只能在我们的窗口之中运动,所以我们又需要用一个“标准”来判定我们的“坦克”是否在我们的窗口内(准确来讲是绘制区域),既要在绘制区域内绘制“坦克”,又要判定坦克是否在我们的绘制区域内,所以小编使用了坦克绘制原点这一概念。

坦克绘制原点,顾名思义,就是我们所绘制的坦克图像是跟坦克绘制原点关联的,我们要在一个20px*12px大小的区域内绘制我们的坦克,而这个区域的左上角定点就是我们的“坦克绘制原点”,在我们的窗口中,可以用“坦克绘制原点”的坐标来判断它是否位于绘制区域内,也可以根据这个坐标来绘制我们的坦克。

坦克类

我们的坦克类有4个公有数据成员,分别为unsigned char HP、char direction、int Tank_x、int Tank_y,1个公有函数——DrawTank()。

这里着重讲一下我们的DrawTank()函数,该函数的作用是绘制一个坦克图形,这个函数涉及到的知识并不多,但是该函数的算法方面就稍有一点复杂了,刚入门的小伙伴可以慢慢研究。

DrawTank()这个函数一共有接收三个函数,第一个参数是坦克绘制原点(x),第二个是坦克绘制原点(y),第三个参数是绘制坦克的颜色(这里用白色)。这里有人就会问了,为什么要将绘制颜色单独作为一个参数来传递呢?别急,到后面就知道了!

DrawTank()

首先我们先设置一下绘图颜色,我们会用到setlinecolor()函数,这个函数是用来设置当前绘图颜色的,它接受一个COLORREF类型的参数,说白了就是颜色值。

设置完绘图色之后,就要开始绘制坦克了,但是我们得先判断坦克的前进方向,坦克的前进方向是由用户传给我们的,小便分别用5、2、1、3来表示前、后、左、右,并使用switch()语句来判断。不同的方向,我们的坦克绘制方式也不同,具体的实现方法看下图↓

line()是用来绘制一条直线的,我们的坦克正是由不同长度的直线“拼接”而成的,正如上文做说的,我们的坦克是基于Tank_x、Tank_y这两个坦克原点坐标来绘制的,不论坦克处于哪个位置,我们都能通过这两个坐标来绘制坦克。从上图看出,坦克炮筒宽2px,长10px,坦克本身宽10px,长12px。

为了方便教学,小编绘制的坦克只是一个简单的平面图形,其他形状或者其他颜色的图形也可以仿照这个方法绘制。

以下是剩下三个方向的坦克绘制方法

以上是部分代码

由于篇幅关系,不能一下子把教程全部写完,以上是部分代码的教程,接下来《一碳科技》将会不定时发布剩余教程的剩余部分。

关注《一碳科技》及时得到更新的教程哦,更有详细学习源码等你拿!

首先先关注《一碳科技》,并私信关键字“坦克大战小游戏源码获取”,注意关键字不能错哦!

查看原文 >>
相关文章