JAVA --接口 练习[强行接口,刻意接口,虚伪接口] 再现棋牌类竞技场景
前面有篇博客讲到,上个星期的Java作业做了继承封装,弄得是象棋比赛呈现
然后,这个星期就是昨天补课,在原有基础上增加了接口的实现
老师原话(被我过滤成只实现接口了,我真猪)
哐哐哐(*********) 12:12:56
@全体成员
各位同学,本周日上午检查作业内容:
在昨天大作业的基础上,增加接口和多态的概念
仍然是周日上午各个小组演示自己的作业。
我们小组是在上次作业的基础上重新写了一个牌类竞技(主要原因是上节课看别的小组玩随机函数玩的很6,心痒痒嘻嘻嘻嘻)
先吹吹自己,main函数只有10行嘻嘻嘻嘻
有图有真相,
事实证明我的表达和理解方面都有点问题,氦
接下来看运行结果
这里是拿围棋举得例子
然后再看一下牌类吧,就是那个随机函数的,(小孩子玩的东西哈哈哈哈)
不知道有没有发现bug(我说的bug不是围棋那个,围字,是在牌类那里:C),是因为用了接口产生的
先
不
改
先
放
出
来
总结一下这星期丰富了棋类竞技的棋的种类,因为是在上理论课之前改的,所以最该用接口的地方选择使用抽象类,在里面加了抽象类方法,,,
因为检查作业和开始改代码的时间很紧凑,中间还要去完成游泳作业,上课,开会啥啥的(其实都是借口,就是懒),但是在晚上脑回路最清奇的时候改完了抽象类,上完接口我感觉自己好崩溃,
不!我舍不得!我决定把它留着!
再然后,其实代码本身十分不成熟,改一处动全身,一发不可收,有全错无法复原的风险。
然,没有备份的习惯,错了就得全部重新打,
嗯
生活 代码就是这么可恶,
没关系
没什么是打一个下午代码解决不了的,如果有,打两个下午就完事了
然后放一下总的框架吧
那个最下面的SportPalyer类是因为本来想做球类竞技的,模仿别的小组呀嚯嚯嚯,但是后来没弄那个,做了卡牌类的,就没用上,打算下次弄所以留下它了
接下来讲不足的地方,
- 没有用到多态
- 接口实现的太敷衍
简单致命,没态度,该批评
因此要加油啊!
下周五一放假把多态弄清楚点,试着实现一下
最后附上XQcpt的代码吧,可以借鉴一下(记得对照框架来,毕竟不全,且没注释),但是写的不好不能。我
package Competitions;
import ChessGame.Piece;
import People.PiecePLayer;
public class XQcpt extends Competition{
private PiecePLayer a = new PiecePLayer("Ao",1101,19,false,0,"棋协十三级","12432274391");
private PiecePLayer c = new PiecePLayer("Cai",1105,19,true,0,"棋协九级","10005678111");
private PiecePLayer ch = new PiecePLayer("Chen",1102,18,true,2,"棋协十一级","1929201438");
private PiecePLayer w = new PiecePLayer("Wang",1109,16,true,6,"棋协十级","10843837211");
private PiecePLayer x = new PiecePLayer("Xu",1106,17,true,4,"棋协十四级","19382839021");
/**
* @return the a
*/
public PiecePLayer getA() {
return a;
}
/**
* @param a the a to set
*/
public void setA(PiecePLayer a) {
this.a = a;
}
/**
* @return the c
*/
public PiecePLayer getC() {
return c;
}
/**
* @param c the c to set
*/
public void setC(PiecePLayer c) {
this.c = c;
}
/**
* @return the ch
*/
public PiecePLayer getCh() {
return ch;
}
/**
* @param ch the ch to set
*/
public void setCh(PiecePLayer ch) {
this.ch = ch;
}
/**
* @return the x
*/
public PiecePLayer getX() {
return x;
}
/**
* @param x the x to set
*/
public void setX(PiecePLayer x) {
this.x = x;
}
/**
* @return the w
*/
public PiecePLayer getW() {
return w;
}
/**
* @param w the w to set
*/
public void setW(PiecePLayer w) {
this.w = w;
}
private PiecePLayer p1,p2;
private int i=0;
public PiecePLayer choosePlayerRandomly(int sum) {
return ChoosePlayerRandomly(sum);
}
private PiecePLayer ChoosePlayerRandomly(int sum) {
int index =(int)(Math.random()*sum)%sum+1;
if(index==1) return a;
else if(index==2)return c;
else if(index==3)return ch;
else if(index==4)return w;
else return x;
}
public void choosePlayer(int tempID) {
ChoosePlayer(tempID);
}
private void ChoosePlayer(int tempID) {
if(tempID == a.getId()) {
if(i==0) {
p1=a;
i=1;
System.out.println("选择红方棋手: "+ p1.getName());
}
else {
p2=a;
System.out.println("选择黑方棋手: "+ p2.getName());
}
}
else if(tempID==c.getId()) {
if(i==0) {
p1=c;
i=1;
System.out.println("选择红方棋手: "+ p1.getName());
}
else {
p2=c;
System.out.println("选择黑方棋手: "+ p2.getName());
}
}
else if(tempID==ch.getId()) {
if(i==0) {
p1=ch;
i=1;
System.out.println("选择红方棋手: "+ p1.getName());
}
else {
p2=ch;
System.out.println("选择黑方棋手: "+ p2.getName());
}
}
else if(tempID==w.getId()) {
if(i==0) {
p1=w;
i=1;
System.out.println("选择红方棋手: "+ p1.getName());
}
else {
p2=w;
System.out.println("选择黑方棋手: "+ p2.getName());
}
}
else if(tempID ==x.getId()) {
if(i==0) {
p1=x;
i=1;
System.out.println("选择红方棋手: "+ p1.getName());
}
else{
p2=x;
System.out.println("选择黑方棋手: "+ p2.getName());
}
}
else {
System.out.println("输入ID名称错误,将随机选择棋手进行比赛:");
if(i==0) {
p1 = choosePlayerRandomly(5);
i=1;
System.out.println("随机选择红方棋手:"+p1.getName());
}
else {
p2 = choosePlayerRandomly(5);
while(p2 == p1) p2 = choosePlayerRandomly(5);
System.out.println("随机选择黑方棋手:"+p2.getName());
}
}
}
String[] c1= {"炮八平五","马八进七","车九进一","车九平四","车四进六",
"兵三进一","马二进三","马三进四","马四进三","马三进二",
"车一进一","车一平八","车八进七","车四进一","马二退四",
"车八平四","车四进一","炮二平四"};
String[] c2= {"炮2平5","马2进3","车1平2","士6进5","马8进9","车2进6",
"车2平3","兵3进1","炮8平6","炮6平8","兵3进1","车9进1",
"兵3平4","士5退6","车9平6","士4进5","将5平6"};
public void competition() {
Competition();
}
private void Competition() {
Piece P = Piece.RedS;
for(i=1;i<=14;i++) {
String tempP = P.getName(i);
System.out.println(tempP+" 就位,");
}
System.out.println("双方棋子就位,开局!");
System.out.println("-------------------");
for(i=0;i<c1.length && i<c2.length;i++) {
System.out.print(i+1+" ");
System.out.println(c1[i]+" "+c2[i]);
}
if (c1.length>c2.length) {
p1.setScore(p1.getScore()+2);
System.out.println(i+1+" "+c1[i]);
System.out.println("红方: "+p1.getName()+"胜!");
}
else {
p2.setScore(p2.getScore()+2);
System.out.println(i+1+" "+c2[i]);
System.out.println("黑方: "+p2.getName()+"胜!");
}
System.out.println("比赛结束,选手的得分更新为:");
System.out.println(p1.getName()+"的得分: "+p1.getScore()+" "+p2.getName()+"的得分: "+p2.getScore());
System.out.println("-------------------");
}
}
肝泄阅读 [未完无续]