首页 > 其他 > 详细

敏捷软件开发:原则、模式与实践 一次编程实践 保龄球记分代码

时间:2018-08-09 23:39:33      阅读:261      评论:0      收藏:0      [点我收藏+]

//类Score
package com.java.bowlingscore;
public class Scorer {
public void addThrow(int pins){
itsThrows[itsCurrentThrow++]=pins;
}
public int scoreForFrame(int theFrame){  
int score = 0;
ball = 0;
for(int currentFrame=0;currentFrame<theFrame;
currentFrame++){
if(strike()){
score +=10 + nextTwoBallsForStrike();
ball++;
}else if(spare()){
 score+=10+nextBallForSpare();
 ball+=2;
}else{
score +=twoBallsInFrame();
ball+=2;
}
}
return score;
}
private boolean strike(){
return itsThrows[ball]==10;
}
private boolean spare() {
return (itsThrows[ball]+itsThrows[ball+1]==10);
}
private int nextTwoBallsForStrike(){
return itsThrows[ball+1]+itsThrows[ball+2];
}
private int nextBallForSpare(){
return itsThrows[ball+2];
}
private int twoBallsInFrame(){
return itsThrows[ball]+itsThrows[ball+1];
}
private int ball;
private int[] itsThrows = new int[21];
private int itsCurrentThrow=0;
}

类Game

package com.java.bowlingscore;
public class Game {
public int score(){
return scoreForFrame(itsCurrentFrame);
}
public int getCurrentFrame(){        
return itsCurrentThrow;
}
public void add(int pins){  
 itsScorer.addThrow(pins);
 adjustCurrentFrame(pins);   
}
private void adjustCurrentFrame(int pins) { 
if(lastBallinFrame(pins)){
advanceFrame();
}else{
firstThrowInFrame = false;
}
}
private boolean lastBallinFrame(int pins) {
return strike(pins)||(!firstThrowInFrame);
}
private boolean strike(int pins) {
return (firstThrowInFrame&&pins==10);
}
private void advanceFrame() {
itsCurrentFrame = Math.min(10, itsCurrentFrame+1);
}
public int scoreForFrame(int theFrame){
return itsScorer.scoreForFrame(theFrame);
}
private Scorer itsScorer = new Scorer();
private boolean firstThrowInFrame=true;
private int itsCurrentFrame=1;
private int itsCurrentThrow=0;
}


一个晚上看着书一步一步敲出的,在代码重构方面学习到了不少,明天自己试着写一个.

敏捷软件开发:原则、模式与实践 一次编程实践 保龄球记分代码

原文:http://blog.51cto.com/10760006/2156983

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!