完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
求帮看一下改哪些。这个程序每次会在蛇尾放一个果实,无法实现随机产生果实的
#include #define uchar unsigned char #define SNAKE 20 //最大长度 #define tiME 50 //显示延时时间 #define SPEED 20 //速度控制 ***it keyenable=P3^6; //方向使能 ***it up=P3^3; //down ***it down=P3^1; ***it right=P3^2; ***it left=P3^4; uchar x[SNAKE+1]; uchar y[SNAKE+1]; uchar time,n,i,e,num1,num2,a,b; //延时时间,当前蛇长,通用循环变量,当前速度 char addx,addy; //位移偏移量 /******************** 延时程序 *********************/ void delay(char MS) { char us,usn; while(MS!=0) { usn = 0; while(usn!=0) { us=0xff; while (us!=0){us--;}; usn--; } MS--; } } /******************************************* 判断碰撞 *******************************************/ bit knock() {bit k; k=0; if(x[1]>7||y[1]>7)k=1; //撞墙 for(i=2;i return k; } /***************** 上下左右键位处理 *****************/ void turnkey()// interrupt 0 using 2 { if(keyenable) { if(left){addy=0;if(addx!=1)addx=-1; else addx=1;} if(right){addy=0;if(addx!=-1)addx=1; else addx=-1;} if(up){addx=0;if(addy!=-1)addy=1; else addy=-1;} if(down){addx=0;if(addy!=1)addy=-1; else addy=1;} } } /***************** 乘方程序 *****************/ uchar mux(uchar temp) { if(temp==7)return 128; if(temp==6)return 64; if(temp==5)return 32; if(temp==4)return 16; if(temp==3)return 8; if(temp==2)return 4; if(temp==1)return 2; if(temp==0)return 1; return 0; } /***************** 显示时钟 显示程序 *****************/ void timer0(uchar k) {while(k--) {for(i=0;i turnkey(); //上下左右键位处理 delay(TIME); //显示延迟 P2=0x00;P1=0xff; }} } /***************** 主程序 *****************/ void main(void) {e=SPEED; P0=0x00; P1=0xff; P2=0x00; P3=0x00; while(1) { for(i=3;i x[0]=5;y[0]=6; //果子 n=3; //蛇长 n=-1 x[1]=1;y[1]=0; //蛇头 x[2]=0;y[2]=0; //蛇尾1 addx=0;addy=0; //位移偏移 while(1){if(keyenable)break;timer0(1);} while(1) { timer0(e); if(knock()){e=SPEED;break;} //判断碰撞 if((x[0]==x[1]+addx)&(y[0]==y[1]+addy)) //是否吃东西 {n++; if(n==SNAKE+1) {n=3;e=e-10; for(i=3;i for(i=3;i } x[0]=x[n-2]; y[0]=y[n-2]; } for(i=n-1;i>1;i--){x=x[i-1];y=y[i-1];} x[1]=x[2]+addx;y[1]=y[2]+addy; //移动 } } } |
|
相关推荐
2个回答
|
|
加个定时器t0,和定时器t1,由着两个产生随机数,就可以了。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1168 浏览 3 评论
728 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
836 浏览 0 评论
919 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
747 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10861 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-26 08:24 , Processed in 0.527571 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号