前言
by 黑_白(永远的CC)
代码行数:149行
更新日志
- 第一个版本1️⃣
- 添加了不同人数🚻
- 添加了对作弊者的惩治☠️
- 添加了亡语👻
- 第二个版本2️⃣
- 避免了自杀🤡
- 添加了技能🎌
判定数字机制
第一个1/1
第二个1/2
第三个1/3
第四个1/4
第五个1/5
第六个1/6
技能列表
- 冰冻:跳过杀人阶段
- 近视:只能杀编号相邻的人(没有编号相邻的人就杀不了QWQ)
游戏代码:
//LIVE
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
void print(char a[]){for(int i=0;i<strlen(a);i++){cout<<a[i];Sleep(10);}puts("");}
void cls(){system("cls");}
void pause(){system("pause");}
void hehe(){print("小朋友想走不当途径是不好的");print("你死了");exit(1);}
int f,a,last,live[10000],skill[10000];
int main(){
srand(time(NULL));
system("title LIVE-by black_white");
system("MODE CON: COLS=50 LINES=30");
std::srand(time(NULL));
print("LIVE活着");pause();cls();
print("by 黑_白(永远的CC)");pause();cls();
printf("输入人数(推荐7人):");
cin>>last;
if(last<=0)hehe();
for(int i=1;i<=last;i++)live[i]=i;
print("规则:一共n个人,每个人选择一个击杀目标,最后剩下的人胜利");pause();cls();
print("游戏开始!");cls();
printf("输入你的编号(1~n):");
cin>>a;cls();
if(a==114514)print("成功开启人机对打!");
else if(!(a>=1&&a<=last))hehe();
cls();
for(int I=1;;I++){
cls();
printf("--------------------------------------------------\n");
printf("第%d个回合:\n",I);
for(int i=1;i<=last;i++){
if(live[i]==0)continue;
int Cnt=0;
for(int j=1;j<=last;j++)if(live[j]!=0)Cnt++;
printf("还剩%d人\n",Cnt);
printf("还活着的人:");
for(int j=1;j<=last;j++)if(live[j]!=0)printf("%d ",live[j]);
puts("");
if(skill[i]==1){
printf("%d号解冻\n",i);
skill[i]=0;
continue;
}
int mb=rand()%(last+1);
while(live[mb]==0&&mb==i&&mb==0)mb=rand()%(last+1);
if(a!=live[i])printf("%d选择了%d号\n",live[i],live[mb]);
else{
printf("你的目标是(输入0放弃猎杀):");
cin>>mb;
bool ff=0;
for(int j=1;j<=last;j++)if(live[j]==mb)ff=1;
if(!ff)hehe();
}
if(mb==0){
print("他放弃了猎杀...");
getch();
continue;
}
if(skill[i]==2){
if(mb-i>1||mb-i<-1){
print("近视生效...");
print("打不到目标...");
skill[i]=0;
continue;
}
skill[i]=0;
}
print("正在生成判定数字...\n");
int pd[7],cnt=1;memset(pd,0,sizeof(pd));
for(int j=1;j<=6;j++){
int t=rand()%j;
if(t!=0)break;
int tt=rand()%6;
pd[cnt]=tt;
cnt++;
}
printf("可判定的数字为:");
for(int j=1;j<=cnt;j++)pd[j]++,printf("%d ",pd[j]);
puts("");
int s=rand()%3;
if(s==0){
print("有人篡改了判定数字。");
pd[rand()%cnt+1]=rand()%6+1;
printf("现可判定的数字为:");
for(int j=1;j<=cnt;j++)printf("%d ",pd[j]);
puts("");
}
getch();
int sz=rand()%6;sz++;
printf("%d号抛出了%d\n",live[i],sz);
bool kill=0;
for(int i=1;i<=cnt;i++)
if(sz==pd[i]){
kill=1;
break;
}
if(!kill)print("未杀死目标。\n"),getch();
else{
int ttt=rand()%3;
if(ttt>0){
live[mb]=0,print("成功杀死目标!\n");
int tttt=rand()%2;
if(tttt){
int mb3=rand()%(last+1);
while(live[mb3]==0&&mb3==i&&mb3==0)mb3=rand()%(last+1);
printf("并发动技能:");
int aa=rand()%2;
if(aa==0){
printf("冻结\n");
printf("%d号被冻结了。\n",mb3);
skill[mb3]=1;
}else if(aa==1){
printf("近视\n");
printf("%d号近视了。\n",mb3);
skill[mb3]=2;
}
}
getch();
}
else{
int mb2=rand()%(last+1);
while(live[mb2]==0&&mb==mb2&&mb2==0)mb2=rand()%(last+1);
printf("%d号复活了,并随机诅咒了%d号\n",live[mb],live[mb2]);
getch();
int tttt=rand()%2;
if(tttt)printf("%d号死了\n",live[mb2]),live[mb2]=0;
else printf("但他没死。\n\n");
getch();
}
}
int sum=0;
for(int i=1;i<=last;i++)if(live[i]!=0)sum++;
if(sum==0){
cls();
print("每个人都倒下了...");
print("无人胜利...");
pause();
return 0;
}
if(sum==1){
for(int k=1;k<=last;k++)
if(live[k]!=0){
printf("%d挺到了最后...\n",live[k]);
if(k==a)print("你胜利了!");
pause();
return 0;
}
}
}
}
return 0;
}