EasyX实现俄罗斯方块(加BGM版)

 
#include<stdio.h>
#include<easyx.h>
#include<conio.h>
#include<Windows.h>
#include<time.h>
#include<iostream>
#include"resource.h"
using namespace std;
#pragma comment(lib,"winmm.lib")

#define WIDTH 10
#define HEIGHT 22
#define UNIT 20//没个单位的实际像素

BYTE g_World[WIDTH][HEIGHT] = { 0 };//定义游戏区域
int grades;//得分数
TCHAR s[50];//更新分数用


enum CMD                            //方块状态枚举
{
	CMD_ROTATE,						// 方块旋转
	CMD_LEFT, 
	CMD_RIGHT, 
	CMD_DOWN,	// 方块左、右、下移动
	CMD_SINK,						// 方块沉底
	CMD_QUIT						// 退出游戏
};


/*16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。
另外如:0xff,0xFF,0X102A,等等。其中的x也不区分大小写。
(注意:0x中的0是数字0,而不是字母O)
以下是一些用法示例:
int a = 0x100F;
int b = 0x70 + a;*/

struct BLOCK
{
	WORD dir[4];
	COLORREF color;//方块颜色

}g_Blocks[7] = { { 0x0F00, 0x4444, 0x0F00, 0x4444, RED },		// I
{ 0x0660, 0x0660, 0x0660, 0x0660, BLUE },		// 口
{ 0x4460, 0x02E0, 0x0622, 0x0740, MAGENTA },	// L
{ 0x2260, 0x0E20, 0x0644, 0x0470, YELLOW },	// 反L
{ 0x0C60, 0x2640, 0x0C60, 0x2640, CYAN },		// Z
{ 0x0360, 0x4620, 0x0360, 0x4620, GREEN },	// 反Z
{ 0x4E00, 0x4C40, 0x0E40, 0x4640, BROWN } };	// T

struct BLOCKINFO
{
	byte id;	// 方块 ID
	char x, y;	// 方块在游戏区中的坐标
	byte dir : 2;	// 方向
}	g_CurBlock, g_NextBlock;//当前方块

enum DRAW
{
	SHOW,                   //显示方块
	CLEAR,                  //擦除方块
	FIX                     //固定方块
};

//获取控制命令
DWORD m_oldtime;
/*DWORD 就是 Double Word, 每个word为2个字节的长度,
DWORD 双字即为4个字节,每个字节是8位,共32位*/

void Quit();          //退出游戏
void NewGame();       //开始游戏
void GameOver();      //结束游戏
CMD GetCmd();         //获取命令
void DispatchCmd(CMD _cmd);   //分发控制命令
void CreateNewBlock(); //创建新方块
bool CheckBlockIsPut(BLOCKINFO _block);//检测当前方块是否可以被放下
void DrawUnit(int x, int y, COLORREF c, DRAW _draw); //画单元方块
void DrawBlock(BLOCKINFO _block, DRAW _draw = SHOW); //画方块
void OnRotate();                                     //旋转方块
void OnLeft();                                       //左移方块
void OnRight();                                      //右移方块
void OnDown();                                       //下移方块
void OnSink();                                       //沉底方块









void init()
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值