狼人杀分配角色案例
1.要求
狼人杀,身份分配。
12人身份,3个阵营,分配身份。
阵营:
神民:预言家、女巫、猎人、白痴
平民:4民
狼人:4 狼人
程序执行:
- 分配身份
- 退出
点击分配身份,将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]);//打印结果数组
}
}