为设计出游戏程序,需要将数字打乱,即随机放置整数1,2,...,8。为减少重复代码,学习Java的类继承,在下面的例15-1程序继承了例6-8的类DigitPuzzle_1。
1.随机数的发生
本游戏程序中使用了随机数,有几种方法可以发生随机数。
(1)用数学类发生随机数,不需要引入语句。因为方法
发生0~1的随机小数。结合使用数学类的“往零方向”取整数函数Math.floor(),语句
可以发生包括0与n-1及其之间的随机整数。
(2)用引入语句“import java.util.Random;”,使用Random类的函数nextInt()
发生包括0与n-1及其之间的随机整数。在这个类中还有nextDouble(),nextFloat()分别发生介于0与1之间的随机双精度和浮点小数。当然可以在语句(15.1.1)中用nextDouble()或nextFloat()替代Math.random()得到随机整数。使用(15.1.1)是因为在Math类库中没有类似于nextInt()能直接生成随机整数的相应方法。
2.实现界面设计
下面的例题程序中,方法generRandPerm(int n)实现随机放置整数0,1,...,n-1的一个排列。其中使用了布尔标志数组boolean[]flag=new boolean[n]使选择存放在数组rnum[]中的整数互不重复。(www.xing528.com)
【例15-1】随机放置整数1,...,8 DigitPuzzle界面设计。
运行程序结果如图15-1所示。
3.[编程说明]
(1)类的继承
在(15.1.2)的类的声明中,使用了继承类DigitPuzzle_1。从而,在类DigitPuzzle_1中使用的所有成员都被继承了。所以,没有与类DigitPuzzle_1重复的语句,包括没有通常的引入语句“import…”。
(2)函数repaint()的使用
函数repaint()的作用是再次调用Java内置paint()函数。通常在许多情况下,系统会自动调用这个方法,但为了确保调用,并强调此处需要重新画图时,常使用这个函数。
(3)(num[i]+1)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。