WarMj:JAVA 猜數(shù)字(高級版)源碼

界面

源碼

挑戰(zhàn)模式可設(shè)置猜測次數(shù)融撞。

package top.warmj.guessnumber;

import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class Client extends Frame implements ActionListener {

    private TextArea ta_result;
    private TextField tf_input;
    private Button b_define;
    private Boolean isChallengeMode = false; // 挑戰(zhàn)模式
    private Boolean isGeneralMode = false; // 普通模式
    private Boolean isEnd = false; // 游戲結(jié)束
    private int randNum; // 隨機數(shù)
    private int userNum; // 用戶回答數(shù)
    private int count = -1; // 挑戰(zhàn)次數(shù)
    private int beginNum = 1; // 開始范圍數(shù)
    private int endNum = 100; // 結(jié)束范圍數(shù)
    private int temp; // 臨時保存總次數(shù)
    private KeyListener keyEnter;

    public static void main(String[] args) {
        new Client("Guess Number —— WarMj");
    }

    public Client(String name) {
        super(name);
        init();
    }

    public Client() {
        init();
    }

    // 初始化
    public void init() {
        this.setSize(500, 385);
        this.setResizable(false);
        this.setVisible(true);
        this.setLocation(700, 200);
        centerPanel();
        northPanel();
        event();
        tf_input.requestFocus(); //輸入框獲取焦點
        this.setIconImage(Toolkit.getDefaultToolkit().createImage("icon.png"));
    }

    //用戶輸入模式選擇
    public void selectMode() {
        if (Integer.parseInt(tf_input.getText()) == 1) {
            isChallengeMode = true; //切換到挑戰(zhàn)模式
            ta_result.append("進入挑戰(zhàn)模式\n");
            ta_result.append("請輸入挑戰(zhàn)次數(shù):\n");
            tf_input.setText("");
        } else if (Integer.parseInt(tf_input.getText()) == 0) {
            isGeneralMode = true; //切換到普通模式
            count = 0;
            ta_result.append("進入普通模式\n");
            ta_result.append("\n請輸入你要猜的數(shù)字:(" + beginNum + "~" + endNum + ")\n");
            tf_input.setText("");
        }
    }

    // 普通模式
    public void generalMode() {
        if (!tf_input.getText().equals("")) {
            // 獲取用戶數(shù)字
            userNum = Integer.parseInt(tf_input.getText());

            // 計數(shù)加一
            count++;

            if (userNum > randNum) {
                // 如果大了
                if (userNum < endNum) {
                    endNum = userNum;
                }
                ta_result.append("你猜大了\n");
            } else if (userNum < randNum) {
                // 如果小了
                if (userNum > beginNum) {
                    beginNum = userNum;
                }
                ta_result.append("你猜小了\n");
            } else {
                // 如果答案正確
                ta_result.append("\n答案是" + randNum + "恭喜你虎囚,挑戰(zhàn)成功湾揽!花了" + count + "次泼疑,就猜中了\n");
                isEnd = true;
                ta_result.append("是否重來游戲链快?  是 —— 1 否 —— 0\n");
                tf_input.setText("");
                return;
            }
            ta_result.append("\r\n請輸入你要猜的數(shù)字:(" + beginNum + "~" + endNum + ")\n");
        }

        // 清空輸入框
        tf_input.setText("");

    }

    // 挑戰(zhàn)模式
    public void challengeMode() {
        if (count < 0) {
            //第一次進入挑戰(zhàn)模式腊嗡,設(shè)置挑戰(zhàn)次數(shù)
            count = Integer.parseInt(tf_input.getText());
            temp = count; // 臨時保存總次數(shù)
            ta_result.append("挑戰(zhàn)次數(shù)為" + count + "次\n");
            ta_result.append("請輸入你要猜的數(shù)字:(" + beginNum + "~" + endNum + ")\n");
            tf_input.setText("");
        } else {
            if (count > 0) {
                // 如果還有挑戰(zhàn)次數(shù)
                if (!tf_input.getText().equals("")) {
                    // 獲取用戶數(shù)字
                    userNum = Integer.parseInt(tf_input.getText());

                    // 挑戰(zhàn)次數(shù)減一
                    count--;

                    if (userNum > randNum) {
                        // 如果大了
                        if (userNum < endNum) {
                            endNum = userNum;
                        }
                        ta_result.append("你猜大了\n");
                        ta_result.append("---你還有" + count + "次機會---\n");
                    } else if (userNum < randNum) {
                        // 如果小了
                        if (userNum > beginNum) {
                            beginNum = userNum;
                        }
                        ta_result.append("你猜小了\n");
                        ta_result.append("---你還有" + count + "次機會---\n");
                    } else {
                        // 如果答案正確
                        ta_result.append("\n答案是" + randNum + "恭喜你,挑戰(zhàn)成功捅彻!花了" + (temp - count) + "次,就猜中了\n");
                        isEnd = true;
                        ta_result.append("是否重來游戲鞍陨?  是 —— 1 否 —— 0\n");
                        tf_input.setText("");
                        return;
                    }
                }

                // 清空輸入框
                tf_input.setText("");

                if (count == 0) {
                    ta_result.append("挑戰(zhàn)失敗\n");
                    isEnd = true;
                    ta_result.append("是否重來游戲步淹?  是 —— 1 否 —— 0\n");
                    tf_input.setText("");
                } else {
                    ta_result.append("請輸入你要猜的數(shù)字:(" + beginNum + "~" + endNum + ")\n");
                }
            }
        }
    }

    // 事件
    public void event() {
        // 關(guān)閉窗口
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        // 按鈕添加監(jiān)聽事件
        b_define.addActionListener(this);

        //創(chuàng)建鍵盤回車事件
        keyEnter = new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    handleButton();
                }
            }
        };
        
        // 輸入框添加回車事件
        tf_input.addKeyListener(keyEnter);

        // 生成隨機數(shù)
        randNum = new Random().nextInt(99) + 1;

    }

    //確認按鈕功能
    public void handleButton() {
        if (!isChallengeMode && !isGeneralMode && !tf_input.getText().equals("") && !isEnd) {
            // 如果是游戲選擇模式
            selectMode();
        } else if (isGeneralMode && !isEnd) {
            //普通游戲模式
            generalMode();
        } else if (isChallengeMode && !isEnd) {
            //挑戰(zhàn)游戲模式
            challengeMode();
        } else if (isEnd) {
            if (Integer.parseInt(tf_input.getText()) == 1) {
                // 如果選擇重新開始游戲
                initValue(); // 初始化各類值
            } else {
                ta_result.append("\r\n---游戲結(jié)束---");
                b_define.setEnabled(false);
                tf_input.setEditable(false);
                tf_input.removeKeyListener(keyEnter);
            }
        }
    }

    // 初始化各類值
    public void initValue() {
        count = -1;
        beginNum = 1;
        endNum = 100;
        isChallengeMode = false;
        isGeneralMode = false;
        isEnd = false;
        randNum = new Random().nextInt(99) + 1;
        ta_result.append("請選擇游戲模式:\n" + "挑戰(zhàn)模式 —— 1   普通模式 —— 0\n");
        tf_input.setText("");
    }

    //點擊動作監(jiān)聽
    public void actionPerformed(ActionEvent e) {
        // 當確定按鈕被點擊
        if (e.getActionCommand().equals("確定")) {
            handleButton();
        }
    }
    
    // 北布局,結(jié)果顯示框
    public void northPanel() {
        Panel north = new Panel();
        north.setLayout(new BorderLayout());

        ta_result = new TextArea("請選擇游戲模式:\n" + "挑戰(zhàn)模式 —— 1   普通模式 —— 0\n", 0, 0, TextArea.SCROLLBARS_NONE);
        ta_result.setEditable(false);
        ta_result.setFont(new Font("宋體", Font.PLAIN, 24));
        ta_result.setBackground(Color.white);
        north.add(ta_result, BorderLayout.CENTER);

        this.add(north, BorderLayout.NORTH);
    }

    // 中間布局湾戳,輸入框和確認按鈕
    public void centerPanel() {
        Panel center = new Panel();

        tf_input = new TextField();
        tf_input.setFont(new Font("宋體", Font.PLAIN, 24));
        tf_input.setColumns(5);
        center.add(tf_input);

        b_define = new Button("確定");
        b_define.setFont(new Font("宋體", Font.PLAIN, 24));
        center.add(b_define);

        this.add(center, BorderLayout.CENTER);
    }
    
}
icon.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贤旷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砾脑,更是在濱河造成了極大的恐慌幼驶,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件韧衣,死亡現(xiàn)場離奇詭異盅藻,居然都是意外死亡,警方通過查閱死者的電腦和手機畅铭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門氏淑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硕噩,你說我怎么就攤上這事假残。” “怎么了炉擅?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵辉懒,是天一觀的道長。 經(jīng)常有香客問我谍失,道長眶俩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任快鱼,我火速辦了婚禮颠印,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抹竹。我一直安慰自己线罕,他們只是感情好,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布窃判。 她就那樣靜靜地躺著闻坚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兢孝。 梳的紋絲不亂的頭發(fā)上窿凤,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天仅偎,我揣著相機與錄音,去河邊找鬼雳殊。 笑死橘沥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的夯秃。 我是一名探鬼主播座咆,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼仓洼!你這毒婦竟也來了介陶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤色建,失蹤者是張志新(化名)和其女友劉穎哺呜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箕戳,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡某残,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陵吸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玻墅。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖壮虫,靈堂內(nèi)的尸體忽然破棺而出澳厢,到底是詐尸還是另有隱情,我是刑警寧澤囚似,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布赏酥,位于F島的核電站,受9級特大地震影響谆构,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜框都,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一搬素、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧魏保,春花似錦熬尺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至檩咱,卻和暖如春揭措,著一層夾襖步出監(jiān)牢的瞬間胯舷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工绊含, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桑嘶,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓躬充,卻偏偏與公主長得像逃顶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子充甚,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理以政,服務(wù)發(fā)現(xiàn),斷路器伴找,智...
    卡卡羅2017閱讀 134,716評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,332評論 25 707
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案盈蛮? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 13,762評論 1 92
  • TED早已風靡全球,大家對它的演講印象深刻疆瑰。喜歡TED深刻 極富內(nèi)涵的演講模式眉反,給人們帶來了全新的內(nèi)容;以及它完美...
    淇淇18閱讀 217評論 0 1
  • 我們都是被父母賦予巨大期待值的孩子梳杏,我們該如何面對那種無聲的愛背后的惶恐呢? 很久之前就想寫寫《無聲告白》這本書...
    落木木閱讀 334評論 0 2