java摇两个色子代码_摇个骰子 - mokuang - 博客园
分析要求
一開始思考如何實現骰子類的時候,感覺只需要實現得到一個1到6的隨機數的方法,這樣看來似乎不是一件困難的事,原計劃半個小時內完成,然而在老師的指導下,漸漸發現自己代碼中不規范的地方所在。現在思考的問題變成,如何實現一個規范的骰子類,代碼中變量的定義是否規范,是否將骰子獨立成一個可重復調用,適應一般情況的類,而不是當條件變更的時候還要進行反復修改,這就是老師所要求要學會面向對象的思考。
設計實現
如圖所示的各類間關系,當骰子數只有一個的時候,直接使用Dice類的方法;當骰子數不只一個的時候,通過使用骰盅Cup類調用Dice類的方法。
代碼說明
1.Dice.java
//骰子類的實現
public class Dice {
private int faceValue; //定義骰子面值
public Dice(){
faceValue = (int)(Math.random() * 6) + 1; //獲得一個1-6的隨機數
}
public void roll(){ //搖骰子
faceValue = (int)(Math.random() * 6) + 1;
}
public void unnormalroll(){ //搖不出4的骰子
while(faceValue==4){
faceValue = (int)(Math.random() * 6) + 1;
}
}
public int getValue(){ //獲得骰子數值
return faceValue;
}
}
2.Cup.java
//骰盅類的實現:可以放入多個骰子。
public class Cup {
private int num=1;// num記錄骰子的個數,默認為一個
private Dice dice[]; //聲明骰子數組
public Cup(){ //往骰盅放入一個骰子
dice = new Dice[num];
}
public Cup(int num){ //往骰盅放入多個骰子
this.num = num;
dice = new Dice[num];
}
public void roll(){ //搖動骰盅
int i;
for(i=0;i
dice[i] = new Dice();
}
}
public int getValue(){ //一個骰子開盅看大小,并返回該數值
return (dice[0].getValue());
}
public void getValues(int a[]){ //多個骰子開盅看大小。并將每個骰子的數值通過整型數組傳出
int i;
for(i = 0;i < num;i++)
a[i]=dice[i].getValue();
}
public int getTotal(){ //返回多個骰子的總數值
int sum=0,i;
for(i=0;i
sum += dice[i].getValue();
}
return sum;
}
}
3.Player.java
//Player1進行測試
import java.util.Scanner;
public class Player1 {
public static void main(String[] args){
int i,myDice,normal; //myDice定義骰子的個數,normal標記是否使用正常骰子
Scanner input = new Scanner(System.in);
System.out.println("你要幾個骰子?");
myDice = input.nextInt(); //從鍵盤讀入骰子數量
if(myDice==1){//一個骰子的情況
System.out.println("使用搖不出4的骰子?Yes--0,No--1"); //特殊骰子情況
normal = input.nextInt();
Dice dice = new Dice();
if(normal==1) //搖骰子
dice.roll();
else
dice.unnormalroll(); //特殊骰子
System.out.println("You get "+dice.getValue());//輸出所搖數值
}else{//多個骰子的情況
int[] myValue = new int[myDice];
Cup dice2 = new Cup(myDice);
dice2.roll();
dice2.getValues(myValue); //通過myvalue數組獲取每個骰子的大小
for(i = 0;i < myDice;i++) //輸出每個骰子的大小
System.out.println("第 "+(i+1)+"個骰子為:"+myValue[i]);
System.out.println("骰子總數為"+dice2.getTotal());//輸出總大小
}
}
}
測試運行
1.一個正常骰子
2.一個特殊骰子
3.多個骰子
小結
總的來看,通過反復的修改,調試,最后用了將近兩個小時。對比自己預估的時間,在要求分析和編寫代碼所用的時間較多,仔細思考,編寫代碼的不熟練也消耗了大部分時間,以及自己編寫代碼前,沒有思考好各個類間的關系,導致多次大面積重改代碼浪費許多時間。現在想想,寫代碼前先搞清楚類間關系,畫好類圖,養成這樣的好習慣,對整體效率的提升有很大的意義。
總結
以上是生活随笔為你收集整理的java摇两个色子代码_摇个骰子 - mokuang - 博客园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西门子PLC 工具下载-博途等
- 下一篇: Java+MySQL共享单车管理系统的设