现在的位置: 首页 > 综合 > 正文

数据结构与算法分析-第一章Java类(05)

2013年05月26日 ⁄ 综合 ⁄ 共 1908字 ⁄ 字号 评论关闭

许多游戏都可以在滚动两枚骰子的基础上进行。定义一个Die类表示一枚有n个面的骰子。n的默认值是6.该类能滚动骰子,并测得其像上面的值。使用随机数来模拟骰子的滚动。并可依用户要求以图形界面来演示骰子的面。

代码实现:

核心:随机数的生成,使用了java.util.Math类的random,这个方法返回一个0-1之间的浮点数(包含0,不包含1),我们将其与10相乘得到一个0-10(不含10)之间的整数,然后让该整数与骰子的面数取余数后加1,得到的就是一个1-6(骰子面数)的数字

package com.crazycoder2010.datastructure.ch01;

public class Die {
	private int faces;// 总共的面数
	private int number;// 朝上的数字

	public Die(int faces) {
		super();
		this.faces = faces;
	}

	public void die() {
		this.number = (int) (Math.random() * 10)%faces+1;
	}

	public int getNumber() {
		return number;
	}

	public int getFaces() {
		return faces;
	}
}

测试类:图形界面

package com.crazycoder2010.datastructure.ch01;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class DieTest extends JFrame {
	private static final long serialVersionUID = 3757821367773739338L;
	public DieTest(){
		setTitle("掷骰子游戏");
		setSize(800, 200);
		setResizable(false);
		this.getContentPane().setLayout(new FlowLayout());
		this.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		final JLabel label = new JLabel();
		this.getContentPane().add(label);
		JButton throwButton = new JButton("掷骰子");
		this.getContentPane().add(throwButton);
		JLabel dieLabel = new JLabel("骰子A:");
		final JLabel dieValue1 = new JLabel("");
		JLabel dieLabe2 = new JLabel("骰子B:");
		final JLabel dieValue2 = new JLabel("");
		this.getContentPane().add(dieLabel);
		this.getContentPane().add(dieValue1);
		this.getContentPane().add(dieLabe2);
		this.getContentPane().add(dieValue2);
		throwButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				Die die1 = new Die(6);
				die1.die();
				Die die2 = new Die(6);
				die2.die();
				dieValue1.setText(die1.getFaces()+"面,点数:"+die1.getNumber());
				dieValue2.setText(die2.getFaces()+"面,点数:"+die2.getNumber());
			}
		});
		
	}
	public static void main(String[] args) {
		new DieTest().setVisible(true);
	}
}

运行结果截图:

抱歉!评论已关闭.