close

上週的Java課,老師交代要寫個猜數字小遊戲,才剛說完如何產生亂數,我已經手癢癢躍躍欲試了。

花了一天分析問題,最主要是怎麼比對數字並且給正確的AB值。

雖然有點醜、有點龜,但老闆跟你保證它絕對能玩!

朝2.0版邁進吧~!

 

Java小遊戲 - 猜數字

Java小遊戲 - 猜數字

螢幕快照 2014-09-24 上午1.28.34

螢幕快照 2014-09-24 上午1.30.32  

 

原始碼:

package com.sun.www;

import javax.swing.JOptionPane;

public class GuessNumber {

public static void main(String[] args){    //程式開始

int totalA=0;

int totalB=0;

String title="Welcome!"

int start=JOptionPane.showConfirmDialog(null, "歡迎來玩猜數字!", title, JOptionPane.YES_NO_OPTION);   //Google到這個語法,可以出現確認視窗

if(start==JOptionPane.NO_OPTION){

System.exit(0);

}

 

int a1 = (int)(Math.random()*9+1);         //產生亂數的api是Math.random(), *9因為有9個數字可猜, 加1因為讓所有數字落在1~9之間

int b1 = (int)(Math.random()*9+1);        //我定義電腦產生的三位數分別是a1, b1, c1

for (;a1==b1;){                                    //如果a1跟b1一樣,

b1=(int)(Math.random()*9+1);               //那就再產生一次b1

}

 

int c1 = (int)(Math.random()*9+1);

for (;c1==b1||c1==a1; ){                    //同上,這一段是老師課堂上教的

c1 = (int)(Math.random()*9+1);

}

System.out.print(a1);

System.out.print(b1);

System.out.println(c1);

 

guess:                            //這裡放guess因為google到這樣後面才能用continue來呼叫,重複跑

for(;totalA!=3;){             //當所有的A還不等於3的時候(就是還沒完全猜對的時候),就跑以下的程式

String a2 = JOptionPane.showInputDialog("請猜第一位數");  //我定義玩家輸入的三位數字分別為a2, b2, c2

String b2 = JOptionPane.showInputDialog("請猜第二位數");

String c2 = JOptionPane.showInputDialog("請猜第三位數");   //三位數字分開輸入,這個是大家反應最大的問題:太麻煩了,偏偏我還不知道怎麼一次比對三個數字

String q = a2+b2+c2;

 

int usera2 = Integer.parseInt(a2);

int userb2 = Integer.parseInt(b2);

int userc2 = Integer.parseInt(c2);

System.out.println("your 1st guess= "+q);

if (usera2==a1){                           //開始比對了 a2若跟a1一樣,TotalA自動加1

totalA = totalA+1;

} elseif(usera2==b1||usera2==c1){  //否則如果a2跟b1或c1一樣,TotalB自動加1。這裡用"||或"應該是OK的,因為數字不重複最多只會有1B

totalB = totalB+1;

 

if (userb2==b1){               //同上

totalA = totalA+1;

} elseif(userb2==a1||userb2==c1){

totalB = totalB+1;

 

if (userc2==c1){

totalA = totalA+1;

} elseif(userc2==a1||userc2==b1){

totalB = totalB+1;

System.out.println("Result "+totalA+"A"+totalB+"B");          //每猜完一次就秀出結果是幾A幾B

JOptionPane.showConfirmDialog(null, "Result "+totalA+"A"+totalB+"B", title, JOptionPane.YES_NO_OPTION);

if (totalA==3){                      //當totalA等於3,代表全猜中了,就跑下面的確認視窗

JOptionPane.showConfirmDialog(null, "猜中了!再玩一次?", title, JOptionPane.YES_NO_OPTION);

System.exit(0);         //確認完後自動結束程式

totalA=0;               //每猜完一次後,將計數器歸零 放在這邊好像有點怪,但的確是可以用

totalB=0;

continue guess;   //重新跑一次guess

 

}

}

 

 

arrow
arrow
    創作者介紹
    創作者 鈴木保齡球 的頭像
    鈴木保齡球

    Java程式學習手札

    鈴木保齡球 發表在 痞客邦 留言(1) 人氣()