Java杀人游戏(使用for和if嵌套完成)
今天和大家分享一个小的游戏。
玩法:
回故历史我们不难发现很多皇帝都以杀人为乐,所在帝制没有在中国遗留下来。记得在古希腊有一任皇帝,娶了一个漂亮的妃子,心里十分高兴,因此想大赦天下,又不想把过多的犯人放掉。这时有一个大臣出了一个主意:将所有犯人以100人为一组,每组当中只能有一个人活下来。大臣叫每组的犯人站成一个圆圈,然后随机的在每组的某一个犯人后面站一个郐子手,然后由皇帝指定一个数字!然后从郐子手的位置顺时针走位,每过一个人查一个数正好到皇帝指定数字的位置,将其位置的人杀掉。以此规则循环做直到每组当中只有一个人的时候!将此人放掉,奖黄金百两。现在假定如何你是其中的囚犯,囚犯以郐子手所在位置为一号位,皇帝给的数字为4,请问你站在几号位置上可以得百两黄金。
代码:
// An highlighted block
/*
* 杀人游戏For方法
* @param personNumber 人数(参加游戏的人数)
* @param customNumber 自定义数字(杀人数字)
* @return
* 第一个变量 有多少人玩这个游戏 ; PersonNumber(人数)
* 制定的数字是几 customNumber (自定义数字)
* 这里的杀人位置 有点争议:
* 1.如果站在某个人身后,顺时针走位,从那个人开始计数(杀人数字),哪样 方法中的customNumber = customNumber-1
* 2.如果站在某个人身后,顺时针走位,那个人参加计数(杀人数字),哪样 方法中的customNumber = customNumber
* */
public static int killPersonGame(int personNumber , int customNumber) {
//来个数组 把这些人装起来
int[] person = new int[personNumber];
//把人装进去 名字是 1~100
for(int i = 0 , j = person.length ; i < j ;i++) {
person[i] = i+1;
}
int killNumber = 0;
int index = 0;
//让这些人围成一个圈(这个for是横排)
for(int i = 0 , j = person.length ; i < j ; i++) {
//因为就能活一个人,这个地方判断,并且定义一个index变量,它代表杀了第几个人了(也就是说 index=personNumber-1的时候,就剩下一个活着的了)
//同样第三方变量定义在For外面
//反之不等于就继续杀人
if(index != personNumber-1){
//一圈下去还有没被杀的人且个数大于一(继续)
if(person[i] != -1){
//定义一个杀人计数的变量 killNumber用来查数
//(画面:假如自定义数字为3,那么这个黑道大哥,走过一个人查一个数,查到三的时候,来一刀。然后从零开始查,重复刚刚的操作)
//这个要定义在for外面 第三方变量
if(killNumber == customNumber-1) {
//来一个记录的,查数,杀了第几个啦
System.out.println("侩子手大哥,这个小老弟是被你第"+ index++ +"杀掉的,这个人叫"+person[i]);
//杀人
person[i] = -1;
//清零
killNumber = 0;
}else {
killNumber++;
}
}
//这个if是让帮人首尾连接,围成一个圈
if(i == person.length-1) {
i = -1;
}
}
}
//大哥就剩一个人了这人叫啥呢
for(int i = 0 , j = person.length ; i < j ; i++){
if(person[i] != -1) {
int survivalName = person[i];
System.out.println("大哥这个活的人叫:"+person[i]);
return survivalName;
}
}
return -1;
}
执行:
public static void main(String[] args) {
//100人,每隔4个人杀一个
killPersonGame(100,4);
}
结果
>>大哥这个活的人叫:34
Process finished with exit code 0