云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 游蛇吃豆嵌入式课程设计

游蛇吃豆嵌入式课程设计

  • 62 次阅读
  • 3 次下载
  • 2026/4/27 4:39:50

{ DelChangePoint(); } } switch(EndDirect) { case 1: EndPos[0] = EndPos[0] + m; //蛇尾横坐标移动m break; case 2: EndPos[0] = EndPos[0] - m; break; case 3: EndPos[1] = EndPos[1] - m; //蛇尾纵坐标移动m break; case 4: EndPos[1] = EndPos[1] + m; break; } //绘制snake //ClearScreen(); //Draw3DRect2(pdc, psnakeRect, RGB(0, 0, 0), RGB(0, 0, 0)); FillRect2(pdc, pbarRect1, GRAPH_MODE_NORMAL, RGB(0, 255, 255)); FillRect2(pdc, pbarRect2, GRAPH_MODE_NORMAL, RGB(0, 255, 255)); if (ChangePointCount==0) { draw_rect(HeadPos[0],HeadPos[1], EndPos[0], EndPos[1]); }

else //不断调用可以动态显示移动过程 {

draw_rect(HeadPos[0],HeadPos[1],ChangePointPos[0][0], ChangePointPos[0][1]);

for(i=1; i

draw_rect(ChangePointPos[i-1][0],ChangePointPos[i-1][1],

} }

ChangePointPos[i][0],ChangePointPos[i][1]; }

draw_rect(ChangePointPos[i-1][0],ChangePointPos[i-1][1], EndPos[0],EndPos[1]); }

OSTimeDly(200);

2. 判断吃否吃到豆子

判断蛇是否吃到食物的方法比较简单,只要判断蛇头的 X,Y 坐标是否同时和食物的坐 标的 X,Y 一样.吃到食物后改变响应的游戏参数,这时候要让变 量addcount 加 1,要注意根据此时蛇的运动方向来确定新蛇头的坐标.另外,要注意,蛇吃完食物后,要把变量boolbean00[i], bean01[0], bean10[0], bean11[0] 赋值 FALSE, 食物产生子程序能够判断食物已经被蛇\吃到\了,要重新产生食物.

代码:

u8 bean00[3][2] = { {2,11}, {18,13}, {15,20} }; u8 bean01[1][2] = { {10,27} }; u8 bean10[1][2] = { {38,3} }; u8 bean11[1][2] = { {27,38} };

if (HeadPos[0] <= 20) { if (HeadPos[1] <=20) { for (i=0;i<3;i++) if (boolbean00[i] == TRUE) { if ( (bean00[i][0] == HeadPos[0]) && (bean00[i][1] == HeadPos[1]) ) { catch = TRUE; boolbean00[i] = FALSE; addcount = 2; number++; score(number);

mscore=number*2-n*0.01+1;

scoresco(mscore);

key=mscore;//得到按键值

Delay(1);

ZLG7289_ENABLE();//使zlg7289占有同步串口 WriteSDIO(ZLG7289_CMD_DATA0|0);//数码管以方式0译码,第一个数码管亮 WriteSDIO(key);//显示个位 Delay(1);//延时 if(key>9) {//键值大于9显示十位 WriteSDIO(ZLG7289_CMD_DATA0|1);//发送十位数据 WriteSDIO((unsigned char)(key/10)); Delay(1); WriteSDIO(ZLG7289_CMD_HIDE);//使一、二两位数码管显示 WriteSDIO(3); } else {//键值小于10不显示十位 WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示 WriteSDIO(1); } ZLG7289_DISABLE();//zlg7289放弃同步串口控制权 // shine(); return; } } } else { if (boolbean01[0] == TRUE) { if ( (bean01[0][0] == HeadPos[0]) && (bean01[0][1] == HeadPos[1]) ) { catch = TRUE; boolbean01[0] = FALSE; addcount = 2; number++; score(number); } } } } else {

if (HeadPos[1] <=20) { if (boolbean10[0] == TRUE) { if ( (bean10[0][0] == HeadPos[0]) && (bean10[0][1] == HeadPos[1]) ) { catch = TRUE; boolbean10[0] = FALSE; addcount = 2; number++;

score(number); } } } else { if (boolbean11[0] == TRUE) { if ( (bean11[0][0] == HeadPos[0]) && (bean11[0][1] == HeadPos[1]) ) { catch = TRUE; boolbean11[0] = FALSE; addcount = 2; number++;

score(number); } } } }

3. 画豆子

画豆子时,通过判断豆子有没有被吃掉决定要不要画,如果已经被蛇吃掉,就不画,没有吃掉就画,通过数组的值是TRUE还是FALSE来判断。数组的值为TRUE则画圆表示豆子,数组的值为FALSE则不画。

FillRect2(pdc, psnakeRect, GRAPH_MODE_NORMAL, RGB(100, 255, 0));//清除主窗口的显示

搜索更多关于: 游蛇吃豆嵌入式课程设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

{ DelChangePoint(); } } switch(EndDirect) { case 1: EndPos[0] = EndPos[0] + m; //蛇尾横坐标移动m break; case 2: EndPos[0] = EndPos[0] - m; break; case 3: EndPos[1] = EndPos[1] - m; //蛇尾纵坐标移动m break; case 4: EndPos[1] = EndPos[1] + m; break; } //绘制snake //ClearScreen(); //Draw3DRect2(pdc, psnakeRect, RGB(0, 0, 0), R

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com