赞
踩
人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。
(1) 游戏开始的时候,设定初始属性:颜值,体质,智力,家境
(2)开始游戏,随机生成性别和出生点
(3)针对每一年生成一些人生的经历(依靠一定的随机因素+当前角色的属性)
- void menu()
- {
- printf("---------------------------------------------------\n");
- printf("| |\n");
- printf("| 欢迎来到人生重开模拟器 |\n");
- printf("| 1.play |\n");
- printf("| 2.exit |\n");
- printf("| |\n");
- printf("---------------------------------------------------\n");
-
- }
- void game()
- {
-
- }
- int main()
- {
- int input = 0;
- do
- {
- menu();
- printf("请选择>:");
- scanf("%d", &input);
- switch (input)
- {
- case 1:
- game();
- break;
- case 0:
- printf("退出游戏\n");
- break;
- default:
- printf("选择错误,请重新选择\n");
- }
- } while (input);
- return 0;
- }
(1)颜值,体制,智力,家境,总和不能超过20,每一项取值都是1-10之间
- printf("请设置初始属性(可用点数总数为 20)>:\n");
- printf("请输入颜值(1-10):");
- scanf("%d", &face);
- printf("请输入体质(1-10):");
- scanf("%d", &strong);
- printf("请输入智力(1-10):");
- scanf("%d", &iq);
- printf("请输入家境(1-10):");
- scanf("%d", &home);
(2)对用户输入的内容进行校验
可以写一个while循环,如果玩家输入正确结束循环,反之循环继续。这里我们可以取标记值count=1,如果玩家输入无误只需count-1=0就可以跳出循环了,反之count+1继续循环。
- int face = 0, strong = 0, iq = 0, home = 0;
- int count = 1;
- while (count)
- {
- printf("请设置初始属性(可用点数总数为 20)>:\n");
- printf("请输入颜值(1-10):");
- scanf("%d", &face);
- printf("请输入体质(1-10):");
- scanf("%d", &strong);
- printf("请输入智力(1-10):");
- scanf("%d", &iq);
- printf("请输入家境(1-10):");
- scanf("%d", &home);
- if (face > 10 || face < 1 || strong>10 || strong < 1 || iq>10 || iq < 1 || home>10 || home < 1)
- {
- printf("属性点输入有误,请重新输入\a\n");
- count++;
- }
- else if (face + strong + iq + home > 20)
- {
- printf("属性总和大于20,请重新输入\a\n");
- count++;
- }
- count--;
- }
- printf("初始属性输入完毕!\n");
- printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);
利用rand函数srand函数time函数生成一个随机数,就可以间接的随机生成一个性别了。
- #include<stdio.h>
- #include<time.h>
- #include<stdlib.h>
- srand((unsigned int)time(NULL));
- int sex = rand() % 2;
- if (sex == 1)
- {
- printf("你是个男孩.\n");
- }
- else
- {
- printf("你是个女孩.\n");
- }
家境 10 第一档,带来一些属性的加成
家境 7-9 第二档,也会带来属性的加成
家境 4-6 第三档,少数属性加成
家境 1-3 第四档,会扣属性
每一个档又通过随机数分为三种情况。
- int point = rand() % 3;
- //第一档
- if (home == 10)
- {
- printf("你出生在帝都,你的父母是高管政要.\n");
- home += 1;
- iq += 1;
- face += 1;
- }
- //第二档
- else if (home <= 9 && home >= 7)
- {
- if (point == 1)
- {
- printf("你出生在大城市,你的父母是公务员.\n");
- face += 2;
- }
- else if (point == 2)
- {
- printf("你出生在大城市,你的父母是企业高管.\n");
- home += 2;
- }
- else
- {
- printf("你出生在大城市,你的父母是大学教授.\n");
- iq += 2;
- }
- }
- //第三档
- else if (home <= 6 && home >= 4)
- {
- if (point == 1)
- {
- printf("你出生在三线城市,你的父母是医生.\n");
- strong += 1;
- }
- else if (point == 2)
- {
- printf("你出生在镇上,你的父母是老师.\n");
- iq += 1;
- }
- else
- {
- printf("你出生在镇上,你的父母是个体户.\n");
- home += 1;
- }
- }
- //第四档
- else
- {
- if (point == 1)
- {
- printf("你出生在农村,你的父母是辛苦劳作的农民.\n");
- strong += 1;
- face -= 2;
- }
- else if (point)
- {
- printf("你出生在穷乡僻壤,你的父母是无业游民.\n");
- home -= 1;
- }
- else
- {
- printf("你出生在镇上,你的父母感情不和.\n");
- strong -= 1;
- }
- }
- printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);
先使用for循环,按照年龄,从1循环到10
针对每一年,都生成一个随机数(1-3)
根据角色,心别,年龄,各种属性,触发各种事件,随机数会对事件的结果造成影响
这里的事件可能会对属性带来变更
每一年执行结束,都打印这一年发生的事件(让每年只发生一个事件)
也可能会遇到夭折的情况
1.利用结构题数组给数组赋值字符串:
其中利用了strcpy函数,需要使用#include<string.h>对它进行调用。
2.让一些事件重复执行
这里利用了switch语句,和while循环,以及rand函数srand函数time函数生成随机数。
因为这里只是打印1-10岁的事件,所以我在这里给count赋值了一个10然后count--,这样就可以循环打印1-10岁了,再然后我在这里利用了随机数,使其随机在我写好的事件中选一个事件打印。
3.打印的时候可以打印得慢一点
我在这里使用了Sleep函数,需要使用#include<windows.h>对它进行调用。
4.为了丰富故事内容,我在里面加入了类似于的新闻的事件,且这种事件与受人物属性影响的事件的不同点是:1.这个事件不受人物属性的影响,也不能影响人物属性,它的产生是随机的。2.这个事件只能执行(打印)一次,而受人物属性影响的事件可以执行多次。
这里的难点是如何让这种新闻性的事件不重复执行。我在这里用到了goto语句,先赋值一个元素为0,执行一次之后使其加1,然后通过if语句判断,如果赋值的那个元素已经不等于零,则执行goto语句,使其重新生成一个随机数,和重新执行switch语句。
- struct Event
- {
- char eve[80];
- };
- void even(int face,int strong,int iq,int home,int sex,int point)
- {
- int t = 0, o = 0, w = 0, r = 0, f = 0, v = 0, s = 0, e = 0, n = 0, g = 0;
- int count = 10;
- int age = 1;
- while (count)
- {
-
- int a = rand((unsigned int)time(NULL)) % 10;
- struct Event arr[10];
- again:
- switch (a + 1)
- {
- case 1:
- if (sex == 0 && home <= 3 && point == 1)
- {
- strcpy(arr[0].eve, "你的家里人重男轻女观念非常严重,你被遗弃了!\n游戏结束!");
- printf("%s\n", arr[0].eve);
- count = 1;
- }
- else
- {
- if (o == 0)
-
- {
- strcpy(arr[0].eve, "全球范围实现碳中和。");
- o++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- }
- break;
- case 2:
- if (strong < 6 && point < 3)
- {
- if (home >= 5)
- {
- strcpy(arr[1].eve, "你生了一场病,在你的父母悉心照顾下,你康复了");
- strong += 1;
- home -= 1;
- }
- else
- {
- strcpy(arr[1].eve, "你生了一场病,你的父母没精力管你,你的身体状况更糟糕了");
- strong -= 1;
- }
- }
- else
- {
- if (w == 0)
-
- {
- strcpy(arr[1].eve, "火星建立永久性人类居住基地。");
- w++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
-
- }
- break;
- case 3:
- if (face <= 4&& age >= 7)
- {
- if (iq > 5)
- {
- strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你决定用学习填充自己");
- }
- else
- {
- if (sex == 1)
- {
- strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你和别的小朋友经常打架!");
- strong += 1;
- iq -= 1;
- }
- else
- {
- strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你进常被被别的小朋友欺负");
- strong -= 1;
- }
- }
- }
- else
- {
- if (r == 0)
-
- {
- strcpy(arr[2].eve, "全球范围内的无人驾驶汽车技术普及。");
- r++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
-
- }
- break;
- case 4:
- if (iq < 5)
- {
- if (home >= 8 && age >= 6)
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母把你送到更好的学校学习。");
- iq += 1;
- }
- else if (home >= 4 && home <= 7)
- {
- if (sex == 1)
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多运动,争取成为运动员。");
- strong += 1;
- }
- else
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多打扮自己。");
- face += 1;
- }
- }
- else
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母为此经常吵架。");
- if (point == 1)
- strong -= 1;
- else if (point == 2)
- iq -= 1;
- }
- }
- else
- {
- if (f == 0)
-
- {
- strcpy(arr[3].eve, "人工智能与人类共同创造新文化。");
- f++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- }
- break;
- case 5:
- {
- if (point == 1)
- {
- strcpy(arr[4].eve, "你健康成长,你看起来更结实了。");
- strong += 1;
- }
- else if (point == 2)
- {
- strcpy(arr[4].eve, "你健康成长,你看起来更好看了。");
- face += 1;
- }
- else
- {
- if (v == 0)
-
- {
- strcpy(arr[4].eve, "人类开始探索宇宙深处,与外星文明建立联系。");
- v++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- }
- }
- break;
- case 6:
- if (s == 0)
- {
- strcpy(arr[5].eve, "人类成功实现核聚变能源的商业化应用,彻底解决能源危机问题。");
- s++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 7:
- if (e == 0)
- {
- strcpy(arr[6].eve, "虚拟实现技术发展到一个全新的高度,人们可以随时地沉浸到虚拟世界中。");
- e++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 8:
- if (n == 0)
- {
- strcpy(arr[7].eve, "全球范围内的高速交通网络初步建成,人们可以在几小时内穿越地球。");
- n++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 9:
- if (g == 0)
-
- {
- strcpy(arr[8].eve, "高考取消英语这门科目。");
- g++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 10:
- if (t == 0)
- {
- strcpy(arr[9].eve, "全球实现无国界教育,世界各地的学生都能接受优质的教育。");
- t++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- }
- if (strong <= 0)
- {
- printf("你今年 %d 岁\n", age);
- if (point == 1)
- {
- printf("你染上了新冠病毒,没能抗住病毒的侵袭,你死了!\n");
- printf("游戏结束!\n");
- break;
- }
- else if (point == 2)
- {
- printf("你得了白血病,不幸去世!\n");
- printf("游戏结束!\n");
- break;
- }
- else
- {
- printf("你吃东西的时候不小心被呛死了!\n");
- printf("游戏结束!\n");
- break;
- }
- }
- else if (iq <= 0)
- {
- printf("你今年 %d 岁\n", age);
- if (point == 1)
- {
- printf("你发高烧的时候,由于治疗不及时变成了一个智障!\n");
- printf("游戏结束!\n");
- break;
- }
- else if (point == 2)
- {
- printf("你不小心喝了日本核污水变成了一个智障!\n");
- printf("游戏结束!\n");
- break;
- }
- else
- {
- printf("由于酒精中毒,你变成了一个智障\n");
- printf("游戏结束!\n");
- break;
- }
- }
- printf("---------------------------------------------------------------\n");
- printf("你今年 %d 岁了\n", age);
- printf("%s\n", arr[a].eve);
- printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);
- printf("---------------------------------------------------------------\n");
- Sleep(1000);
- age++;
- count--;
-
- }
- }
如果你感兴趣的话,你可以充分发挥你的想象力,将其他年龄段的事件完善完善,例如在某个年龄段觉醒了修仙天赋,从此脱离凡尘,步入仙境;再比如在某个年龄段接触了电子竞技,对游戏的天赋极高,成为了一个职业玩家。
- #define _CRT_SECURE_NO_WARNINGS 1
-
- #include<stdio.h>
- #include<time.h>
- #include<stdlib.h>
- #include<windows.h>
- #include<string.h>
- void menu()
- {
- printf("---------------------------------------------------\n");
- printf("| |\n");
- printf("| 欢迎来到人生重开模拟器 |\n");
- printf("| 1.play |\n");
- printf("| 2.exit |\n");
- printf("| |\n");
- printf("---------------------------------------------------\n");
-
- }
- struct Event
- {
- char eve[80];
- };
- void even(int face, int strong, int iq, int home, int sex, int point);
- void game()
- {
- srand((unsigned int)time(NULL));
- //输入初始属性
- int face = 0, strong = 0, iq = 0, home = 0;
- int count = 1;
- while (count)
- {
- printf("请设置初始属性(可用点数总数为 20)>:\n");
- printf("请输入颜值(1-10):");
- scanf("%d", &face);
- printf("请输入体质(1-10):");
- scanf("%d", &strong);
- printf("请输入智力(1-10):");
- scanf("%d", &iq);
- printf("请输入家境(1-10):");
- scanf("%d", &home);
- if (face > 10 || face < 1 || strong>10 || strong < 1 || iq>10 || iq < 1 || home>10 || home < 1)
- {
- printf("属性点输入有误,请重新输入\a\n");
- count++;
- }
- else if (face + strong + iq + home > 20)
- {
- printf("属性总和大于20,请重新输入\a\n");
- count++;
- }
- count--;
- }
- printf("初始属性输入完毕!\n");
- printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);
- //生成角色的性别
- int sex = rand() % 2;
- if (sex == 1)
- {
- printf("你是个男孩.\n");
- }
- else
- {
- printf("你是个女孩.\n");
- }
- //设定角色的出生点
- int point = rand() % 3;
- //第一档
- if (home == 10)
- {
- printf("你出生在帝都,你的父母是高管政要.\n");
- home += 1;
- iq += 1;
- face += 1;
- }
- //第二档
- else if (home <= 9 && home >= 7)
- {
- if (point == 1)
- {
- printf("你出生在大城市,你的父母是公务员.\n");
- face += 2;
- }
- else if (point == 2)
- {
- printf("你出生在大城市,你的父母是企业高管.\n");
- home += 2;
- }
- else
- {
- printf("你出生在大城市,你的父母是大学教授.\n");
- iq += 2;
- }
- }
- //第三档
- else if (home <= 6 && home >= 4)
- {
- if (point == 1)
- {
- printf("你出生在三线城市,你的父母是医生.\n");
- strong += 1;
- }
- else if (point == 2)
- {
- printf("你出生在镇上,你的父母是老师.\n");
- iq += 1;
- }
- else
- {
- printf("你出生在镇上,你的父母是个体户.\n");
- home += 1;
- }
- }
- //第四档
- else
- {
- if (point == 1)
- {
- printf("你出生在农村,你的父母是辛苦劳作的农民.\n");
- strong += 1;
- face -= 2;
- }
- else if (point)
- {
- printf("你出生在穷乡僻壤,你的父母是无业游民.\n");
- home -= 1;
- }
- else
- {
- printf("你出生在镇上,你的父母感情不和.\n");
- strong -= 1;
- }
- }
- printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);
- even(face, strong, iq, home, sex, point);
- }
- int main()
- {
- int input = 0;
- do
- {
- menu();
- printf("请选择>:");
- scanf("%d", &input);
- switch (input)
- {
- case 1:
- game();
- break;
- case 0:
- printf("退出游戏\n");
- break;
- default:
- printf("选择错误,请重新选择\n");
- }
- } while (input);
- return 0;
- }
- void even(int face,int strong,int iq,int home,int sex,int point)
- {
- int t = 0, o = 0, w = 0, r = 0, f = 0, v = 0, s = 0, e = 0, n = 0, g = 0;
- int count = 10;
- int age = 1;
- while (count)
- {
-
- int a = rand((unsigned int)time(NULL)) % 10;
- struct Event arr[10];
- again:
- switch (a + 1)
- {
- case 1:
- if (sex == 0 && home <= 3 && point == 1)
- {
- strcpy(arr[0].eve, "你的家里人重男轻女观念非常严重,你被遗弃了!\n游戏结束!");
- printf("%s\n", arr[0].eve);
- count = 1;
- }
- else
- {
- if (o == 0)
-
- {
- strcpy(arr[0].eve, "全球范围实现碳中和。");
- o++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- }
- break;
- case 2:
- if (strong < 6 && point < 3)
- {
- if (home >= 5)
- {
- strcpy(arr[1].eve, "你生了一场病,在你的父母悉心照顾下,你康复了");
- strong += 1;
- home -= 1;
- }
- else
- {
- strcpy(arr[1].eve, "你生了一场病,你的父母没精力管你,你的身体状况更糟糕了");
- strong -= 1;
- }
- }
- else
- {
- if (w == 0)
-
- {
- strcpy(arr[1].eve, "火星建立永久性人类居住基地。");
- w++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
-
- }
- break;
- case 3:
- if (face <= 4&& age >= 7)
- {
- if (iq > 5)
- {
- strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你决定用学习填充自己");
- }
- else
- {
- if (sex == 1)
- {
- strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你和别的小朋友经常打架!");
- strong += 1;
- iq -= 1;
- }
- else
- {
- strcpy(arr[2].eve, "你长得太丑了,别的小朋友不喜欢你,你进常被被别的小朋友欺负");
- strong -= 1;
- }
- }
- }
- else
- {
- if (r == 0)
-
- {
- strcpy(arr[2].eve, "全球范围内的无人驾驶汽车技术普及。");
- r++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
-
- }
- break;
- case 4:
- if (iq < 5)
- {
- if (home >= 8 && age >= 6)
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母把你送到更好的学校学习。");
- iq += 1;
- }
- else if (home >= 4 && home <= 7)
- {
- if (sex == 1)
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多运动,争取成为运动员。");
- strong += 1;
- }
- else
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母鼓励你多打扮自己。");
- face += 1;
- }
- }
- else
- {
- strcpy(arr[3].eve, "你看起来傻傻的,你的父母为此经常吵架。");
- if (point == 1)
- strong -= 1;
- else if (point == 2)
- iq -= 1;
- }
- }
- else
- {
- if (f == 0)
-
- {
- strcpy(arr[3].eve, "人工智能与人类共同创造新文化。");
- f++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- }
- break;
- case 5:
- {
- if (point == 1)
- {
- strcpy(arr[4].eve, "你健康成长,你看起来更结实了。");
- strong += 1;
- }
- else if (point == 2)
- {
- strcpy(arr[4].eve, "你健康成长,你看起来更好看了。");
- face += 1;
- }
- else
- {
- if (v == 0)
-
- {
- strcpy(arr[4].eve, "人类开始探索宇宙深处,与外星文明建立联系。");
- v++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- }
- }
- break;
- case 6:
- if (s == 0)
- {
- strcpy(arr[5].eve, "人类成功实现核聚变能源的商业化应用,彻底解决能源危机问题。");
- s++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 7:
- if (e == 0)
- {
- strcpy(arr[6].eve, "虚拟实现技术发展到一个全新的高度,人们可以随时地沉浸到虚拟世界中。");
- e++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 8:
- if (n == 0)
- {
- strcpy(arr[7].eve, "全球范围内的高速交通网络初步建成,人们可以在几小时内穿越地球。");
- n++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 9:
- if (g == 0)
-
- {
- strcpy(arr[8].eve, "高考取消英语这门科目。");
- g++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- case 10:
- if (t == 0)
- {
- strcpy(arr[9].eve, "全球实现无国界教育,世界各地的学生都能接受优质的教育。");
- t++;
- }
- else
- {
- a = rand((unsigned int)time(NULL)) % 10;
- goto again;
- }
- break;
- }
- if (strong <= 0)
- {
- printf("你今年 %d 岁\n", age);
- if (point == 1)
- {
- printf("你染上了新冠病毒,没能抗住病毒的侵袭,你死了!\n");
- printf("游戏结束!\n");
- break;
- }
- else if (point == 2)
- {
- printf("你得了白血病,不幸去世!\n");
- printf("游戏结束!\n");
- break;
- }
- else
- {
- printf("你吃东西的时候不小心被呛死了!\n");
- printf("游戏结束!\n");
- break;
- }
- }
- else if (iq <= 0)
- {
- printf("你今年 %d 岁\n", age);
- if (point == 1)
- {
- printf("你发高烧的时候,由于治疗不及时变成了一个智障!\n");
- printf("游戏结束!\n");
- break;
- }
- else if (point == 2)
- {
- printf("你不小心喝了日本核污水变成了一个智障!\n");
- printf("游戏结束!\n");
- break;
- }
- else
- {
- printf("由于酒精中毒,你变成了一个智障\n");
- printf("游戏结束!\n");
- break;
- }
- }
- printf("---------------------------------------------------------------\n");
- printf("你今年 %d 岁了\n", age);
- printf("%s\n", arr[a].eve);
- printf("颜值:%d,体质:%d,智力:%d,家境:%d\n", face, strong, iq, home);
- printf("---------------------------------------------------------------\n");
- Sleep(1000);
- age++;
- count--;
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。