骰子传奇
2017-10-11 22:48 conquered 阅读(478) 评论(1) 编辑 收藏 举报其实一开始看到这个题目的时候并没有觉得特别困难,一个骰子只要能够生成随机数就可以了,但是随着老师给我们讲了面向对象的思维,顿时觉得要把这个骰子做的尽善尽美我还差的很远。既然要面向对象就必须考虑到用户需求,应该考虑到这个骰子的多种使用的场景,并从这所有的场景中抽象出最一般的情况,是我们的骰子能够应对这些情况,从这我发现了编程的思维就是一种哲学。
经过一系列的思考,我认为,骰子能够转起来,并且能够多个转起来就能够满足大部分的要求,为此我做了如下设计
//骰子类
import java.util.Random;
import java.util.Scanner;
public class Die {
private int faceValue;
private int maxValue;
private int badnumber;
public void setMaxValue(int maxValue){
this.maxValue = maxValue;
}
public void rolling(){
this.faceValue = (int) (Math.random()*maxValue+1);
}
public void setBadNumber(int badnumber){
this.badnumber = badnumber;
/* int[] bad= new int[5];
Scanner in = new Scanner(System.in);
for(int i=0;i<bad.length;i++){
bad[i]=in.nextInt();
}*/
}
public void penalty(){
if(faceValue == badnumber) {
System.out.println("you will die");
}
}
public void outValue() {
System.out.println(faceValue);
}
}
//骰盅类
public class DiceCup {
private int dieNumber;
public void setDieNumber(int dieNumber){
this.dieNumber = dieNumber;
}
public void RollCup (){
int i;
for(i=0;i<dieNumber;i++){
Die die = new Die();
die.setMaxValue(6);
die.setBadNumber(4);
die.rolling();
die.outValue();
die.penalty();
}
}
}
//测试类
import java.util.Scanner;
public class Test {
public static void main(String [] args){
DiceCup cup1 = new DiceCup();
cup1.setDieNumber(6);
cup1.RollCup();
}
}
其运行结果如下:
在这个过程中最花时间的应该是在设计和完成代码上,因为对骰子了解不够深入,因此在设计上会遇到一些问题,思维还很局限;而代码方面最重要的一点就是因为对骰子的逻辑还不清晰,无法完成准确骰子的功能,特别是在多个骰子的情况下,最终在老师的提点之下还算完成了。经过这两次的作业我感觉写程序最终要的是逻辑清楚,才能够灵活运用编程语言。