標題:
紅外遙控貪食蛇的單片機程序
[打印本頁]
作者:
erick-2017
時間:
2017-6-20 11:20
標題:
紅外遙控貪食蛇的單片機程序
使用面向?qū)ο蟮乃枷雽懙?br /> 舊版
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); //根據(jù)紅外遙控輸入更新
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(); //檢查并更新每列數(shù)值
ShowMatrix(startPeriod - snake._length * gradient); //顯示點陣,參數(shù)是周期。
}
}
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, 下載次數(shù): 6)
2017-6-20 11:19 上傳
點擊文件名下載附件
貪吃蛇
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1