IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】简单小游戏项目:《别踩白块儿》 -> 正文阅读

[C++知识库]【C语言】简单小游戏项目:《别踩白块儿》

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

嗨!这里是狐狸~

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

好了,进入正题,今天呢给大家分享一个简单的小游戏——《别踩白块儿》,不知道大家有没有玩过,曾经也是风靡一时,其实这个游戏制作起来非常的简单,接下来就让我来告诉大家怎么去简单的实现这个游戏项目。(当然啦,我做的仍是最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】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步!!!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:51:13  更:2021-12-07 11:51:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:36:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码