代码改变世界

骰子传奇

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();
  }

}
其运行结果如下:

在这个过程中最花时间的应该是在设计和完成代码上,因为对骰子了解不够深入,因此在设计上会遇到一些问题,思维还很局限;而代码方面最重要的一点就是因为对骰子的逻辑还不清晰,无法完成准确骰子的功能,特别是在多个骰子的情况下,最终在老师的提点之下还算完成了。经过这两次的作业我感觉写程序最终要的是逻辑清楚,才能够灵活运用编程语言。