EasyX实践--九宫格翻图片游戏

该程序创建了一个640X480的九宫格游戏,玩家需在随机分布的9张图片中寻找相同的三幅图片。游戏开始时图片不可见,点击格子显示图片,成功找到3组相同图片则胜利,否则失败。音乐和音效贯穿游戏流程,包括开始音乐、胜利和失败的音效。
摘要由CSDN通过智能技术生成

        在(640X480)的区域内设置一个九宫格,有3幅图片(以自己的3张不同照片设置),每幅相同图片各有3张。9张图片在九宫格中随机摆放。初始状态看不到哪个格子是哪幅图片,当鼠标指向某个格子并左鍵单击后,该格显示其图片,如果点击5个格子中有3幅图片相同,显示游戏胜利的界面(界面创意自行设计),否则显示游戏失败界面。

注:该程序需要用到几个mp3、jpg文件!

#include <graphics.h>
#include <conio.h>
#include <mmsystem.h>
#include <time.h>
#pragma comment(lib,"Winmm.lib")
void Output_initial_interface();							//输出初始界面
void Flicker();													//点击任意位置继续
void out_rule();
void put_image(int, int, int);
int the_x(int);
int the_y(int);
boolean game();
MOUSEMSG m;													// 定义鼠标消息
IMAGE img;
int main()
{
	mciSendString("open Imagine.mp3", 0, 0, 0);				//打开音乐
	mciSendString("play Imagine.mp3 repeat", 0, 0, 0);		//播放音乐,repeat可以重复播放音乐
	initgraph(1280, 720);
	Output_initial_interface();//输出初始界面
	if (game())
	{
		mciSendString("close Imagine.mp3", 0, 0, 0);					//停止播放音乐
		mciSendString("play victory.mp3", 0, 0, 0);						//胜利音效
		IMAGE image;
		loadimage(&image, "victory.jpg", 1280, 720);						//胜利画面
		cleardevice();
		putimage(0, 0, &image);
	}
	else
	{
		mciSendString("close Imagine.mp3", 0, 0, 0);					//停止播放音乐
		mciSendString("play defeat.mp3", 0, 0, 0);						//失败音效
		IMAGE image;
		loadimage(&image, "defeat.jpg", 1280, 720);						//失败画面
		cleardevice();
		putimage(0, 0, &image);
	}
	system("pause");
	closegraph();
	return 0;
}
void Output_initial_interface()
{
	loadimage(&img, "初始界面.jpg", 1280, 720);
	cleardevice();
	putimage(0, 0, &img);
	setbkmode(TRANSPARENT);
	out_rule();
	Flicker();
}
void Flicker()
{
	settextstyle(40, 0, "楷体");
	while (true)
	{
		int x = 0;
		while (true)
		{
			if (x >= 255)
				x = 0;
			settextcolor(RGB(x - 50, x, 0));
			x += 5;
			outtextxy(830, 620, "点击任意位置继续...");
			Sleep(0.1);													//这里必须足够小,对鼠标的反应才足够灵敏
			m = GetMouseMsg();										// 获取一条鼠标消息
			if (m.uMsg == WM_LBUTTONDOWN)              // 按鼠标左键继续
				return;
		}
	}
}
boolean game()
{
	setbkcolor(RGB(60,120,160));
	cleardevice();
	line(0, 240, 1280, 240);
	line(0, 480, 1280, 480);
	line(426, 0, 426, 720);
	line(853, 0, 853, 720);
	int x1 = 0, x2 = 0, x3 = 0;
	int chance = 5;
	while (chance)
	{
		m = GetMouseMsg();										// 获取一条鼠标消息
		if (m.uMsg == WM_LBUTTONDOWN)
		{
			chance--;
			int x = m.x;
			int y = m.y;
			int n = rand() % 100;
			while (n == 0)
			{
				srand((unsigned int)time(NULL));							  //用时间作种子
				n = rand() % 100;
			}
			switch (n % 3)
			{
			case 0: 
				x1++;
				put_image(1,x,y);
				break;
			case 1: 
				x2++;
				put_image(2,x,y);
				break;
			case 2: 
				x3++;
				put_image(3,x,y);
				break;
			}
			if (x1 == 3 || x2 == 3 || x3 == 3)
			{
				Sleep(1000);
				return true;
			}
		}
	}
	Sleep(888);
	return false;
}
void out_rule()
{
	settextstyle(20, 0, "楷体");
	outtextxy(20, 20, "游戏规则:");
	outtextxy(20, 40, "九宫格,有3幅图片每幅相同图片各有3张");
	outtextxy(20, 60, "9张图片在九宫格中随机摆放");
	outtextxy(20, 80, "初始状态看不到哪个格子是哪幅图片");
	outtextxy(20, 100, "当鼠标指向某个格子并左鍵单击后,该格显示其图片");
	outtextxy(20, 120, "如果点击5个格子中有3幅图片相同,显示游戏胜利的界面,否则显示游戏失败界面。");
}
void put_image(int n, int x, int y)
{
	if (n == 1)
	{
		loadimage(&img, "image1.jpg", 426, 240,true);
		putimage(the_x(x), the_y(y), &img);
	}
	else if (n == 2)
	{
		loadimage(&img, "image2.jpg", 426, 240,true);
		putimage(the_x(x), the_y(y), &img);
	}
	else if (n == 3)
	{
		loadimage(&img, "image3.jpg", 426, 240,true);
		putimage(the_x(x), the_y(y), &img);
	}
}
int the_x(int x)
{
	if (x <= 426)
		return 0;
	else if (x > 426 && x <= 853)
		return 426;
	else if (x > 853 && x <= 1280)
		return 853;
}
int the_y(int y)
{
	if (y <= 240)
		return 0;
	else if (y > 240 && y <= 480)
		return 240;
	else if (y > 480 && y <= 720)
		return 480;
}

 

测试

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮央乜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值