资源简介
基于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低通滤波器
相关资源
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 用PB编写俄罗斯方块
- PB做的俄罗斯方块
- 基于STM32芯片的SX1278 驱动 LORA.rar
评论
共有 条评论