自制小黑屋系列(源代码)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//应在增加Sleep等待代码,在每回合结束之后,可以有效防止随机函数应为安的太快一直出现一个值(因为用了时间种子)
//#define shiyan 2; 宏定义不能进行自增自建
//shiyan++;
int cai;//田地里是否存在蔬菜的判定
int cai1 = 0;//蔬菜属性升级变量
int tili = 3;
int sj;//cai di sheng ji
int suiji()
{
int a, b;
srand((unsigned)time(NULL));
a = rand();
a = rand();
a = rand();
a = rand();
a = rand() % 3 + 1;
/* printf("%d\n", a);*/
return a;
}
//生成随机数的子函数
int suijicai()
{
int a, b;
srand((unsigned)time(NULL));
/*for (int c = 0; c <= 19; c++)
{*/
a = rand();
a = rand();
a = rand();
a = rand();
a = rand() % 5 + 1;
/* printf("%d\n", a);*/
return a;
/* }*/
}
int main()
{
int x;//决策方案
int q, q1, q2;//随机数所使用的代体
int food=10, water=10, wood=0,health=25;
printf("你被人扔进荒岛,他告诉你会在两年后的某一天来看你,你开始了你的求生之路 ");
printf("\n");
printf("\n");
//printf(" 食物:%d\n", food);
//printf(" 水 :%d\n", water);
//printf(" 木材:%d\n", wood);
//printf(" 健康:%d\n", health);
for (int t1 = 1; t1 <= 25; t1++)
{
printf(" |第%d个月|\n",t1);
printf("\n");
printf("\n");
cai1 = suijicai();//菜地每个月有五分之一的几率损坏
if (cai1 == 1)
{
printf("*你的菜地损坏了,请及时修缮*\n");
printf("\n");
}
if (t1 == 10)
{
printf("你有一次升级体力的机会,是否花费15木头进行升级(仅此一次)\n");
printf("1:同意 2:拒绝\n");
scanf_s("请输入:%d", &sj);
if (sj == 1)
{
tili = 4;
printf("升级完成\n");
}
else printf("已拒绝\n");
}
else;
for (int t =tili; t >= 1; t--)//回合数用可循环数来代替
{
printf(" 1:狩猎 2:种田 3:打水 4:伐木\n");
printf("\n");
printf("\n");
printf(" 食物:%d\n", food);
printf(" 水 :%d\n", water);
printf(" 木材:%d\n", wood);
printf(" 健康:%d\n", health);
printf("\n");
printf("\n");
printf("当前总体力:%d\n",tili);
scanf_s("%d", &x);
switch (x)
{
case 1:
{
printf("你进行了狩猎\n");
switch (q = suiji())
{
case 1:
{
printf("你遇到了一只小狼,展开了战斗\n");
switch (q = suiji())
{
case 1:
{
printf("你尽管受了一些小伤,但最终你是胜利者\n");
food += 2; water += 1; health -= 2;
printf("食物+1,水+1,健康-2\n");
break;
}
default:
{
printf("进行了有惊无险的战斗,最终你是胜利者\n");
food += 2; water += 1; health -= 1;
printf("食物+1,水+1,健康-1\n");
}
}
break;
}
case 2:
{
printf("你遇到了一只小坤,你的嘴角留下了不争气的泪水\n");
food += 3; water += 2;
printf("食物+2,水+2\n");
break;
}
case 3:
{
printf("你遇到了一只老狼,展开了战斗\n");
switch (q = suiji())
{
case 1:
{
printf("看到老狼身旁遍地的鲜血,你放下了紧绷的神情,最终你是胜利者\n");
food += 5; water += 2; health -= 5;
printf("食物+5,水+2,健康-5\n");
break;
}
default:
{
printf("经过激烈的战斗,最终你是胜利者\n");
food += 5; water += 2; health -= 2;
printf("食物+5,水+2,健康-2\n");
}
}
}
}
/*printf("\n");
printf("\n");
printf(" 食物:%d\n", food);
printf(" 水 :%d\n", water);
printf(" 木材:%d\n", wood);
printf(" 健康:%d\n", health);*/
break;
}
//狩猎嵌套switch
case 2:
{
if (cai1 == 1)
{
printf("菜地损坏了,按5修复田地\n");
}
else
{
if (t1 <= 20)
{
if (cai == 0)
{
cai = 1;
printf("你种下了生菜,这种蔬菜会在下次行动成熟\n");
}
else if (cai == 1)
{
printf("你收获了生菜,并把它们藏到了肚子里\n");
food += 1; water += 2; health += 2;
cai = 0;
printf("食物+2,水+2,健康+2\n");
}
}
else printf("来了一场暴风雨摧毁了你的菜地并带走了你的种子,你无法种田了\n");
}
break;
}
case 3:
{
printf("你喝了一大口水\n");
water += 4;
printf("水+4\n");
break;
}
case 4:
{
printf("你进行了伐木\n");
wood += 5;
break;
}
case 5:
{
printf("修缮了菜地\n");
cai1 = 0;
break;
}
}
if (food <= 0 || water <= 0 || health <= 0)
{
printf("\n");
printf("\n");
printf("你闭上了劳累的双眼,终于不用再担惊受怕了\n");
goto A;
}
}
food -= 3; water -= 4; health += 1;//每月的自然消耗
}
printf("\n");
printf("\n");
printf("你终于等来了救援,不用再担惊受怕了。。。\n");
printf("游戏胜利\n");
A: printf("\n");
printf("\n");
printf("game over\n");
_getch();
}