【C语言】简单小游戏项目:《别踩白块儿》

118 篇文章 62 订阅
64 篇文章 18 订阅

突然喜欢惊鸿一瞥这个词,一见钟情太肤浅日久生情太苍白,别人眉来眼去,我只偷偷看你一眼。

嗨!这里是狐狸~

新的一周又开始了,时间过得还真快,不知道给大家分享点啥了,想发偏算法之类怕大家都听不懂,想发知识类的又怕大家感觉没意思,想来想去还是给大家分享些项目吧,但分享些什么项目自己又很纠结,这里就需要大家的智慧了,大家想看什么都可以评论来告诉我,每条评论我都会去看,我会用心去肝你们想看的项目的!!!

好了,进入正题,今天呢给大家分享一个简单的小游戏——《别踩白块儿》,不知道大家有没有玩过,曾经也是风靡一时,其实这个游戏制作起来非常的简单,接下来就让我来告诉大家怎么去简单的实现这个游戏项目。(当然啦,我做的仍是最low版本,大家可以进行再创造,相信你们比我强)。

                                                          

 

项目源码

头文件

#include<stdio.h>
#include<graphics.h>	//easyx图形库 需要安装
#include<time.h>
#include<mmsystem.h>				//头文件:多媒体设备接口
#pragma comment(lib,"winmm.lib")	//库文件

#define INTERVAL 100 //最前面的间隔

 

黑块表示函数

int score;
//如何表示黑快?
int flag[4];
void initFlag()
{
	for (int i = 0; i < 4; i++)
	{
		flag[i] = rand() % 4;	//[0-4)
		//printf("%d ", flag[i]);
	}
}

 绘制函数

void drawMap()
{
	settextstyle(25, 0, "黑体");
	settextcolor(RED);
	//输出文字游戏结束
	outtextxy(150, 30, "别踩白块儿");

	char str[30] = { 0 };
	sprintf_s(str, "score:%d", score);
	outtextxy(280, 20, str);

	//设置线条样式
	setlinestyle(PS_SOLID, 2);
	setlinecolor(RGB(59, 59, 59));
	for (int i = 0; i < 5; i++)
	{
		line(0, i * 150 + INTERVAL, 400, i * 150 + INTERVAL);
		line(i * 100, INTERVAL, i * 100, 700);
	}
	//绘制黑快
	setfillcolor(BLACK);
	for (int i = 0; i < 4; i++)
	{
		int x = flag[i] * 100;
		int y = i * 150 + INTERVAL;
		fillrectangle(x, y, x + 100, y + 150);
	}
}

鼠标控制函数 

bool mouseEvent()
{
	//获取鼠标消息
	MOUSEMSG msg = GetMouseMsg();
	if (msg.uMsg == WM_LBUTTONDOWN)	//左键按下
	{
		//获取最下面的一个黑快的坐标(左上角)
		int x = flag[3] * 100;
		int y = 3 * 150 + INTERVAL;
		//判断鼠标是否点击的最下面的黑快
		if (msg.x > x && msg.x<x + 100 && msg.y>y && msg.y < y + 150)
		{
			cleardevice();
			//整体移动,数组元素后移
			for (int i = 3; i >0; i--)
			{
				flag[i] = flag[i - 1];
			}
			//把第一个黑快重新生成
			flag[0] = rand() % 4;
			score += 10;
		}
		else
		{
			return false;
		}
	}
	return true;
}
//键盘按下玩游戏
bool keyMouse()
{
	return false;
}

游戏结束函数 

void gameOver()
{
	settextstyle(25, 0, "黑体");
	settextcolor(RED);
	//输出文字游戏结束
	outtextxy(150, 30, "Game Over!");
	MessageBox(GetHWnd(), "Game Over!", "low B", MB_OK);
}

 

主函数

int main()
{
	//播放BGM 
	mciSendString("open 野蜂飞舞.mp3 alias BGM", NULL, 0, NULL);
	mciSendString("play BGM", NULL, 0, NULL);

	//创建图形窗口 initgraph(int width, int height, int flag = NULL);	// 初始化图形环境
	initgraph(400, 700/*,EW_SHOWCONSOLE*/);	//flag 标志,是否显示控制台窗口,或者关闭按钮
	//设置背景颜色
	setbkcolor(WHITE);
	cleardevice();
	//设置随机数种子
	srand((unsigned)time(NULL));

	initFlag();
	while (1)
	{
		drawMap();
		if (!mouseEvent())
			break;
	}
	gameOver();

	getchar();
	closegraph();
	return 0;
}

总结

这个项目可以说是非常简单了,不需要任何的素材都可以运行,只需一个easyx图形库,大家可以直接复制代码去运行一下试试,应该是没问题的,对了,大家之前有问过很多关于easyx图形库的事情,因为有很多编译器是不支持这个图形库的,这里还是建议大家去用VS实现这个项目,当然了,关于这个项目的优化就要靠大家的智慧了,加音乐加界面加背景啥的都是可以的,自己可以去网上找素材,或许直接进群里领取我们准备好的素材也是可以的。

好了,大家还想看什么一定要在评论区告诉我,后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注,有什么问题可以回帖留言。想要C/C++学习资料以及其他项目的源码的可以加群【1083227756】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步!!!

  • 39
    点赞
  • 462
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值