学习C/C++的第十八天 构建俄罗斯方块小游戏框架

到过年了 走亲访友又花去两天,进度又落下了
今天学习了俄罗斯方块小游戏

/*这是头文件*/
#define BLOCK_COUNT  5                                            //数量
#define BLOCK_WIDTH  5                                            //宽度
#define BLOCK_HEIGHT 5                                            //高度
#define BLOCK_SIZE   20                                           //方块的像素大小
#define START_X       130                                         //掉落方块位置的X轴
#define START_Y       30                                          //掉落方块位置的Y轴

#define KEY_UP        72                                          //按键的 ↑ → ← 的对应ALLS值 
#define KEY_RIGHT     77
#define KEY_DOWN      78
#define KEY_LEFT      75


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,0,0
	},
	// 田 形方块
	{
		0,0,0,0,0,
		0,1,1,0,0,
		0,1,1,0,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,1,1,0,0,
		0,1,1,0,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,1,1,0,0,
		0,1,1,0,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,1,1,0,0,
		0,1,1,0,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	// T 形方块
	{
		0,0,0,0,0,
		0,1,1,1,0,
		0,0,1,0,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,0,0,1,0,
		0,0,1,1,0,
		0,0,0,1,0,
		0,0,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,0
	},
	{
		0,0,0,0,0,
		0,1,0,0,0,
		0,1,1,0,0,
		0,1,0,0,0,
		0,0,0,0,0
	},
	// Z 形方块
	{
		0,0,0,0,0,
		0,1,1,0,0,
		0,0,1,1,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,0,1,0,0,
		0,1,1,0,0,
		0,1,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,1,1,0,0,
		0,0,1,1,0,
		0,0,0,0,0,
		0,0,0,0,0
	},
	{
		0,0,0,0,0,
		0,0,1,0,0,
		0,1,1,0,0,
		0,1,0,0,0,
		0,0,0,0,0
	}
};
#include <stdio.h>
#include <graphics.h>
#include <time.h>
#include <conio.h>                                                //kbhit()使用

#include "TetrisGame.h"

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

//欢迎界面
void welcome(void)
{
	initgraph(550, 660);                                          //初始化画布
																  //设置窗口标题
	HWND window = GetHWnd();                                      //获取窗口
	SetWindowText(window, _T("俄罗斯方块  开发员:王黎明"));      //设置窗口最上方标题
																  //设置文本的字体样式
	settextstyle(40, 0, _T("微软雅黑"));                          //设置字体的形式
	setcolor(WHITE);                                              //设置颜色
	outtextxy(205, 200, _T("俄罗斯方块"));                        //输出文本的位置 

	settextstyle(22, 0, _T("楷体"));
	outtextxy(175, 300, _T("编程的开始,重俄罗斯方块开始!"));

	Sleep(3000);                                                   //睡眠 (暂停) 3000毫秒 3秒钟
}
//初始化游戏场景
void initGameScene(void)
{
	char str[16];                                                   //存放分数,等级字符的数组

	cleardevice();                                                  //清除屏幕

	rectangle(27, 27, 336, 635);                                    //外面一层方框
	rectangle(29, 29, 334, 633);                                    //里面一层方框
	rectangle(370, 50, 515, 195);                                   //右上角方框
																	//设置右下角的字体
	settextstyle(24, 0, _T("楷体"));                                //设置字体的形式
	setcolor(LIGHTGRAY);                                            //设置颜色:浅灰色
	outtextxy(405, 215, _T("下一个"));                              //输出文本的位置
																	//设置分数
	setcolor(RED);                                                  //设置颜色:红色
	outtextxy(405, 280, _T("分数"));                                //输出文本的位置

	sprintf_s(str, "%d", score);                                    //输入分数
	outtextxy(415, 310, str);                                       //显示分数的位置
																	//设置等级
	setcolor(RED);                                                  //设置颜色:红色
	outtextxy(405, 375, _T("等级"));                                //输出文本的位置

	sprintf_s(str, "%d", rank);                                     //输入等级
	outtextxy(425, 405, str);                                       //显示分数的位置
																	//操作说明
	setcolor(LIGHTBLUE);                                            //设置颜色:浅蓝色
	outtextxy(390, 475, _T("操作说明:"));                          //输出文本的位置
	outtextxy(390, 500, _T(" ↑ :旋转"));
	outtextxy(390, 525, _T(" ↓ :下降"));
	outtextxy(390, 550, _T(" ← :左移"));
	outtextxy(390, 575, _T(" → :右移"));
	outtextxy(390, 600, _T("空格:暂停"));

}
int main()
{
	welcome();
	initGameScene();
	system("pause");
	closegraph();                                                    //关闭画布
	return 0;
}

完成了游戏搭建的框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值