資源簡介
基于stm32平臺開發的俄羅斯方塊源代碼

代碼片段和文件信息
#define?__GAME_H
#include?“game.h“
#include?“stdlib.h“
#include?“stm32f10x_lib.h“
#define?White??????????0xFFFF
#define?Red????????????0xF800
#define?White??????????0xFFFF
#define?Grey???????????0xF7DE
#define?Blue???????????0x001F
#define?Blue2??????????0x051F
#define?Magenta????????0xF81F
#define?Green??????????0x07E0
#define?Cyan???????????0x7FFF
#define?Yellow?????????0xFFE0
#define?BLOCK_SIZE?13?//單個方塊的大小
#define?BLOCK_BORDER?14?//方塊的邊界
#define?X_BORDER?21?//垂直深度
#define?Y_BORDER?11?//寬
#define?X_START?2?//方塊初始位置
#define?COLOR?Green
u8?rad;
u8?rad1;
extern?void?dis_score(void);
void?clr_score(void);
u16?score?=?0;
typedef?struct?touch_pix?{
????u8?flag;
????u16?pix_x;
????u16?pix_y;
}touch_pix;
unsigned?char?picture[31][20];//記錄畫面像素點
int?game_cnt?=?0;
game_std?g_game_std;
unsigned?char?diamond_cnt;
diamond_std?*d_pointer[17];//用于指向俄羅斯方塊的圖形指針
int?speed;
void?play_game(void);
extern?void?check_touch(void);
extern?touch_key?g_touch_key;
extern?touch_pix?g_touch_pix;
extern?void?ili9320_SetPoint(unsigned?short?xunsigned?short?yunsigned?short?point);
void?draw_adiamond(u16?xu16?yu16?point)
{
????int?ij;
????int?endx;
????int?endy;
????endx?=?x+BLOCK_SIZE;
????endy?=?y+BLOCK_SIZE;
????for(i=x;i ????{
????????for(j=y;j ????????????ili9320_SetPoint(ijpoint+=20);//畫點
????}
}
void?rub_adiamond(u16?xu16?yu16?point)
{
????int?ij;
????int?endx;
????int?endy;
????endx?=?x+BLOCK_SIZE;
????endy?=?y+BLOCK_SIZE;
????for(i=x;i ????{
????????for(j=y;j ????????????ili9320_SetPoint(ijpoint);?//擦除點
????}
}
void?draw_line(u8?xu16?point)??//畫線
{
int?i;
for(i=0;i {
rub_adiamond(x*BLOCK_BORDERi*BLOCK_BORDERpoint);?//擦除塊
}
}
void?draw_Ta(void)?//畫邊界
{
????int?ij;
????for(i=0;i ????{
????????for(j=0;j<17;j++)
????????{
????????????if((i>3)&(j==Y_BORDER))
????????????????draw_adiamond(i*BLOCK_BORDERj*BLOCK_BORDERRed);
????????????if(i==X_BORDER)
????????????????draw_adiamond(i*BLOCK_BORDERj*BLOCK_BORDERRed);
????????}
????}
}
void?draw_diamond(u16?xu16?yu16?pointu8?num)//畫圖形
{
????unsigned?char?*temp;
????int?ij;
????temp?=?(unsigned?char?*)diamond_pix[num];
????for(i=0;i<3;i++)
????????for(j=0;j<3;j++)
????????????if(*temp++)
????????????????draw_adiamond(x+(i)*BLOCK_BORDERy+(j)*BLOCK_BORDERpoint);
}
void?rub_diamond(u16?xu16?yu8?num)//擦除畫圖形
{
????unsigned?char?*temp;
????int?ij;
????temp?=?(unsigned?char?*)diamond_pix[num];
????for(i=0;i<3;i++)
????????for(j=0;j<3;j++)
????????????if(*temp++)
????????????????rub_adiamond(x+(i)*BLOCK_BORDERy+(j)*BLOCK_BORDERWhite);
}
void?game_init(void)//游戲初始化
{
int?ij;
for(i=0;i<31;i++)
for(j=0;j<20;j++)
picture[i][j]?=?0;
????g_game_std.x?=?X_START;
????g_game_std.y?=?4;
????for(i=0;i<17;i++)//為每一種圖形分配空間,一共17個
????{
???? d_pointer[i]?=?(diamond_std?*)malloc(sizeof(diamond_std));//為每
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????14176??2014-06-09?21:50??game.c
?????文件????????1327??2014-06-09?21:48??game.h
- 上一篇:自制51單片機共陽共陰數碼混用計算器超詳細的注釋
- 下一篇:IIR低通濾波器
評論
共有 條評論