java大神解答
如何用反射机制来使下面这个游戏(炸金花)作弊取胜
游戏如下
牌的程序如下
public class Poker implements Comparable<Poker>{
private Suit suit;
private Point point;
public Poker(Suit suit, Point point) {
this.suit = suit;
this.point = point;
}
public Suit getSuit() {
return suit;
}
public Point getPoint() {
return point;
}
@Override
public String toString() {
return suit.desc + point.toString();
}
@Override
public int compareTo(Poker o) {
return -(point.getNum() - o.getPoint().getNum());
}
public enum Suit {
SPADE(""), CLUB(""), HEART(""),DIAMOND("");
String desc;
Suit(String desc) {
this.desc = desc;
}
}
public enum Point {
_2(2), _3(3), _4(4), _5(5), _6(6), _7(7), _8(8), _9(9), _10(10), J(11), Q(12), K(13), A(14);
Point(int num) {
this.num = num;
}
int num;
public int getNum(){return num; }
}
}
玩家的程序如下
public interface Player {
/**
* 实现这个方法,返回你的姓名,eg:王尼
* @return
*/
String getName();
/**
* 实现这个方法,返回你的编号
* @return
*/
String getStuNum();
default String getInformation() {
return getName() + getStuNum();
}
/**
* 游戏开始,告诉你玩家数量和管理员
*
* @param manager 荷官
* @param totalPlayer 总玩家人数
*/
void onGameStart(Manager manager, int totalPlayer);
/**
* 下注
*
* @param time 第几局
* @param round 每局游戏会有多轮,当前轮数,最多会有5轮
* @param lastPerson 还没有弃牌的玩家数
* @param moneyOnDesk 桌上的筹码数量
* @param moneyYouNeedToPayLeast 你本次最小需要下注的数量,
* @param pokers 你的手牌,三张
* @return 你的下注数量,小于这个最小下注数量或者大于最小下注数量的三倍,都会被当作弃牌处理。
*/
int bet(final int time, final int round, final int lastPerson, final int moneyOnDesk,
final int moneyYouNeedToPayLeast,
List<Poker> pokers) throws IllegalAccessException, NoSuchFieldException, ClassNotFoundException;
/**
void onResult(int time, boolean isWin, List<Poker> pokers);
}