当前位置: 首页 > news >正文

网站色调选择/湖南平台网站建设设计

网站色调选择,湖南平台网站建设设计,做网站加盟,网站建设工作室 杭州闲来无事,看到论坛中一个帖子谈到 《OO 还是 procedural 小程序的设计》[url]http://www.iteye.com/topic/1112383[/url] 尝试用OO的方式写了一下(真的是太闲了 :cry: ):[quote] 保龄球基本规则: 每一盘可以有10 个frame ,从1-9 …
闲来无事,看到论坛中一个帖子谈到
《OO 还是 procedural 小程序的设计》[url]http://www.iteye.com/topic/1112383[/url]
尝试用OO的方式写了一下(真的是太闲了 :cry: ):

[quote]
保龄球基本规则: 每一盘可以有10 个frame ,从1-9 个 frame 是有两次击球机会,第10个 有可能有3次机会。
如果一个frame第一个球全中(strike) 那就 进入 下一个frame, 并把下两次击球的得分算为这次的bonus。
如果一个frame 没有全中,就打这个frame的第二个球, 如果补了个全中(Spare),那就把下一次击球的得分算为bonus。
如果一个frame既没有全中,也没有补全中,那就击倒几个瓶算积分。
第10个frame,如果是全中,或者补中 就有3次击球机会,并把三次击球总共打倒的瓶数算为这个frame的分数。
[/quote]

[img]http://dl.iteye.com/upload/attachment/523538/181cced5-dd28-33d2-b3a8-f20f6e57e850.png[/img]

public interface IFrame {

int BALLS = 10;

/** 当前Frame以及之后的总分 */
int totalScore();

/** 当前Frame得分 */
int frameScore();

/** 当前Frame可贡献的Spare奖励 */
int getSpareBonus();

/** 当前Frame可贡献的Strike奖励 */
int getStrikeBonus();

IFrame nextFrame();

void setNextFrame(IFrame frame);

}


public abstract class AbstractFrame implements IFrame {

private IFrame nextFrame;

@Override
public int totalScore() {
return frameScore() + nextFrame().totalScore();
}

@Override
public IFrame nextFrame() {
return nextFrame;
}

@Override
public void setNextFrame(IFrame frame) {
nextFrame = frame;
}
}


public class StrikeFrame extends AbstractFrame implements IFrame {

@Override
public int frameScore() {
return BALLS + nextFrame().getStrikeBonus();
}

@Override
public int getSpareBonus() {
return BALLS;
}

@Override
public int getStrikeBonus() {
return BALLS + nextFrame().getSpareBonus();
}
}


public class SpareFrame extends AbstractFrame implements IFrame {

protected int[] hits;

public SpareFrame(int[] hits) {
this.hits = hits;
}

@Override
public int frameScore() {
return BALLS + nextFrame().getSpareBonus();
}

@Override
public int getSpareBonus() {
return hits[0];
}

@Override
public int getStrikeBonus() {
return BALLS;
}

}


public class NormalFrame extends AbstractFrame implements IFrame {

protected int[] hits;

public NormalFrame(int[] hits) {
this.hits = hits;
}

@Override
public int frameScore() {
return hits[0] + hits[1];
}

@Override
public int getSpareBonus() {
return hits[0];
}

@Override
public int getStrikeBonus() {
return hits[0] + hits[1];
}

public void setHits(int[] hits) {
this.hits = hits;
}

}


public abstract class AbstractFinalFrame extends AbstractFrame implements IFrame {

@Override
public int totalScore() {
return frameScore();
}

@Override
public IFrame nextFrame() {
throw new RuntimeException("不支持此方法!");
}
}


public class FinalStrikeFrame extends AbstractFinalFrame implements IFrame {

protected int[] hits;

public FinalStrikeFrame(int[] hits) {
this.hits = hits;
}

@Override
public int frameScore() {
return BALLS + hits[1] + hits[2];
}

@Override
public int getSpareBonus() {
return BALLS;
}

@Override
public int getStrikeBonus() {
return BALLS + hits[1];
}

}


public class FinalSpareFrame extends AbstractFinalFrame implements IFrame {

protected int[] hits;

public FinalSpareFrame(int[] hits) {
this.hits = hits;
}

@Override
public int frameScore() {
return BALLS + hits[2];
}

@Override
public int getSpareBonus() {
return hits[0];
}

@Override
public int getStrikeBonus() {
return BALLS;
}

public void setHits(int[] hits) {
this.hits = hits;
}

}


public class FinalNormalFrame extends AbstractFinalFrame implements IFrame {

protected int[] hits;

public FinalNormalFrame(int[] hits) {
this.hits = hits;
}

@Override
public int frameScore() {
return hits[0] + hits[1];
}

@Override
public int getSpareBonus() {
return hits[0];
}

@Override
public int getStrikeBonus() {
return hits[0] + hits[1];
}

public void setHits(int[] hits) {
this.hits = hits;
}

}


public class FrameFactory {

static IFrame buildFrame(int[] hits) {
if (hits[0] == IFrame.BALLS) return new StrikeFrame();
if (hits[0] + hits[1] == IFrame.BALLS) return new SpareFrame(hits);
return new NormalFrame(hits);
}

static IFrame buildFinalFrame(int[] hits) {
if (hits[0] == IFrame.BALLS) return new FinalStrikeFrame(hits);
if (hits[0] + hits[1] == IFrame.BALLS) return new FinalSpareFrame(hits);
return new FinalNormalFrame(hits);
}

public static IFrame buildFrames(int[][] hitCounts) {
if (hitCounts == null || hitCounts.length == 0) throw new IllegalArgumentException("参数无效!");
IFrame last = buildFinalFrame(hitCounts[hitCounts.length - 1]);
for (int i = hitCounts.length - 2; i >= 0; i--) {
IFrame frame = buildFrame(hitCounts[i]);
frame.setNextFrame(last);
last = frame;
}
return last;
}
}


public class Main {
public static void main(String[] args) {
int[][] hitCounts = new int[][] { { 10, 0 }, { 7, 2 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } };
IFrame head = FrameFactory.buildFrames(hitCounts);
System.out.println(head.totalScore());
}
}
http://www.jmfq.cn/news/5036239.html

相关文章:

  • 福建省网站建设/友情链接检测
  • 可以做动画的网站有哪些/seo顾问服务公司
  • 网站制作基础教程/随机关键词生成器
  • 简易手机站/统计网站访问量
  • php做的一个网站/海外seo是什么
  • 无锡网站建设 微信/私域运营软件
  • 模板展示网站源码/网站排名查询工具有哪些
  • seo官网优化/郑州seo优化顾问
  • 免费com网站域名注册/18款禁用看奶app入口
  • 专做网站/八大营销模式有哪几种
  • 广西防城港建设厅网站/网站开发培训
  • eclipse 网站开发/石家庄seo顾问
  • 公司做网站的/宁波网站推广哪家公司好
  • 网站监测/免费发布广告
  • 网站建设需要哪些人/怎么做一个公司网站
  • 攀枝花网站开发/免费建站系统哪个好用吗
  • 新品发布会的目的和意义/宁波抖音seo搜索优化软件
  • asp.net网站备份/网络营销相关的岗位有哪些
  • 可不可以用帝国cms做企业网站/seo咨询河北
  • 易语言怎么做点击按钮打开网站/seo主要做什么工作内容
  • 自己做的网站给人攻击了怎么办/南京做网站的公司
  • 织梦系统网站搭建教程/sem优化怎么做
  • 厦门 外贸商城网站制作/seo云优化软件
  • 建设海外网站/互联网优化是什么意思
  • vip解析网站怎么做的/推广网站要注意什么
  • 个人建站的app哪里有卖/网络广告营销经典案例
  • 大连开发区网站/百度爱采购官网首页
  • 福建省建设人才与科技发展中心网站首页/百度广告联盟怎么加入
  • 唐卡装饰集团 一站式超级体验店/网站开发的一般流程
  • 成都企业网站优化/seo观察网