//n人玩报数游戏
package com.neusoft.dragon.test;
//题目:m个人玩报数游戏,报到n的人出局,有人出局后,重新报数,然后游戏继续直到最后一个人,要求模拟游戏过程
//程序说明:
//1.m个人编号从1到m
//2.可以进行100个人以内的报数
class Man{
int 编号;
boolean 已出局;
public Man(int 编号){
this.编号 = 编号;
this.已出局 = false;
}
public int 报数(int 顺序号){
System.out.println(this.编号 + "SPEAK:"+顺序号);
return 顺序号;
}
public void 出局(){
this.已出局 = true;
System.out.println(this.编号+"出局!");
}
}
public class Jose{
int 游戏人数;
int 剩余人数;
int 出局点;
int 顺序号;
Man 游戏人[]=new Man[100];
public boolean 初始化参数检查(){
return (游戏人数<游戏人.length);
}
public void 游戏初始化(int 游戏人数,int 出局点){
if (初始化参数检查()==false) 结束游戏();
顺序号 = 0;
this.剩余人数=游戏人数;
this.游戏人数=游戏人数;
this.出局点=出局点;
for(int i=1;i<=游戏人数;i++){
游戏人[i]=new Man(i);
}
}
public void 开始游戏(){
System.out.println(">>游戏开始");
while(true){
//System.out.println(剩余人数);
for(int i=1;i<=this.游戏人数;i++){
if (游戏人[i].已出局){
continue;
}
if (游戏人[i].报数(++顺序号)==出局点){
游戏人[i].出局();
剩余人数--;
if (剩余人数==1) 结束游戏();
this.顺序号=0;
}
}
}
}
public void 结束游戏(){
System.out.println(">>游戏结束");
System.exit(0);
}
public static void main(String[] args){
int 游戏人数=new Integer(args[0]).intValue();
int 出局点=new Integer(args[1]).intValue();
Jose 游戏=new Jose();
游戏.游戏初始化(游戏人数,出局点);
游戏.开始游戏();
}
}
import java.io.*;
class Person{
public int id;
public boolean status=false;
Person next;
Person(int id){this.id=id;}
void setStatus(){ status=true; }
public void numAction(){ Game.M--; }
void offAction(){
Game.N--;
System.out.println("I'm out now: "+id);
}
}
public class Game{
public static int M=10;
public static int N=100;
public static boolean C=false;
Person head=new Person(1);
void go(){
//now form the round:
Person p=head;
for(int i=2;i<=N;i++)
{
Person temp=new Person(i);
p.next=temp;
p=temp;
}
p.next=head;
//now check the round:
System.out.println("Now check the round:");
Person pn=head;
int i=0;
while(pn!=p)
{
if(i%10==0) System.out.println();
i++;
System.out.print(pn.id+" ");
pn=pn.next;
}
System.out.println(pn.id);
//Now the game starts finally:
Person ps=head;
while(N>0)
{
M=10;
while(M>1)
{
if(!ps.status)
{
ps.numAction();
ps=ps.next;
}
else ps=ps.next;
}
//handle the last number of M:
while(ps.status) ps=ps.next;
ps.setStatus();
ps.offAction();
ps=ps.next;
}
}
public static void main(String args[])
{
Game g=new Game();
g.go();
}
}