小游戏《别踩白块》-第十一个程序20200625

	闲话不多说,直接写代码。
#include<stdio.h>
#include<stdlib.h>
#include<easyx.h>
#include<time.h>
#pragma	comment(lib,"winmm.lib")

//定义一个地图数组
int map[4];
int grade = 0;//记录分数

//初始化黑方块在图形界面的坐标
void init()
{
	for (int i = 0; i < 4; i++)
	{
		map[i] = rand() % 4;//给map数组元素随机赋值
	}
}

//绘制地图  绘制白色方块
void draw()
{
	BeginBatchDraw();//开始批量绘图
	cleardevice();//清屏
	setlinecolor(RED);//设置线条颜色
	setfillcolor(WHITE);//设置填充颜色
	//绘制4*4的白色方格
	for (int i = 0; i < 4; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			fillrectangle(j * 150, i * 150, (j + 1) * 150, (i + 1) * 150);
		}
	}
	setfillcolor(BLACK);
	for (int i = 0; i < 4; i++)//绘制黑方块
	{
		fillrectangle(map[i] * 150, i * 150, (map[i] + 1) * 150, (i + 1) * 150);
	}
	EndBatchDraw();//结束批量绘图
}

//
bool play()
{
	MOUSEMSG msg=GetMouseMsg();
	int i = msg.y / 150;//行坐标赋值
	int j = msg.x / 150;//列坐标赋值
	switch (msg.uMsg)
	{
	case WM_LBUTTONDOWN:
		if (i == 3 && j == map[3])//如果鼠标点击的是最下面一行的黑方块,就用上一行的内容覆盖下一行
		{
			for (int m = 3; m > 0; m--)
			{
				map[m] = map[m - 1];//将上一行的黑方块移动到下一行
			}
			map[0] = rand() % 4;//重新生成第一行的值
			grade += 10;//分数
		}
		else return false;//如果不是点的最后一行的黑方块,则游戏失败
		break;
	}
	return true;
}

//
int main()
{
	srand((unsigned)time(NULL));//随机种子
	initgraph(600, 600);//初始化一个600*600的图形界面
	init();//初始化
	draw();//绘制
	mciSendString("open C:\\Users\\Caffrey\\Desktop\\40期预科班课件\\推箱子\\attheage.mp3", 0, 0, 0);//打开音乐文件
	mciSendString("play C:\\Users\\Caffrey\\Desktop\\40期预科班课件\\推箱子\\attheage.mp3 repeat", 0, 0, 0);//播放音乐
	while (1)
	{
		if (play() == false)
		{
			TCHAR tr[50];
			wsprintf(tr, "得分:%d", grade);//将双引号的内容写入tr数组
			if (MessageBox(GetHWnd(), tr, "游戏失败!是否重新开始?", MB_YESNO) == IDYES)//游戏失败后,先弹窗,然后判断玩家的选项,如果选择是,则游戏重新开始
			{
				init();
				grade = 0;
			}
			else exit(0);//如果选择否,则退出程序
		}
		draw();
	}
	system("pause");//系统暂停
	closegraph();//关闭图形界面
	return 0;
}

程序运行结果如下图
刚开始图片
1
点击最下方的黑方块后,结果如下图
2
再次点击最下方的黑方块后,结果如下图
3
点击除了最下方黑方块之外的方块后,结果如下图
4

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值