JAVA --接口 练习[强行接口,刻意接口,虚伪接口] 再现棋牌类竞技场景

版权声明:虽然我依旧蒟蒻,但请你尊重我 :D   ——陈杉菜 https://blog.csdn.net/qq_44702847/article/details/89680739

JAVA --接口 练习[强行接口,刻意接口,虚伪接口] 再现棋牌类竞技场景

前面有篇博客讲到,上个星期的Java作业做了继承封装,弄得是象棋比赛呈现
然后,这个星期就是昨天补课,在原有基础上增加了接口的实现
老师原话(被我过滤成只实现接口了,我真猪)

哐哐哐(*********) 12:12:56
@全体成员
各位同学,本周日上午检查作业内容:
在昨天大作业的基础上,增加接口和多态的概念
仍然是周日上午各个小组演示自己的作业。

我们小组是在上次作业的基础上重新写了一个牌类竞技(主要原因是上节课看别的小组玩随机函数玩的很6,心痒痒嘻嘻嘻嘻)
先吹吹自己,main函数只有10行嘻嘻嘻嘻
有图有真相,10行main函数~
事实证明我的表达和理解方面都有点问题,氦
接下来看运行结果
运行结果1
运行结果2
这里是拿围棋举得例子
然后再看一下牌类吧,就是那个随机函数的,(小孩子玩的东西哈哈哈哈)
运行结果3
运行结果4
不知道有没有发现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("-------------------");
	}
}

肝泄阅读 [未完无续]

猜你喜欢

转载自blog.csdn.net/qq_44702847/article/details/89680739
今日推荐