序
突然喜欢惊鸿一瞥这个词,一见钟情太肤浅日久生情太苍白,别人眉来眼去,我只偷偷看你一眼。
嗨!这里是狐狸~
新的一周又开始了,时间过得还真快,不知道给大家分享点啥了,想发偏算法之类怕大家都听不懂,想发知识类的又怕大家感觉没意思,想来想去还是给大家分享些项目吧,但分享些什么项目自己又很纠结,这里就需要大家的智慧了,大家想看什么都可以评论来告诉我,每条评论我都会去看,我会用心去肝你们想看的项目的!!!
好了,进入正题,今天呢给大家分享一个简单的小游戏——《别踩白块儿》,不知道大家有没有玩过,曾经也是风靡一时,其实这个游戏制作起来非常的简单,接下来就让我来告诉大家怎么去简单的实现这个游戏项目。(当然啦,我做的仍是最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】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步!!!
|