您的位置:首页 > 编程语言 > Java开发

自己写的java保龄球记分

2018-08-10 16:00 169 查看
package com.java.bowlingscore1;
import java.util.Arrays;
public class Game {
int[] bowlingScore = new int[21]; //用来存放投掷击倒的数目
int ball=0;                       //数组下标
int score;//分数
int countframe=0;//记录当前是第几轮
boolean firstThrow=true;//判断是不是第一次投掷
public void add(int pins){//添加分数 将分数添加到数组中
bowlingScore[ball++] = pins;
judgefirstThrow(pins);          //调用下面的判断函数
}
/*firstthrow 默认为真由规则可以知道第一球如果全中就进入下一轮了,因此
* 首先判断添加的是不是为10,是就直接让countframe加1,不是就把firstthrow改为false,
*
*  第二次调用add的时候firstthrow为false投两次一轮结束 countframe加1,
*  将firstthrow改为true
**/

public void judgefirstThrow(int pins){
if(firstThrow){
if(pins==10){
countframe++;
}else{
firstThrow=false;
}
}else{
firstThrow=true;
countframe++;
}
}

public int getcurrentFrame(){ //返回这是第几轮
return countframe;
}

public int score(){       //返回当前轮的得分
return scoreForFrame(countframe);
}

/*
* 当前轮的计算方法循环当前轮的次数
* a[0]赋值第一次击球firstthrow 然后下标自增一;判断第一次都不是击倒了10个
* 规则 保龄球一轮两个球 第一个全中就是之前的分数+10+后面两次投掷的分数
* 补中 两次一共击倒10个 之前的分数加两次击倒的10分加后面一次的的分数
* */
public int scoreForFrame(int frame){
int score=0;
int ball=0;
for(int countframe=0;countframe<frame;countframe++){
int firstThrow = bowlingScore[ball++];
if(firstThrow==10){
score= score+10+bowlingScore[ball]+bowlingScore [ball+1];
}else{
int secondThrow = bowlingScore[ball++];
int framScore = firstThrow+secondThrow;
if(framScore==10){
score=framScore+bowlingScore[ball]+score;
}else{
score = framScore+score;
}
}
}
return score;
}
//测试
public static void main(String[] args) {
Game g = new Game();
g.add(1);
g.add(4);
g.add(4);
g.add(5);
g.add(6);
g.add(4);
g.add(5);
g.add(5);
g.add(10);
g.add(0);
g.add(1);
g.add(7);
g.add(3);
g.add(6);
g.add(4);
g.add(10);
g.add(2);
g.add(8);
g.add(6);
System.out.println(Arrays.toString(g.bowlingScore));
System.out.println(g.getcurrentFrame());
for(int i = 1;i<11;i++){
System.out.print(g.scoreForFrame(i)+  "  ");
}
}
}
自己没看书敲的,就是先看了书摆脱不了书上思路的影响了,下次还是应该先敲一遍在看书.做测试也实在函数里写个main函数做测试,根本就不是那啥敏捷开发那样写测试类,重构倒是有点感觉了 虽然没哟进行重构
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  保龄球 记分 java