大二的时候学了C语言后,利用easyX图形函数库写的一个简单版本的俄罗斯方块小游戏。游戏可使用方向键上下左右移动、变形,满行后自动消除,同时根据消行的数量进行延时的动态变化,计分等。 分享给大家,一起学习! 源码: #include <stdio.h> #include <stdlib.h> #include <time.h> #include "graphics.h" //图形函数库,可以网上百度下载 #include <conio.h> #include <string.h> #define BOUNDARY 10 #define BLOCKS_WIDTH 20 //小方块的长度 #define WINDOW_WIDTH BLOCKS_WIDTH*20 //横向可以放置五个块 #define WINDOW_HIGH BLOCKS_WIDTH*30 //竖向可以最多叠起来的个数 #define DATA_WIDTH 150 //数据显示的宽度 #define KEY_UP (0x6000+72) #define KEY_DOWN (0x6000+80) #define KEY_LEFT (0x6000+75) #define KEY_RIGHT (0x6000+77) #define KEY_SPACE 32 //空格用来暂停 #define KEY_ENTER 13 int CurBigBack1[4][20][2]={0}; int CurBigBack[30][20][2]={0}; int grade = 0; int level = 0; void setfont( int nHeight); ///定义当前方块结构体 struct BlocksAttr { int X; int Y; int Type; int Color; int Direct; }Blocks,Blocksprior; //复制 void copy(void) { Blocks.X = Blocksprior.X ; Blocks.Y = Blocksprior.Y ; Blocks.Type = Blocksprior.Type ; Blocks.Color = Blocksprior.Color ; Blocks.Direct = Blocksprior.Direct ; } //定义方块颜色种类 int BlocksColor[7]= { LIGHTCYAN, YELLOW, GREEN, RED, BLACK, BLUE, LIGHTGRAY }; //定义7中方块 int BlocksPoint[7][4][4][4]= { //正L 0,1,0,0, 0,1,0,0, 0,1,1,0, 0,0,0,0, 0,0,0,0, 0,0,1,0, 1,1,1,0, 0,0,0,0, 0,1,1,0, 0,0,1,0, 0,0,1,0, 0,0,0,0, 0,0,0,0, 1,1,1,0, 1,0,0,0, 0,0,0,0, //反L 0,0,1,0, 0,0,1,0, 0,1,1,0, 0,0,0,0, 0,0,0,0, 1,1,1,0, 0,0,1,0, 0,0,0,0, 0,1,1,0, 0,1,0,0, 0,1,0,0, 0,0,0,0, 0,0,0,0, 1,0,0,0, 1,1,1,0, 0,0,0,0, //田 0,0,0,0, 0,1,1,0, 0,1,1,0, 0,0,0,0, 0,0,0,0, 0