c++_游戏_狼人杀

思路主要包括以下几个部分:

  1. 角色分配:代码中通过随机数的方式给狼人、平民、预言家和法师等角色进行分配,保证每个角色的数量和身份的随机性。

  2. 游戏进行:根据狼人、平民、预言家和法师等角色的身份,游戏进行了夜晚和白天的交替,每个角色根据自己的身份进行相应的行动,比如狼人选择杀人、预言家选择预言等。

  3. 游戏结束条件:游戏根据角色的行动和玩家的投票,判断游戏是否结束,比如狼人全部被杀死或者平民被全部杀死等。

    cpp 复制代码
    #include <bits/stdc++.h>
    #include <windows.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    #define random(a,b) (rand()%(b-a+1)+a)
    using namespace std;//命名空间
    int a[6]={0,0,0,0,0,0};
    struct node{
    	string sf;
    }sfs[4];
    void wolf(){
    	
    	int x;
    	x= random(1,6);
    	a[x-1]=3;
    	return ;
    }
    void yu(){
    	
    	int x,y=0;
    	while(y==0){
    		x= random(1,6);
    		if(a[x-1]==0){
    			y=1;
    			a[x-1]=1;
    			return ;
    		}
    	}
    }
    void fa(){
    	
    	int x,y=0;
    	while(y==0){
    		x= random(1,6);
    		if(a[x-1]==0){
    			y=1;
    			a[x-1]=2;
    			return ;
    		}
    	}
    }
    void printsetence(string &text, int interval) {
    	int n = text.length();
    	for (int i=0; i<n; i++) {
    		cout<<text[i];
    		Sleep(interval);
    	}
    	return;
    }
    int main(){//主函数
    	sfs[0].sf="平民";
    	sfs[1].sf="预言家";
    	sfs[2].sf="法师";
    	sfs[3].sf="狼";
    	cout<<" 狼 :1 平:3 预:1 法:1" <<endl;
    	srand((unsigned)time(NULL));
    	wolf();
    	srand((unsigned)time(NULL));
    	fa();
    	srand((unsigned)time(NULL));
    	yu();
    	
    	system("color 87") ;
    	system("pause") ;
    	system("cls");
    	string text = "你是1号,你的身份是:";
    	printsetence(text,25);
    	cout<<sfs[a[0]].sf<<endl;
    	system("color 87") ;
    	system("pause") ;
    	system("cls");
    	int tian=0; 
    	while(1){
    		tian++;
    		cout<<"第"<<tian<<"夜";
    		system("color 87") ;
    		system("pause") ;
    		system("cls");
    		int flag=0;
    		if(a[0]==3){
    			flag=1;
    			int shu;
    			cout<<"你要刀几号?"<<endl;
    			cin>>shu;
    			a[shu-1]+=4;
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    		}else if(a[0]==2){
    			cout<<"今晚你要毒还是救";
    			string shu1;
    			cin>>shu1;
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    			if(shu1=="毒"){
    				cout<<"你要毒几号" ;
    				int shu;
    				cin>>shu;
    				a[shu-1]+=4;
    			}else{
    				cout<<"你要救几号" ;
    				int shu; 
    				cin>>shu;
    				if(a[shu-1]>=4){
    					a[shu-1]-=4;
    				}
    			}
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    		}else if(a[0]==1){
    			
    			cout<<"今晚你要预言几号";
    			int shu;
    			cin>>shu;
    			
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    			cout<<"他的身份是";
    			cout<<sfs[a[shu-1]].sf<<endl;
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
    		}else{
    			int flagg=0;
    			while(flagg==0) {
    			
    				srand((unsigned)time(NULL));
    				int b=random(1,6);
    				if(a[b-1]<4){
    					flagg=1;
    					a[b-1]+=4;
    				}
    			}	
    		} 
    		if(flag==0){
    			srand((unsigned)time(NULL));
    			a[random(1,6)-1]+=4;
    		}
    		int sum=0;
    		cout<<"天亮了,过了今晚还剩";
    		for(int i=0;i<6;i++){
    			if(a[i]<4){
    				cout<<i+1<<"号"<<" ";
    				sum++;
    			}else if(i==0){
    				system("pause") ;
    				system("cls");
    				cout<<"你被杀了"<<endl;
    				system("pause") ;
    				system("cls");
    				return 0;
    			}else if(a[i]==7){
    				cout<<"狼死了";
    				system("color 87") ;
    			system("pause") ;
    			system("cls");
    			return 0;
    			}
    		} 
    		system("color 87") ;
    		system("pause") ;
    		system("cls");
    		int mx=0,mxx,n,piao[6]={0,0,0,0,0,0};
    		cout<<"请投票"<<endl;
    		cin>> n;
    		piao[n-1]++;
    		sum-=1;
    		while(sum--){
    			srand((unsigned)time(NULL));
    			piao[random(1,6)-1]++;
    		}
    		for(int i=0;i<6;i++){
    			cout<<i+1<<"号:"<<piao[i]<<"票 "; 
    			if(mx<piao[i]){
    				
    				mx=piao[i];
    				mxx=i+1;
    			}
    		}
    		cout<<endl;
    		cout<<mxx<<"号出局"<<endl;
    		if(mxx-1==0){
    				system("pause") ;
    				system("cls");
    				cout<<"你被票了"<<endl;
    				system("pause") ;
    				system("cls");
    				return 0;
    			}
    		a[mxx-1]+=4;
    		if(a[mxx-1]==7){
    			cout<<"他是狼"; 
    			system("color 87") ;
    			system("pause") ;
    			system("cls");
        		return 0;//返回值
    		}
    	}
        return 0;//返回值
    }
相关推荐
ID_180079054732 小时前
小红书笔记详情API接口基础解析:数据结构与调用方式
数据结构·数据库·笔记
千金裘换酒7 小时前
LeetCode 移动零元素 快慢指针
算法·leetcode·职场和发展
方璧7 小时前
限流的算法
java·开发语言
wm10438 小时前
机器学习第二讲 KNN算法
人工智能·算法·机器学习
NAGNIP8 小时前
一文搞懂机器学习线性代数基础知识!
算法
NAGNIP8 小时前
机器学习入门概述一览
算法
Hi_kenyon8 小时前
VUE3套用组件库快速开发(以Element Plus为例)二
开发语言·前端·javascript·vue.js
曲莫终8 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
byxdaz8 小时前
C++内存序
c++