2020-09-09课堂笔记(实训)

狼人杀分配角色案例

1.要求

狼人杀,身份分配。
12人身份,3个阵营,分配身份。
阵营:
神民:预言家、女巫、猎人、白痴
平民:4民
狼人:4 狼人

程序执行:

  1. 分配身份
  2. 退出
    点击分配身份,将12个身份随机分给12个用户,打印出来。
    例如:
    1.预言家       7.女巫
    2.平民           8.狼人
    3.猎人           9狼人
    4.狼人           10.平民
    5.白痴           11狼人
    6.平民           12.平民
    (进阶功能,可以做一个猜身份的功能)
    每次分配身份结果都随机,不是固定为上述功能。

2.逻辑分析

1.生成两个数组,分别存放12个身份,和分配身份后的结果,
2.从身份数组中按序逐个取出
3.然后生成一个0-11的随机数
4.将这个身份数组中取出的身份,放在以随机数为下标的第二个数组中
5.如果数组不为空,则重新生成随机数
6.若数组为空,则放入,并且身份数组后移
7.直到第二个数组全部填满

3.代码示例

主函数代码如下:

public static void main(String[] args) {
    
    
while(true) {
    
    
			System.out.println("请选择你要进行的操作:");
			System.out.println("1.分配角色");
			System.out.println("2.退出");
			Scanner scanner=new Scanner(System.in);
			int num=scanner.nextInt();
			if(num==1)
			{
    
    
				fenpei();//进入身份分配函数
			}else if(num==2)
			{
    
    
				System.out.println("退出程序");
				System.exit(0);
			}
		}
	}

分配身份函数代码如下:

 public static void fenpei()
	{
    
    
		int a=0;
		int i=0;
		 String[] m =new String[12]; 
	       m[0]= "预言家";m[1]="女巫";m[2]="猎人";m[3]="白痴";
	       m[4]="平民"; m[5]="平民"; m[6]="平民"; m[7]="平民";
	       m[8]="狼人"; m[9]="狼人"; m[10]="狼人"; m[11]="狼人";
	     String[] r=new String[12];
	     int k;
	     do
	     {
    
    
	    	k=(int)(Math.random()*12);//生成0-11的随机数
	    	if(r[k]!=null)
	    	{
    
    
	    		continue;//重新进入循环	
	    	}else
	    	{
    
    
	    		r[k]=m[i];
	    		i++;//身份数组后移
	    		a++;//分配完成的个数加1
	    	}
	     }while(a<12);//循环结束的条件:总数12个
	     
	     for(int p=0;p<r.length;p++)
	     {
    
    
	    	 System.out.println(r[p]);//打印结果数组
	     }
	}

猜你喜欢

转载自blog.csdn.net/sxh06/article/details/108506440