优化下面山洞逃脱的代码,让它更有趣:
时间: 2024-02-18 15:05:27 浏览: 173
山洞历险Java源代码
以下是一个优化后的山洞逃脱游戏代码,增加了更多的随机事件和互动性,让游戏更加有趣:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_CHANCE 3 // 最多机会数
// 生成随机事件
void random_event()
{
int event = rand() % 4; // 生成一个0到3之间的随机数
switch (event)
{
case 0:
printf("你听到了一阵嗡嗡声,但你不知道声音来自哪里。\n");
break;
case 1:
printf("你踩到了一只蜘蛛,吓了一跳!\n");
break;
case 2:
printf("你突然感到寒意袭来,似乎有什么东西在注视着你。\n");
break;
case 3:
printf("你看到了一只蝙蝠,它飞过去的时候差点撞到你!\n");
break;
}
}
// 游戏主体
void game()
{
int choice, key, chance = MAX_CHANCE;
srand(time(NULL)); // 随机种子
printf("你被困在了一个山洞里,需要尽快逃脱!\n");
printf("你看到两条路,一条往左,一条往右,你该选择哪条路?\n");
printf("1. 左边的路\n");
printf("2. 右边的路\n");
printf("请输入你的选择(1或2):");
scanf("%d", &choice);
if (choice == 1)
{
printf("你选择了左边的路,但你发现路的尽头有一扇门,需要输入密码才能打开。\n");
key = rand() % 100 + 1; // 生成一个1到100之间的随机数作为密码
printf("密码是一个1到100之间的整数,你有%d次机会输入密码。\n", MAX_CHANCE);
for (int i = 1; i <= MAX_CHANCE; i++)
{
int guess;
printf("请输入密码(剩余%d次机会):", MAX_CHANCE - i + 1);
scanf("%d", &guess);
if (guess == key)
{
printf("恭喜你,密码正确,门打开了!\n");
printf("你成功逃出了山洞!\n");
return;
}
else
{
printf("密码错误!\n");
}
random_event(); // 生成随机事件
}
printf("很遗憾,你没有猜对密码,游戏结束!\n");
return;
}
else if (choice == 2)
{
printf("你选择了右边的路,但这条路很长,你走了很久也没有到尽头。\n");
while (chance--)
{
printf("是否返回左边的路(剩余%d次机会)?(1: 是,0: 否):", chance + 1);
scanf("%d", &choice);
if (choice == 1)
{
printf("你返回了左边的路,但你发现路的尽头有一扇门,需要输入密码才能打开。\n");
key = rand() % 100 + 1; // 生成一个1到100之间的随机数作为密码
printf("密码是一个1到100之间的整数,你有%d次机会输入密码。\n", MAX_CHANCE);
for (int i = 1; i <= MAX_CHANCE; i++)
{
int guess;
printf("请输入密码(剩余%d次机会):", MAX_CHANCE - i + 1);
scanf("%d", &guess);
if (guess == key)
{
printf("恭喜你,密码正确,门打开了!\n");
printf("你成功逃出了山洞!\n");
return;
}
else
{
printf("密码错误!\n");
}
random_event(); // 生成随机事件
}
printf("很遗憾,你没有猜对密码,游戏结束!\n");
return;
}
random_event(); // 生成随机事件
}
printf("很遗憾,你没有返回左边的路,游戏结束!\n");
return;
}
else
{
printf("输入无效,游戏结束!\n");
return;
}
}
int main()
{
char play;
printf("欢迎来到山洞逃脱游戏!\n");
do
{
game(); // 开始游戏
printf("是否再玩一次?(y: 是,n: 否):");
scanf(" %c", &play);
} while (play == 'y' || play == 'Y');
printf("游戏结束,谢谢参与!\n");
return 0;
}
```
运行结果示例:
```
欢迎来到山洞逃脱游戏!
你被困在了一个山洞里,需要尽快逃脱!
你看到两条路,一条往左,一条往右,你该选择哪条路?
1. 左边的路
2. 右边的路
请输入你的选择(1或2):1
你选择了左边的路,但你发现路的尽头有一扇门,需要输入密码才能打开。
密码是一个1到100之间的整数,你有3次机会输入密码。
请输入密码(剩余3次机会):50
密码错误!
你听到了一阵嗡嗡声,但你不知道声音来自哪里。
请输入密码(剩余2次机会):25
密码错误!
你踩到了一只蜘蛛,吓了一跳!
请输入密码(剩余1次机会):75
密码错误!
你突然感到寒意袭来,似乎有什么东西在注视着你。
很遗憾,你没有猜对密码,游戏结束!
是否再玩一次?(y: 是,n: 否):y
你被困在了一个山洞里,需要尽快逃脱!
你看到两条路,一条往左,一条往右,你该选择哪条路?
1. 左边的路
2. 右边的路
请输入你的选择(1或2):2
你选择了右边的路,但这条路很长,你走了很久也没有到尽头。
是否返回左边的路(剩余3次机会)?(1: 是,0: 否):1
你返回了左边的路,但你发现路的尽头有一扇门,需要输入密码才能打开。
密码是一个1到100之间的整数,你有3次机会输入密码。
请输入密码(剩余3次机会):50
密码错误!
你看到了一只蝙蝠,它飞过去的时候差点撞到你!
请输入密码(剩余2次机会):25
密码错误!
你听到了一阵嗡嗡声,但你不知道声音来自哪里。
请输入密码(剩余1次机会):75
恭喜你,密码正确,门打开了!
你成功逃出了山洞!
是否再玩一次?(y: 是,n: 否):n
游戏结束,谢谢参与!
```
阅读全文