完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
基于STM32战舰V3开发板的贪吃蛇游戏
本文是基于STM32战舰V3开发板平台的贪吃蛇游戏,主要用到了开发板上的ATK-HC05蓝牙模块,按键模块,LCD液晶显示屏模块;在程序设计方面主要是对贪吃蛇游戏进行程序设计,深入理解贪吃蛇游戏的设计思想以及开发板与手机蓝牙的信息交互,最终通过软件与硬件的配合实现STM32战舰V3开发板平台的贪吃蛇游戏。 主要用到的软件资源有:串口3、定时器3 主要用到的硬件资源有:按键4个、液晶显示屏、ATK-HC05蓝牙模块 主循环中控制游戏进程与显示屏现实,通过定时器中断服务程序和串口中断服务程序,协调手机与蓝牙模块连接向开发板发送的控制数据与按键检测获取控制数据,结合主循环的游戏进程以按键和手机两种方式实现控制游戏的进行。 可利用按键KEY_UP、KEY0、KEY1、 KEY2分别代表上、左、下、右或者手机端控制蛇的走位 基本思路:蛇每吃一个食物蛇身子就增加一格,用WASD控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推 附加功能:包含等级选择、暂停/继续、分数制、关卡的选择,难度的设置等 地图的创建:创建地图,游戏开始前先建立好地图, 将外围一圈设置为城墙。 void show_map(void){ LCD_Fill(x1,y1,x2,y1+10,BLUE); LCD_Fill(x1,y1,x1+10,y3,BLUE); LCD_Fill(x4-10,y2,x4,y4,BLUE); LCD_Fill(x3,y4-10,x4,y4,BLUE); LCD_Fill(210,700,480,700,WHITE);} 食物的产生 利用随机函数(rand())产生随机食物的坐标,该坐标的值不能与墙重合,不能与蛇身重合。食物我这里用的是红色方块表示。 void Creat_food(void){ rand(); //产生一个30到50的随机数 if(Food_flag==1) { Food_flag=0; Food_x= (rand()%45+1)*10; //产生一个1到45的随机数 Food_y= (rand()%55+1)*10; //产生一个1到55的随机数 } LCD_Fill(Food_x,Food_y,Food_x+10,Food_y+10,RED);} 构造一条蛇 使用两个unsigned char类型的二维数组。 SNACK_x[100] SNACK_y[100] SNACK_x[100] SNACK_y[100]SNACK_x[0]=90,SNACK_y[0]=50;SNACK_x[1]=80,SNACK_y[1]=50;SNACK_x[2]=70,SNACK_y[2]=50;for(i=0;i《3;i++)//初始化蛇身长为SNACK_L=3,初始化蛇的位置:{LCD_Fill(SNACK_x,SNACK_y,SNACK_x+10,SNACK_y+10,RED);} 利用按键KEY_UP、KEY0、KEY1、 KEY2分别代表上、左、下、右或者手机端控制蛇的走位,以及当蛇每走一步就利用清屏,重新打印蛇身,模拟蛇的移动。 #define LEFT 1#define RIGHT 2#define UP 3#define DOWN 4for(i=SNACK_L-1;i》0;i--)//记录蛇身{ SNACK_x=SNACK_x[i-1]; SNACK_y=SNACK_y[i-1];}//计算蛇头位置if(DIR==RIGHT) SNACK_x[0]=SNACK_x[0]+10;if(DIR==LEFT) SNACK_x[0]=SNACK_x[0]-10;if(DIR==UP) SNACK_y[0]=SNACK_y[0]-10;if(DIR==DOWN) SNACK_y[0]=SNACK_y[0]+10; 游戏结束 当蛇撞墙, 以及咬到自己的身体时候游戏结束。 if(SNACK_x[0]==0||SNACK_x[0]==470||SNACK_y[0]==0||SNACK_y[0]==590)//是否撞墙 { GAME_state=2;//GAME OVER delay_ms(500); delay_ms(500); LCD_Clear(WHITE); return; }for(i=1;i《SNACK_L;i++)//判断是否咬到蛇身 { if(SNACK_x[0]==SNACK_x && SNACK_y[0]==SNACK_y) { GAME_state=2;//GAME OVER delay_ms(500); delay_ms(500); LCD_Clear(WHITE); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2562 浏览 0 评论
1159浏览 2评论
762浏览 1评论
515浏览 0评论
272浏览 0评论
453浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 13:08 , Processed in 1.226231 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号