Java学习--狼人杀

package langrensha;


import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		String [] cards={"狼人","狼人","平民","平民","平民","预言家","女巫"};
		//保存每个人的身份
		String [] people=new String[7];
		//设置投票数
		int [] poll=new int[7];
		int [] random={8,8,8,8,8,8,8};
		int a=0;//给每一个位置放值
		int nvNum=1;//标记女巫使用毒药或者解药
		boolean flag=true;
		do{
			int count=1;//如果有相同的随机数就+1
			int j=(int)(Math.random()*7);
			for(int i=0;i<random.length;i++){
				if(j==random[i]){
					count++;
				}
				
			}
			if(count==1){//没有相同的随机数时才放值
				random[a]=j;
				a++;
			}
		}while(a!=7);
		//随机设置身份
		for(int i=0;i<cards.length;i++){
			people[i]=cards[random[i]];
		}
		//输出每个人的身份
		for(int i=0;i<people.length;i++){
			System.out.println((i+1)+"号的身份为:"+people[i]+"\t");
		}
		int yuYan=0;
		int nvWu=0;

		for(int i=0;i<people.length;i++){
			if(people[i].equals("预言家")){
				yuYan=i;
			}else if(people[i].equals("女巫")){
				nvWu=i;
			}
		}
		do{
			Scanner in=new Scanner(System.in);
			System.out.println("天黑,请闭眼");
			System.out.println("狼人选择要杀的号码:");
			int num=in.nextInt();
			System.out.println("预言家要查看谁的身份");
			if(!people[yuYan].equals("死")){
				int num1=in.nextInt();
				System.out.println(num1+"号的身份为"+people[num1-1]);
			}
			
			System.out.println("女巫选择是否救(y/n)");
			int b=1;
			int num4=0;
			if(!people[nvWu].equals("死")){
				if(nvNum!=0){
					String ans=in.next();
					if(ans.equals("n")){
						b=1;
					}else{
						b=0;
						nvNum--;
					}
					System.out.println("请选择是否毒人:(y/n)");
					if(nvNum!=0){
						String ans1=in.next();
						if(ans1.equals("y")){
							System.out.println("请输入要毒几号:");
							num4=in.nextInt();
							b=2;
							nvNum--;
						}
					}
				}
			}
			if(b==0){
				System.out.println("今晚是平安夜");
			}else if(b==1){
				System.out.println(num+"号死了");
				people[num-1]="死";
				
			}else{
				System.out.println(num+"号死了");
				people[num-1]="死";
				System.out.println(num4+"号死了");
				people[num4-1]="死";
			}
			//设置投票数
			for(int i=0;i<people.length;i++){
				if(!people[i].equals("死")){
					System.out.println((i+1)+"号请选择:");
					int num2=in.nextInt();
					switch(num2-1){
						case 0:
							poll[0]++;
							break;
						case 1:
							poll[1]++;
							break;
						case 2:
							poll[2]++;
							break;
						case 3:
							poll[3]++;
							break;
						case 4:
							poll[4]++;
							break;
						case 5:
							poll[5]++;
							break;
						case 6:
							poll[6]++;
							break;
						
					}
				}
			}
			//回去最大投票数的下标
			int max=poll[0];
			int num3=0;
			for(int i=0;i<poll.length;i++){
				if(poll[i]>max){
					max=poll[i];
					num3=i;
				}
			}
			//判断被投死的人
			System.out.println(num3+1+"号被投死");
			people[num3]="死";
			for(int i=0;i<people.length;i++){
				System.out.println((i+1)+"号的身份为:"+people[i]+"\t");
			}
			poll=new int[7];
			int end1=0;
			int end2=0;
			for(int i=0;i<people.length;i++){
				if(people[i].equals("狼人")){
					end1++;
				}else if(people[i].equals("死")){
					
				}else{
					end2++;
				}
				
			}
		
			if(end1==0){
				System.out.println("游戏结束,平民胜利");
				flag=false;
			}else if(end1<=end2){
				System.out.println("游戏继续");
			}else{
				System.out.println("游戏结束,狼人胜利");
				flag=false;
			}
		}while(flag);
		
	}
}


  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值