开始的想法是想建立一个people类,其中有代表死亡的一个flg,用来判断人物是否死亡,在每次点数的时候进行判断,但是在实际情况中这样做就很难实现将people连成一个圈的形式。所以最终放弃了这个想法。一下的代码只是初步的实现罢了。 package ky.play.killer; import java.util.ArrayList; import java.util.List; /* * 数数杀人游戏!!! * * 一群拥有编号的玩家, * 比如A,B,C,D,E,F,G 连成一个圈 ,G与A相连,从A开始,数一个固定的数,比如8,也就是A, * 将A删除(删除后的数也被删除这个圈),然后继续数到8,再删除C,直到全部被删除为止。 * * d_c 2010/5 */ public class Client { public static void main(String[] args) { final int num =8; List<People> lp = new ArrayList<People>(); People p1 = new People(1,"A"); People p2 = new People(2,"B"); People p3 = new People(3,"C"); People p4 = new People(4,"D"); People p5 = new People(5,"E"); People p6 = new People(6,"F"); People p7 = new People(7,"G"); lp.add(p1); lp.add(p2); lp.add(p3); lp.add(p4); lp.add(p5); lp.add(p6); lp.add(p7); int size = lp.size(); for (int i = 0; i < size; i++) { int newSize = lp.size(); while(newSize<num){//创建一个可以满足数数的数组,数组不够大,就循环的连接起来。 lp.addAll(lp); newSize=lp.size(); } System.out.print("圈圈变化为:"); for (People people : lp) { System.out.print(" "+people.getName()); } System.out.println("死亡玩家:"+lp.get(num-1).getName()); People p = lp.get(num-1); while(lp.contains(p)){//删除数组中的死亡玩家 lp.remove(p); } } } } package ky.play.killer; public class People { private int id; private String name; public People(int id, String name) { super(); this.id = id; this.name = name; } public People() { super(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }