以下是我的想法,分离出两个对象,一个是游戏窗口本身对象,另一个是骰子对象,两者是组合关系。因为游戏中我们可以更换骰子,因此从面对象来考虑,两者互为组合关系。
以下是我的代码设计:- public class DiceGame {
- private Dice dice1;
- private Dice dice2;
- public DiceGame(Dice dice1, Dice dice2) {
- this.dice1 = dice1;
- this.dice2 = dice2;
- }
- // 更换骰子(比如骰子在游戏中找不到,需要更换一个)
- public void setDice1(Dice dice1) {
- this.dice1 = dice1;
- }
- public void setDice2(Dice dice2) {
- this.dice2 = dice2;
- }
- public void gameStar() {
- System.out.println("游戏开始,掷下两个骰子");
- dice1.roll();
- dice2.roll();
- System.out.println("两个骰子的值分别为:" + dice1.getFaceValue() + "、"
- + dice2.getFaceValue());
- int value = dice1.getFaceValue() + dice2.getFaceValue();
- if (value == 7)
- System.out.println("您赢啦");
- else
- System.out.println("很抱歉,您输了");
- }
- public static void main(String[] args) {
- Dice dice1 = new Dice();
- Dice dice2 = new Dice();
- DiceGame game = new DiceGame(dice1, dice2);
- game.gameStar();
- System.out.println("骰子1掉下水道去了(可能是马路上玩的)");
- Dice dice3 = new Dice();// 拿来一个新骰子
- game.setDice1(dice3);// 在游戏中使用新骰子
- // 游戏再次开始
- game.gameStar();
- }
- }
复制代码- package cn.zuhe;
- import java.util.Random;
- // 骰子对象
- public class Dice {
- private int faceValue = 1;// 筛子的值
- Random r = new Random();
- // 获取骰子的值
- public int getFaceValue() {
- return faceValue;
- }
- // 掷骰子的方法
- public void roll() {
- faceValue = r.nextInt(6) + 1;
- }
- }
复制代码 |