标题:
红外遥控贪食蛇的单片机程序
[打印本页]
作者:
erick-2017
时间:
2017-6-20 11:20
标题:
红外遥控贪食蛇的单片机程序
使用面向对象的思想写的
旧版
P0 反接 行控
P1 正接 独立键盘
P2 正接 红色点阵
P3 反接 绿色点阵
新版
P0 反接 行控
P1 反接 绿色
P2 正接 红色
独立键盘:
K1 重启游戏
K3 向上
K6 向左
K7 向下
K8 向右
红外遥控:
电源 重启
5 向上
7 向左
8 向下
9 向右
单片机源程序如下:
#include "MatrixLED.h"
#include "Snake.h"
#include "Food.h"
#include "KeyboardInput.h"
void StartGame(Snake * snake,Food * food); //初始化snake,food
unsigned char UpdateByKeyboard(Snake * snake); //键盘输入更新
unsigned char UpdateByInfrared(Snake * snake); //根据红外遥控输入更新
void UpdateFood(Food * food); //更新食物
void main(void)
{
int startPeriod = 3000; //速度
int minPeriod = 5000; //初始长度
int gradient = 50; //难度梯度
Snake snake; //蛇对象
Food food; //食物对象
StartGame(&snake,&food); //初始化游戏成员对象
while (1)
{
InitRedMatrix(); //初始化点阵
InitGreenMatrix();
//检测碰撞(包括吃食物),碰到自己返回1,如果输入到重启键,返回0
if (SnakeCollision(&snake, &food) || UpdateByKeyboard(&snake) == 0 /*|| UpdateByInfrared(&snake) == 0*/)
{
ShowExplode(500);
StartGame(&snake,&food);
continue;
}
SnakeMove(&snake); //更新蛇位置
UpdateFood(&food); //更新食物
UpdateCol(); //检查并更新每列数值
ShowMatrix(startPeriod - snake._length * gradient); //显示点阵,参数是周期。
}
}
void StartGame(Snake * snake, Food * food)
{
InitSnake(snake);
InitFood(food);
}
void UpdateFood(Food * food)
{
if (!FoodExist(food)) //判断是否存在食物,没有就加啊
FoodsetPos(food, GetRandomFreePos());
FoodShow(food); //显示食物
}
unsigned char UpdateByKeyboard(Snake * snake)
{
unsigned char keyNum = 0;
keyNum = Key_Scan(); //扫描键盘
if (IsDirection(GetDirectionFromKey(keyNum))) //判断是否为方向
SnakeSetDir(snake, GetDirectionFromKey(keyNum));
if (OnClickRestartKey(keyNum))
return 0;
return 1;
}
//食物
复制代码
所有资料51hei提供下载:
EngorgeSnake-master.zip
(77.54 KB, 下载次数: 6)
2017-6-20 11:19 上传
点击文件名下载附件
贪吃蛇
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1