找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3470|回复: 0
打印 上一主题 下一主题
收起左侧

红外遥控贪食蛇的单片机程序

[复制链接]
跳转到指定楼层
楼主
ID:212279 发表于 2017-6-20 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用面向对象的思想写的
旧版
P0 反接 行控
P1  正接 独立键盘
P2 正接 红色点阵
P3 反接 绿色点阵

新版
P0 反接 行控
P1 反接 绿色
P2 正接 红色

独立键盘:
K1    重启游戏
K3    向上
K6    向左   
K7    向下
K8    向右

红外遥控:
电源    重启
5    向上
7    向左   
8    向下
9    向右

单片机源程序如下:

  1. #include "MatrixLED.h"
  2. #include "Snake.h"
  3. #include "Food.h"
  4. #include "KeyboardInput.h"

  5. void StartGame(Snake * snake,Food * food);                                //初始化snake,food

  6. unsigned char UpdateByKeyboard(Snake * snake);                           //键盘输入更新

  7. unsigned char UpdateByInfrared(Snake * snake);                        //根据红外遥控输入更新
  8.                                                                
  9. void UpdateFood(Food * food);                                                        //更新食物

  10. void main(void)
  11. {                 
  12.         int startPeriod = 3000;                                                                //速度
  13.         int minPeriod = 5000;                                                                //初始长度
  14.         int gradient = 50;                                                                        //难度梯度

  15.         Snake snake;                                                                                //蛇对象
  16.         Food food;                                                                                           //食物对象


  17.         StartGame(&snake,&food);                                                        //初始化游戏成员对象

  18.         while (1)
  19.         {                       
  20.                 InitRedMatrix();                                                                   //初始化点阵                               
  21.                 InitGreenMatrix();          

  22.                 //检测碰撞(包括吃食物),碰到自己返回1,如果输入到重启键,返回0
  23.                 if (SnakeCollision(&snake, &food) || UpdateByKeyboard(&snake) == 0 /*|| UpdateByInfrared(&snake) == 0*/)
  24.                 {               
  25.                         ShowExplode(500);               
  26.                         StartGame(&snake,&food);
  27.                         continue;
  28.                 }

  29.                 SnakeMove(&snake);                                                                //更新蛇位置

  30.                 UpdateFood(&food);                                                                //更新食物
  31.                                                          
  32.                 UpdateCol();                                                                        //检查并更新每列数值

  33.                 ShowMatrix(startPeriod - snake._length * gradient);        //显示点阵,参数是周期。
  34.         }
  35. }

  36. void StartGame(Snake * snake, Food * food)
  37. {
  38.         InitSnake(snake);
  39.         InitFood(food);
  40. }          
  41. void UpdateFood(Food * food)
  42. {
  43.         if (!FoodExist(food))                                                        //判断是否存在食物,没有就加啊
  44.                 FoodsetPos(food, GetRandomFreePos());
  45.        
  46.         FoodShow(food);                                                                //显示食物
  47. }

  48. unsigned char UpdateByKeyboard(Snake * snake)
  49. {                 
  50.         unsigned char keyNum = 0;

  51.     keyNum = Key_Scan();                                                                        //扫描键盘

  52.         if (IsDirection(GetDirectionFromKey(keyNum)))                         //判断是否为方向
  53.                 SnakeSetDir(snake, GetDirectionFromKey(keyNum));

  54.         if (OnClickRestartKey(keyNum))                                                       
  55.                 return 0;
  56.         return 1;
  57. }

  58. //食物

复制代码

所有资料51hei提供下载:
EngorgeSnake-master.zip (77.54 KB, 下载次数: 6)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表