【在线等】求debug
  • 板块灌水区
  • 楼主xuorange
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/3/15 20:47
  • 上次更新2023/10/28 06:31:02
查看原帖
【在线等】求debug
564964
xuorange楼主2022/3/15 20:47

我写了一个狼人杀程序(我们学校信息作业),可是有点bug(能过编译),求调

代码:

#include<iostream>
#include<bits/stdc++.h> 
#include<windows.h>
#include<cstdlib> 
#include<ctime> 
#include<cstring>
#include<cstdio>
using namespace std;

//bugs:投票后不会处决 

struct orange{ //玩家状态 
	bool life; //0为活,1为死 
	bool beidao; //0为没被刀 
	bool beishouwei; //0为没被守 
}player[10];
int shenfen[10]={0,1,1,2,3,4,4}; //1平,2守,3预,4狼 

int main()
{
	srand(time(0)); 
	Sleep(1000);
	cout<<"欢迎使用狼人杀"<<endl;
	cout<<"游戏人数:6人  身份:2平民1预言1守卫2狼人"<<endl;
	cout<<"具体玩法和角色技能就懒得写了"<<endl;
	system("pause");
	system("cls");
	
	//随机身份 
	srand(time(0)); 
    random_shuffle(shenfen+1, shenfen+7);
    
    //领身份 
    for(int i=1;i<=6;i++){
    	cout<<"请第"<<i<<"号玩家来到屏幕前领取身份,其他玩家请闭眼"<<endl;
    	Sleep(1000);
		cout<<i<<"号玩家,你的身份是:";
		if(shenfen[i]==1)cout<<"平民"<<endl;
		if(shenfen[i]==2)cout<<"守卫"<<endl;
		if(shenfen[i]==3)cout<<"预言家"<<endl;
		if(shenfen[i]==4)cout<<"狼人"<<endl;
		system("pause");
		system("cls");
	}
	
	int nowcm=2,nowsz=2,nowlr=2;
	int tim=1,dao,shou,chayan;
	int renshu=6;
	
	while((nowcm!=0)&&(nowsz!=0)&&(nowlr!=0))
	{
		cout<<"第"<<tim<<"天晚上"<<endl; 
		cout<<"睁眼顺序:狼人-守卫-预言家"<<endl;
		cout<<"狼人5秒后睁眼"<<endl;
		cout<<"守卫请自己倒数30秒后睁眼"<<endl;
		cout<<"预言家请自己倒数45秒后睁眼"<<endl;
		cout<<"所有玩家请在1分钟后睁眼"<<endl;
		
		system("pause");
		system("cls");
		Sleep(2000);
		//晚上
		system("color 0f"); //屏幕变黑 
		//狼人讨论,5-20 
		for(int t=15;t>=1;t--){
			Sleep(1000);
			cout<<"狼人剩余讨论时间:"<<t<<endl;
		}
		cout<<"刀谁?(请输入编号)"<<endl;
		cin>>dao; 
		if(dao>=1&&dao<=6&&player[dao].life==0)player[dao].beidao=true;
		system("pause");
		system("cls");
		
		//守卫思考 25-35 
		for(int t=10;t>=1;t--){
			Sleep(1000);
			cout<<"守卫剩余思考时间:"<<t<<endl;
		}
		cout<<"守谁?(请输入编号)"<<endl;
		cin>>shou;
		if(shou>=1&&shou<=6&&player[shou].life==0)player[shou].beishouwei=true;
		system("pause");
		system("cls");
		
		//预言家思考 45-55
		for(int t=10;t>=1;t--){
			Sleep(1000);
			cout<<"预言家剩余思考时间:"<<t<<endl;
		}
		cout<<"查验谁的身份?(请输入编号)"<<endl;
		cin>>chayan;
		if(chayan>=1&&chayan<=6&&player[chayan].life==0){
		    cout<<chayan<<"号玩家的身份为:";
		    if(shenfen[chayan]==4)cout<<"狼人";
		    if(shenfen[chayan]==2&&shenfen[chayan]==3)cout<<"神职";
		    if(shenfen[chayan]==1)cout<<"平民";
 		    system("pause");
	    	system("cls");
		}
		
		//被刀
		for(int k=1;k<=6;k++){
			if(player[dao].beidao=true&&player[dao].life==0){
				if(player[shou].beishouwei==false){
					player[k].life=1;
					renshu--;
					if(shenfen[k]==1)nowcm--;
					if(shenfen[k]==2&&shenfen[k]==3)nowsz--;
					if(shenfen[k]==4)nowlr--;
				}
			}
		} 
		
		//白天
		tim++;
		cout<<"第"<<tim<<"天白天"<<endl; 
		//已死
		cout<<"已死玩家名单:";
		for(int i=1;i<=6;i++){
			if(player[i].life==1)cout<<i<<"号"<<" ";
		} 
		cout<<endl;
		system("color F0"); //屏幕变白 
		//讨论 
		string liaotian;
		int renshu; 
		bool zibao=false;
		int lunshu=12;
		for(int j=1;j<=6&&lunshu!=0;j++){
			lunshu--;
			if(player[j].life==0){
				cout<<"请"<<j<<"号玩家来电脑前与别人交流(如果你是想自爆的狼人,请输入Boom以自爆)"<<endl;
				if(player[j].life=0){
			    	cin>>liaotian;
			    	if(liaotian=="Boom"){
		    			player[j].life=1;
		    			cout<<j<<"号是狼人,他自爆了,讨论及放逐环节跳过"<<endl;
		    			renshu--;
		     	    	system("pause");
				    	system("cls");
			    	}
				}
			}
		}
		
		//投票(未完) 
		int piao[10]={0};
		int fir,sec;
		int toupiao,piaomax=-100;
		for(int j=1;j<=6;j++){
			if(player[j].life==0){
				cout<<"请"<<j<<"号玩家来电脑前投票(输入0弃票)"<<endl;
				cin>>toupiao;
				if(toupiao>=1&&toupiao<=6&&player[toupiao].life==0){
					piao[toupiao]++; //票数++ 
					if(piao[toupiao]>piaomax){
					    sec=fir; //原来最大编号变第二 
						fir=toupiao; //现在最大编号更新 
						piaomax=max(piaomax,piao[toupiao]);
					}
					if(piao[toupiao]==piaomax){
						sec=toupiao; //一样就更新第二大编号
					}
				}
			}
		}
		
		//处决(未完 
		if(fir!=sec){
			cout<<fir<<"号玩家被驱逐了,他的身份是";
			player[fir].life=1; //去世
			system("pause");
	    	system("cls");
		} 
		else continue; //平票直接进黑夜 
	}
	
	if(nowcm==0||nowsz==0)cout<<"狼人胜利!";
	else if(nowlr==0)cout<<"好人胜利!";
	system("pause");
    
    return 0;
}
2022/3/15 20:47
加载中...