自制小黑屋系列(源代碼)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//應在增加Sleep等待代碼,在每回合結束之后,可以有效防止隨機函數(shù)應為安的太快一直出現(xiàn)一個值(因為用了時間種子)
//#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;
}
//生成隨機數(shù)的子函數(shù)
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;//隨機數(shù)所使用的代體
? ? 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--)//回合數(shù)用可循環(huán)數(shù)來代替
? ? ? ? {
? ? ? ? ? ? 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("你遇到了一只小狼,展開了戰(zhàn)斗\n");
? ? ? ? ? ? ? ? ? ? switch (q = suiji())
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case 1:?
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? printf("你盡管受了一些小傷,但最終你是勝利者\n");?
? ? ? ? ? ? ? ? ? ? ? ? food += 2; water += 1; health -= 2;
? ? ? ? ? ? ? ? ? ? ? ? printf("食物+1,水+1,健康-2\n");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? default:?
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ?printf("進行了有驚無險的戰(zhàn)斗,最終你是勝利者\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("你遇到了一只老狼,展開了戰(zhàn)斗\n");
? ? ? ? ? ? ? ? ? ? switch (q = suiji())
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? printf("看到老狼身旁遍地的鮮血,你放下了緊繃的神情,最終你是勝利者\n");
? ? ? ? ? ? ? ? ? ? ? ? food += 5; water += 2; health -= 5;
? ? ? ? ? ? ? ? ? ? ? ? printf("食物+5,水+2,健康-5\n");
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? printf("經(jīng)過激烈的戰(zhàn)斗,最終你是勝利者\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();
}