MFC实现贪吃蛇游戏之食物的产生
来源:互联网 发布:静力学有限元分析软件 编辑:程序博客网 时间:2024/04/29 14:21
http://www.dbgpro.com/archives/340.html
最近有点事,耽误了文章的更新,需要说下的是,之前我用的VS2015写的代码,现在改成VS2010了~
根据早几天的文章,我们已经能创建出一条蛇,并能让他移动,今天的任务非常非常简单,我们只要在窗口上创建出食物即可~
思路是,我们随机一个X,Y出来,然后将数组 m_arrGameRange[x][y]改成3 然后在DrawGameRange函数加个判断 else if(m_arrGameRange[j] == 2)
大家可以先尝试下自己写个创建食物的代码,然后再看教程,这样有助于大家能力的提升!
好了,话不多说,我们在上次的代码的基础上加个函数,叫做CreateFood();没有返回值,我们再头文件加上void CreateFood();
然后在void CSnakeDlg::InitGameData()中调用下这个函数
CreateFood函数的实现代码如下
[C++] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
void
CSnakeDlg::CreateFood()
{
srand
(
time
(0));
//创建一个时间种子
int
x =
rand
()%GAME_COL-1;
//产生一个0--GAME_COL-1的随机数
while
(x == 0)
//如果是0的话 会画在绿色的框框上,必须重新随机
{
x =
rand
()%GAME_COL-1;
}
int
y =
rand
()%GAME_ROW-1;
while
(y == 0)
{
y =
rand
()%GAME_ROW-1;
}
m_arrGameRange[x][y] = 2;
//将这个随机的行、列设置为2 表示食物
Invalidate();
}
然后将DrawGameRange代码改成下面这样
[C++] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void
CSnakeDlg::DrawGameRange(CDC& dc)
{
CBrush brushGame(RGB(0, 0, 0));
//创建黑色画刷 用来画游戏区域
CBrush brushBorder(RGB(34, 176, 76));
//创建绿色画刷 用来画边框
CBrush brushFood(RGB(255,201,14));
//创建橙色画刷 用来画食物
//遍历行、列来画不同的颜色
for
(
int
i = 0; i < GAME_COL; i++)
{
for
(
int
j = 0; j < GAME_ROW; j++)
{
//根据行列来计算一个矩形大小,每个矩形占20个像素
CRect rt;
rt.left = i * 20;
rt.top = j * 20;
rt.right = rt.left + 20;
rt.bottom = rt.top + 20;
if
(m_arrGameRange[i][j] == 1)
//需要画边框
{
//填充矩形的函数,
//第一个参数是要填充的矩形
//第二个参数是什么什么画刷填充矩形
dc.FillRect(rt, &brushBorder);
}
else
if
(m_arrGameRange[i][j] == 0)
//画游戏区域
{
dc.FillRect(rt, &brushGame);
}
else
if
(m_arrGameRange[i][j] == 2)
//画食物
{
dc.FillRect(rt, &brushFood);
}
}
}
}
大功告成,运行看看是不是有食物了
0 0
- MFC实现贪吃蛇游戏之食物的产生
- MFC实现贪吃蛇游戏之蛇的创建
- MFC实现贪吃蛇游戏之蛇的移动
- MFC实现贪吃蛇游戏之游戏窗口
- MFC贪吃蛇游戏
- 智能寻路贪吃蛇系列之 简单贪吃蛇的MFC实现(上)
- 智能寻路贪吃蛇系列之 简单贪吃蛇的MFC实现(下)
- 用C代码写贪吃蛇游戏--打印食物
- MFC之贪吃蛇
- 贪吃蛇游戏实现
- 【游戏算法之贪吃蛇】我想的贪吃蛇算法
- C++实现的贪吃蛇游戏
- 贪吃蛇游戏的MIDP实现
- 贪吃蛇游戏的C语言实现
- 简单贪吃蛇游戏的C++实现
- JavaScript 贪吃蛇游戏的实现
- H5实现的贪吃蛇游戏
- 用C++实现的贪吃蛇游戏
- Android EditText 禁止换行 只输入数字,字母; 登录Activity的 输入框:直接是使用
- WinCE Bootloader的烧写与内核影像下载
- 个人笔记(2016.12.01)
- 欢迎使用CSDN-markdown编辑器
- Android中使EditText失去焦点禁止弹出键盘
- MFC实现贪吃蛇游戏之食物的产生
- Android GirdView 最后一行显示不完整
- 少数派之指纹识别技术Touch ID
- angular2.0下的依赖注入
- 使用thinkphp实现上传文件(uploadify插件)
- 【Matplotlib】详解图像各个部分
- Jquery 动态事件绑定(.live()事件)
- Python面向对象编程备忘
- android 热修复 技术选型