EasyX实现俄罗斯方块游戏

1 启动页面

1.1 启动页面分析

启动页面:
在这里插入图片描述
启动页面分析:
在这里插入图片描述
启动界面的大小为:550 X 660(像素)。

1.2 启动界面代码实现

# include <stdio.h> 
# include <graphics.h> 

void welcome(void) {
   
	initgraph(550, 660);

	// 设置窗口标题
	HWND hwnd = GetHWnd();
	SetWindowText(hwnd, "俄罗斯方块");
	//Sleep(2000);

	// 游戏标题
	setfont(40, 0, "微软雅黑");
	setcolor(WHITE);
	outtextxy(205, 200, "俄罗斯方块!");

	// 游戏副标题
	setfont(22, 0, "楷体");
	outtextxy(175, 300, "编程,从俄罗斯方块开始!");
	Sleep(3000);
}


int main()
{
   
	welcome();
	
	closegraph();
	return 0;
}

2 初始化游戏环境

2.1 界面效果及分析

效果:
在这里插入图片描述
分析:
在这里插入图片描述

2.2 代码实现

int score = 0; // 总分
int rank = 0;  //等级

void initGameScene()
{
   
	char str[16];
	
	cleardevice();
	setcolor(WHITE);

	rectangle(29, 29, 334, 633);
	rectangle(27, 27, 336, 635);
	rectangle(370, 50, 515, 195);

	setfont(24, 0, "楷体");
	setcolor(LIGHTGRAY);
	outtextxy(405, 215, "下一个:");
	setcolor(RED);
	outtextxy(405, 280, "分数:");
	sprintf(str, "%d", score);
	outtextxy(415, 310, str);
	outtextxy(405, 375, "等级:");
	sprintf(str, "%d", rank);
	outtextxy(425, 405, str);
	setfont(22, 0, "楷体");

	setcolor(LIGHTBLUE);
	outtextxy(390, 475, "操作说明:");
	outtextxy(390, 500, "↑: 旋转");
	outtextxy(390, 525, "↓: 下降");
	outtextxy(390, 550, "←: 左移");
	outtextxy(390, 575, "→: 右移");
	outtextxy(390, 600, "空格: 暂停");
}


int main()
{
   
	welcome();
	initGameScene();

	system("pause");
	closegraph();
	return 0;
}

3 新方块

3.1 显示效果

在这里插入图片描述

3.2 分析

以L型方块为例:
在这里插入图片描述
每个方块有4种形态:4个方向,所以使用4个二维数组来表示1种方块。

	{
    0,0,0,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,1,1,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,0,0,0,
	0,1,1,1,0,
	0,1,0,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,1,1,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,0,1,0,
	0,1,1,1,0,
	0,0,0,0,0,
	0,0,0,0,0 }

3.3 代码实现

#define  BLOCK_COUNT	    5
#define  BLOCK_WIDTH		5
#define  BLOCK_HEIGHT  	    5
#define  UNIT_SIZE		    20  //小砖块的宽度和高度

int color[BLOCK_COUNT] = {
   
	GREEN,CYAN,MAGENTA,BROWN,YELLOW
};

int NextIndex = -1;


int block[BLOCK_COUNT * 4][BLOCK_HEIGHT][BLOCK_WIDTH] = {
   
	// | 形方块
	{
    0,0,0,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,0,0,0,
	0,1,1,1,0,
	0,0,0,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,0,0,0,
	0,1,1,1,0,
	0,0,0,0,0,
	0,0,0,0,0 },

	// L 形方块
	{
    0,0,0,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,1,1,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,0,0,0,
	0,1,1,1,0,
	0,1,0,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,1,1,0,0,
	0,0,1,0,0,
	0,0,1,0,0,
	0,0,0,0,0 },

	{
    0,0,0,0,0,
	0,0,0,1,0,
	0,1,1,1,0,
	0,0,0,0,0,
	0,0,0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值