一個游戲的JAVA源碼,大家一起討論下!

wf1006 14年前發布 | 2K 次閱讀 框架 JavaScrip 文本編輯器

<PRE class=java style="FONT-WEIGHT: bold; BACKGROUND-COLOR: #c5c5c5" name="code">package com.pip.util.test;

import java.util.ArrayList; import java.util.List;

class Test { static int ok = 1;

/**
 * 有100個人圍成一個圈(編號0-99),從第0號的人開始從1報數, 凡報到3的倍數的人離開圈子,然后再數下去, 直到最后只剩一個人為止,
 * 問此人原來的位置是多少號?
 */
private void test1() {
    int total = 100;
    int start = 1;
    List list = new ArrayList();
    for (int i = 1; i <= 100; i++) {
        Person person = new Person(i, "Y");
        list.add(person);
    }
    List tt = list;
    while (true) {
        tt = doGame(tt);
        System.out.println("count num:" + Test.ok);
        int tem = tt.size();
        if (tem <= 2)
            break;
    }
    for (int i = 0; i < tt.size(); i++) {
        Person person = (Person) tt.get(i);
        int index = person.getIndex();
        System.out.println(index + 1 + "是最后一個留下的人!");
    }
}

private List doGame(List list) {
    List lists = new ArrayList();
    int size = list.size();
    int num = size;
    if (size == 2) {

    }
    for (int i = 0; i < size; i++) {
        Person person = (Person) list.get(i);
        if ("Y".equals(person.getStatus())) {
            int count = i + 1;
            if (Test.ok % 3 == 0) {
                person.setStatus("N");
                num--;
                System.out.println("index:" + person.getIndex() + "\t 離開");
            } else {
                lists.add(person);
            }
        }
        if (num == 1) {
            break;
        }
        Test.ok++;
    }
    return lists;
}

class Person {
    int index;
    String status;

    public Person() {

    }

    public Person(int index, String status) {
        this.index = index;
        this.status = status;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

}

public static void main(String args[]) {
    System.out.println("start....");
    Test test = new Test();
    test.test1();
    System.out.println("end!");
}

public static void main1(String[] args) {
    int count = 100;
    // 剩余人數
    int leavings = count;
    int[] all = new int[count];
    // index人物編號,counter報數
    int index = 0, counter = 0;
    while (true) {
        // 人物對應的值為-1表示出局
        if (all[index] != -1) {
            all[index] = index + 1;
            counter++;
        }
        if (counter % 3 == 0) {
            if (--leavings == 1) {
                System.out.println(index);
                break;
            }
            all[index] = -1;
        }

        index++;
        if (index == count - 1) {
            index = 0;
        }
    }
}

}</PRE>


 

 本文由用戶 wf1006 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!