我是一个普通的学生, 通过《啊哈c语言》做出了这个游戏。话不多说, 现在开始解析代码;
#include <bits/stdc++.h>
#include <conio.h> // 包含 getch() 函数
#include <unistd.h> // 包含 sleep() 函数
using namespace std;
//定义头文件(其实只用bits/stdc++这个万能头文件就够了)
int s = 0;//金币数, 需要拿走所有金币才能通关
int main() {
char a[50][50] = {
"####################",
"#o # s ###s###%#",
"# ## -$ s ### #",
"# # ##s ###s$## #",
"## # ######### ## ##",
"## ####### # ##",
"####################"
};//设置迷宫, 各位老铁们可以自己设置迷宫s是金币, $是怪兽, -是机关, o是玩家, #是墙
int i, x, y, v = 0;
char ch;
int gameRunning = 1; // 添加一个标志变量来控制游戏循环
// 初始化玩家位置
x = 1, y = 1;
int xc = 2, yc = 8;
// 打印初始迷宫
for (i = 0; i <= 6; i++) {
puts(a[i]);
}
// 游戏主循环
while (gameRunning) {
ch = getch(); // 获取用户输入
// 根据用户输入移动玩家
switch (ch) {
case 's':
case 'S':
if (a[x + 1][y] == 's') {
s ++;
}
if (a[x + 1][y] != '#') {
a[x][y] = ' ';
x++;
a[x][y] = 'o';
}
if (a[x + 1][y] == '%' && s == 5) {
gameRunning = 0; // 设置标志变量为 0,退出循环
}
if(a[x + 1][y] == '$'){
cout << "You lose";
break;
}
break;
case 'w':
case 'W':
if (a[x - 1][y] == 's') {
s ++;
}
if (a[x - 1][y] != '#') {
a[x][y] = ' ';
x--;
a[x][y] = 'o';
}
if (a[x - 1][y] == '%' && s == 5) {
gameRunning = 0; // 设置标志变量为 0,退出循环
}
if(a[x - 1][y] == '$'){
cout << " You lose";
return 0;
}
break;
case 'a':
case 'A':
if (a[x][y - 1] == 's') {
s ++;
}
if (a[x][y - 1] != '#') {
a[x][y] = ' ';
y--;
a[x][y] = 'o';
}
if (a[x][y - 1] == '%' && s == 5) {
a[x][y] = 'o';
gameRunning = 0; // 设置标志变量为 0,退出循环
}
if(a[x][y - 1] == '$')
{
printf("You lose");
return 0;
}
break;
case 'd':
case 'D':
if (a[x][y + 1] == 's') {
s ++;
}
if (a[x][y + 1] != '#') {
a[x][y] = ' ';
y++;
a[x][y] = 'o';
}
if (a[x][y + 1] == '%' && s == 5) {
a[x][y + 1] = 'o';
gameRunning = 0; // 设置标志变量为 0,退出循环
}
if(a[x][y + 1] == '$'){
cout << " You lose";
return 0;
}
break;
}
if(a[2][9] != '$')
{
v = 1;
a[xc][yc] = ' ';
}
if(v == 0)
{
if (a[xc][yc - 1] != '#') {
a[xc][yc] = ' ';
yc --;
a[xc][yc] = '-';
}
else
{
a[xc][yc] = ' ';
yc += 4;
a[xc][yc] = '-';
}
if(a[x][y] == a[xc][yc])
{
cout << "You lose";
return 0;
}
}
system("cls"); // 清屏
// 重新打印迷宫
for (i = 0; i <= 6; i++) {
puts(a[i]);
}
// 检查玩家是否到达出口
cout << "\n" << "money:" << s << endl;
}//当玩家走出循环, 那就赢了(游戏循环里有判输系统)
printf("You win!\n");
sleep(5); // 等待 5 秒后退出
return 0;
}
//s往下走,w往上走, a往右走, d往左走;
//不要蹦到怪兽与机关, 要收集所有金币