基於正點原子SRM32F103ZET6精英板(戰艦板)的貪吃蛇小遊戲(附原始碼)
基於正點原子SRM32F103ZET6精英板(戰艦板)的貪吃蛇小遊戲
簡介:這個貪吃蛇小遊戲是我嵌入式實訓自選的課題設計,本人也是初學,所以做出來的東西也不算複雜,話不多說,先看看成品(由於放不進去視訊,所以放的截圖)
所以,本設計大概實現了傳統貪吃蛇遊戲的功能:
1、用的螢幕是精英板自帶的4.3寸(480800)LCD屏,所以為了維持正方形,分成8048等分;
2、預設小蛇初始長度、速度、方向,以及小蛇的長度上限值;
3、每吃到食物小蛇長度+1,每吃到兩個食物小蛇速度+1;
4、當小蛇頭部座標與螢幕邊界或自身重合則死亡,或者長度達到上限則遊戲結束。
遊戲規則可以根據個人喜好進行更改。
主函式部分程式碼
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "beep.h"
//內部驅動
#include "rand.h"
//外圍電路
#include "led.h"
#include "key.h"
#include "lcd_4_3.h"
//使用者演算法
#include "my_task.h"
#define GAME_WIDTH 480 //設定螢幕解析度為800*480,為了維持正方形,分成80*48等分
#define GAME_HEIGHT 800
#define GAME_XPART 48
#define GAME_YPART 80
enum sta //列舉狀態
{
OFF,//0
ON //1
} station;
enum dir //列舉貪吃蛇方向
{
UP, //上
DOWN, //下
LEFT, //左
RIGHT //右
}direction;
typedef struct //貪吃蛇重要引數集
{
u16 speed; //速度
u16 length; //長度
u16 energybuf; //能量快取
u16 width; //蛇寬
u16 life; //生命數
u16 firstx; //蛇頭座標x
u16 firsty; //蛇頭座標y
u16 lastx; //蛇尾座標x
u16 lasty; //蛇尾座標y
u16 color; //蛇顏色
}snakes;
snakes snake;//此時snake符合snakes結構體中得所有引數
void Snake_Init(snakes * snake)//貪吃蛇引數初始化
{
snake->speed=5;
snake->length=10;
snake->energybuf=0;
snake->width=1;
snake->life=3;
snake->firstx=4;
snake->firsty=5;
snake->lastx=0;
snake->lasty=0;
snake->color=BLUE;
}
typedef struct //食物重要引數集
{
u16 energy ;//食物能量
u16 x ; //食物座標x
u16 y ; //食物座標y
}apples;
apples apple;
void Apple_Init(apples * apple)//食物引數初始化
{
apple->energy=1;
// apple->x=24; //座標由隨機數計算出來
// apple->y=40;
}
typedef struct //事件重要引數集
{
u16 Process ;//是否遊戲暫停
u16 GameSta ;//是否遊戲結束
u16 AppleSta;//食物狀態
u16 Direction;//蛇前進方向
}events;
events event;
void Event_Init(events * event)//事件引數初始化
{
event->Process=ON;//沒有暫停
event->GameSta=ON;//沒有結束
event->AppleSta=ON;
event->Direction=DOWN;//初始方向向下
}
typedef struct //貪吃蛇座標引數
{
u16 x;
u16 y;
}axiss;
axiss snake_axis[100]; //設蛇身最大長度可以達到100
void Display(u16 x,u16 y,u16 color)//按照80*48的座標對映到800*480的螢幕上
{
LCD_Fill(GAME_WIDTH/GAME_XPART*x,GAME_HEIGHT/GAME_YPART*y,GAME_WIDTH/GAME_XPART*(x+1),GAME_HEIGHT/GAME_YPART*(y+1),color);
}
void DisplayInit(void) //蛇身初始化,預設在該位置,並蛇頭向下
{
u16 i;
for(i=0;i<5;i++)//將初始座標存入蛇身座標內
{
snake_axis[i].x=i;
snake_axis[i].y=0;
}
for(i=5;i<10;i++)
{
snake_axis[i].x=4;
snake_axis[i].y=i-4;
}
LCD_Clear(WHITE);
for(i=0;i<10;i++)
{
Display(snake_axis[i].x,snake_axis[i].y,BLUE);//按照初始座標列印出蛇身
}
}
void GameOver(void)//遊戲結束函式,列印"GAME OVER",蜂鳴器響,掛起核心資料處理函式
{
LCD_ShowString(180,388,200,24,24,"GAME OVER !");
BEEP=1;
delay_ms(500);
BEEP=0;
vTaskSuspend(EVENTTask_Handler);//掛起事件任務函式,核心資料處理函式event_task
}
原始碼:https://download.csdn.net/download/mj19981206/13719253
相關文章
- GUI 基於Swing製作貪吃蛇小遊戲GUI遊戲
- (完整原始碼)貪吃蛇小遊戲——HTML+CSS+JavaScript實現原始碼遊戲HTMLCSSJavaScript
- 貪吃蛇c原始碼原始碼
- Python:遊戲:貪吃蛇Python遊戲
- STM32最小系統板OLED貪吃蛇
- 貪吃蛇大作戰JavaFx版完整原始碼Java原始碼
- 【Python】 Python小遊戲-貪吃蛇大冒險Python遊戲
- C語言貪吃蛇原始碼C語言原始碼
- [譯] RxJS 遊戲之貪吃蛇JS遊戲
- C語言小遊戲------貪吃蛇----小白專用C語言遊戲
- js+jquery實現貪吃蛇經典小遊戲JSjQuery遊戲
- 100行Python程式碼實現貪吃蛇小遊戲(超詳細)Python遊戲
- 貪吃蛇
- JavaScript-開發一個簡單的貪吃蛇小遊戲JavaScript遊戲
- Python實現貪吃蛇大作戰Python
- 貪吃蛇完整版小案例
- 04 貪吃蛇
- 貪吃蛇jsJS
- Android-貪吃蛇小遊戲-分析與實現-Kotlin語言描述Android遊戲Kotlin
- 開發Windows貪吃蛇遊戲——(一)前期準備Windows遊戲
- OpenGL實現貪吃蛇程式碼
- 《貪吃蛇巴士》:《貪吃蛇》和《瘋狂計程車》的「完美結晶」
- python實現貪吃蛇Python
- Java實現貪吃蛇Java
- Python3 貪吃蛇Python
- c/c++實現簡單的貪吃蛇視覺化遊戲C++視覺化遊戲
- 利用python實現簡易版的貪吃蛇遊戲(面向python小白)Python遊戲
- 純JS實現貪吃蛇遊戲 —— 可能是全網程式碼最優雅的實現。JS遊戲
- 一步步教你怎麼用python寫貪吃蛇遊戲Python遊戲
- 裝逼的最高境界---一行js程式碼完成一個簡易版的貪吃蛇遊戲JS遊戲
- C語言實現桌面貪吃蛇C語言
- pygame試水,寫一個貪吃蛇GAM
- 開發出貪吃蛇的諾基亞,為何會被手遊時代拋棄?
- 用 Python 寫個貪吃蛇,保姆級教程!Python
- 溫習資料演算法—貪吃蛇演算法
- 自動玩貪吃蛇的小白痴機器人機器人
- canvas吃豆小遊戲程式碼Canvas遊戲
- .NET分散式Orleans - 8 - 貪吃蛇專案實戰(準備階段)分散式