教你用Easyx库做游戏 | 别踩白块
2025-03-22 14:41:46
发布于:广东
教你用Easyx库做游戏 | 别踩白块小游戏
一、下载并配置Easyx库
二、代码
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <chrono>
#include <mmsystem.h> // 多媒体库文件
#pragma comment(lib, "winmm.lib")
// 定义分数
int score = 0, times = 0;
int arr[4];
auto start = std::chrono::steady_clock::now();
// 初始化一维数组
void initArr() {
// 随机函数种子
srand(time(0));
for (int i = 0; i < 4; i ++)
arr[i] = rand() % 4; // 随机生成一维数组的元素
}
// 绘制地图
void drawMap() {
// 设置线条的样式
setlinestyle(PS_SOLID, 2);
// 设置线的颜色
setlinecolor(BLACK);
// 画线
for (int i = 0; i < 5; i ++) {
// 画横线
line(0, 75 + i * 150, 300, 75 + i * 150);
// 画竖线
line(i * 75, 75, i * 75, 675);
}
// 画黑块:填充矩形
for (int i = 0; i < 4; i ++) {
setfillcolor(BLACK);
int x = arr[i] * 75;
int y = 75 + i * 150;
fillrectangle(x, y, x + 75, y + 150);
}
}
void Ready();
// 游戏过程:鼠标操作
void playGame() {
int flag = 0; // 游戏结束的标记
// 定义鼠标信息变量
MOUSEMSG m;
while (1) {
// 设置字体样式
settextstyle(25, 0, "宋体");
// 设置字体颜色
settextcolor(RGB(51, 201, 255));
// 文字输出
outtextxy(70, 7, "别踩白块游戏");
// 获取鼠标信息
m = GetMouseMsg();
switch (m.uMsg) { // 判断鼠标当前信息
case WM_LBUTTONDOWN:
printf("a");
int x = arr[3] * 75;
int y = 525;
// 动起来的条件
if (m.x > x && m.x < x + 75 && m.y > y && m.y < y + 150) {
cleardevice();
// 整体移动
for (int i = 3; i >= 1; i --)
arr[i] = arr[i - 1];
arr[0] = rand() % 4;
score += 10; // 分数增加
drawMap();
}
// 点击了白块:游戏结束
else {
flag = 1;
auto end = std::chrono::steady_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
// 显示分数
settextstyle(15, 0, "宋体");
settextcolor(RED);
char grade[20] = "";
sprintf(grade, "score:%d", score);
outtextxy(30, 40, grade);
char ggrade[20] = "";
sprintf(ggrade, "time cost:%d", duration.count() / 1000);
outtextxy(150, 40, ggrade);
break;
}
break;
}
if (flag) {
mciSendString("close M", 0, 0, 0);
auto x = MessageBox(NULL, "你踩白块了!游戏结束,是否重新开始?", "Game Over!", MB_YESNO);
if (x == IDYES) Ready();
break;
}
}
}
void Ready() {
cleardevice(); // 清屏
mciSendString("open 别踩白块-梁祝.mp3 alias M", 0, 0, 0);
mciSendString("play M repeat", 0, 0, 0);
initArr();
drawMap();
playGame();
}
int main() {
initgraph(300, 675); // 创建图形窗口
// 设置背景颜色
setbkcolor(WHITE);
Ready();
_getch();
closegraph();
return 0;
}
在此不过多解释,如遇到问题,请在评论区中提出,点个赞吧!
素材链接&源代码 密码:dzek
全部评论 1
顶
2025-03-22 来自 广东
0
有帮助,赞一个