無Bug,Java語言編寫猜拳小遊戲

猜拳小遊戲

習題代碼

package com.newer.oop;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
 * author:HCQ
 * date: 2018/7/26
 * see: 猜拳遊戲
 */
public class GuessFist {
    static int playerNumber;   //玩家輸入的數字
    static int computerNumber;   //電腦隨機產生的數字
    static String jiXu;   //玩家判斷是否繼續
    private static Scanner sc;   
    /*進行電腦出拳和判斷輸贏*/
    public static void computer() {
        //電腦出拳
        computerNumber = (int) (Math.random()*3+1);   //隨機產生數字1-3
        switch(computerNumber) {
        case 1: System.out.println("計算機出的是:"+"石頭");break;
        case 2: System.out.println("計算機出的是:"+"剪刀");break;
        case 3: System.out.println("計算機出的是:"+"布");break;
        }
        //判斷輸贏
        if((playerNumber == 1 && computerNumber == 2) || (playerNumber == 2 && computerNumber == 3) || (playerNumber == 3 && computerNumber == 1)) {
            System.out.println("你贏了");
        } else {
            if((playerNumber == 2 && computerNumber == 1) || (playerNumber == 3 && computerNumber == 2) || (playerNumber == 1 && computerNumber == 3)) {
                System.out.println("你輸了");
            } else {
                System.out.println("您和計算機打平手");
            }
        }
    }

    /*main方法*/
    public static void main(String[] args) {    
        String shiTou = "石頭";   //石頭
        String jianDao = "剪刀";    //剪刀
        String bu = "布";       //布
        try {
            sc = new Scanner(System.in);

            while(true) {   //無限循環,在判斷"是否繼續?(y/n)"可以跳出循環結束遊戲
                System.out.print("請出拳:1:石頭,2:剪刀,3:布:");
                playerNumber = sc.nextInt();   //玩家輸入數字出拳

                if(playerNumber>0 && playerNumber<4) {
                    if(playerNumber == 1) {   //玩家輸入的數字爲1,出石頭
                        System.out.println("您出的是:"+shiTou);
                        computer();     
                    }
                    if(playerNumber == 2) {   //玩家輸入的數字爲2,出剪刀
                        System.out.println("您出的是:"+jianDao);
                        computer();     
                    } 
                    if(playerNumber == 3) {   //玩家輸入的數字爲3,出布
                        System.out.println("您出的是:"+bu);
                        computer();
                    } 
                } else {  //玩家輸入的不是1、2、3,輸入報錯,退出遊戲
                    System.out.println("輸入錯誤,遊戲退出!");
                    break;
                }

                //是否繼續遊戲
                System.out.println("是否繼續?(y/n)");
                jiXu = sc.next();
                if(jiXu.equals("y")) {   //繼續遊戲,跳出本次循環,進行下輪遊戲(下次循環)
                    continue;
                } else {   
                    if(jiXu.equals("n")) {    //退出遊戲,跳出循環
                        break;
                    } else {   //輸入的不是y或n,輸入報錯,退出遊戲
                        System.out.println("輸入錯誤,遊戲退出!");
                        break;
                    }
                }
            }
        } catch(InputMismatchException e) {
            System.out.println("輸入錯誤,遊戲退出!");
        } catch(Exception e) {
            System.out.println("其他錯誤。");
            e.printStackTrace();
        } finally {
            //提示遊戲已退出
            System.out.println("程序結束!");
            System.exit(0);   //退出系統
        }
    }
}

代碼僅供參考,謝謝。

2018/8/4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章