Java 实验报告 - 扔骰子游戏设计
本实验报告的主要设计目标是创建一个用于模拟掷骰子游戏的应用程序。该游戏的设计思路是:游戏者滚动 3 个骰子,每个骰子有 6 个面,分别代表 1,2,3,4,5,6 六个点。当骰子停下后,计算这 3 个骰子上表面的点数和。如果掷出的点数和大于或等于 11,则为大;如果点数和为小于等于 10,则为小。玩游戏时需要先押大小,押中则胜利,否则失败。
程序模块分析:
1. 界面设计:设计一个美观、便于游戏者使用的界面,包括三个骰子的显示、开始按钮、下注按钮和输赢记录表格。
2. 图形显示:使用Java的图形编程技术来实现骰子的显示和动画效果。
3. 产生三个随机数:使用Java的Random类来生成三个随机数,分别代表三个骰子的点数。
4. 输赢的条件判断:根据游戏规则,判断玩家的押注是否正确,并记录输赢结果。
5. 使用表格记录输赢:使用Java的表格控件来记录玩家的输赢结果。
主要对象/数据结构:
1. 界面设计:使用Java的Swing库来设计一个美观的界面,包括三个骰子的显示、开始按钮、下注按钮和输赢记录表格。
2. 图形显示:使用Java的图形编程技术来实现骰子的显示和动画效果。
3. 产生随机数的算法:使用Java的Random类来生成三个随机数,分别代表三个骰子的点数。
4. 输赢的条件判断:使用Java的逻辑运算符来判断玩家的押注是否正确,并记录输赢结果。
主要算法:
1. 产生随机数的算法:使用Java的Random类来生成三个随机数,分别代表三个骰子的点数。
2. 输赢的条件判断:使用Java的逻辑运算符来判断玩家的押注是否正确,并记录输赢结果。
具体代码:
public class MainFrame extends JFrame {
private JLabel lab1;
private JLabel lab2;
private JLabel lab3;
private JLabel labwin;
private JComboBox box;
private JTextField field;
public static void main(String[] args) {
MainFrame main = new MainFrame();
main.ShowUI();
}
public MainFrame() {
// 构造函数
lab1 = new JLabel();
lab2 = new JLabel();
lab3 = new JLabel();
field = new JTextField(10);
field.setEditable(false);
labwin = new JLabel("胜率");
}
}
public class MyThread extends Thread {
private int a;
private int b;
private int c;
private Random ran;
private boolean flag = true;
private JLabel lab1;
private JLabel lab2;
private JLabel lab3;
public MyThread(JLabel lab1, JLabel lab2, JLabel lab3) {
ran = new Random();
this.lab1 = lab1;
this.lab2 = lab2;
this.lab3 = lab3;
}
public void diceRun() throws InterruptedException {
a = ran.nextInt(6) + 1;
b = ran.nextInt(6) + 1;
c = ran.nextInt(6) + 1;
while (flag) {
lab1.setIcon(new ImageIcon("img//" + a + ".gif"));
lab2.setIcon(new ImageIcon("img//" + b + ".gif"));
lab3.setIcon(new ImageIcon("img//" + c + ".gif"));
Thread.sleep(100);
a = ran.nextInt(6) + 1;
b = ran.nextInt(6) + 1;
c = ran.nextInt(6) + 1;
}
}
@Override
public void run() {
try {
diceRun();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}