📄 roundplayer.java
字号:
public class RoundPlayer {
private String name = null;
private int index = 0;
private int color = 0;
private boolean over = false;
private int curMark = 0;
private int curRound = 0;
private int scoreCnt = 0;
private int undoRedo = 0;
private int oneRound = 0;
private TMark[] markAll = new TMark[TConst.PLAYER_MAX_MARK];
private TMark[] markDraw = new TMark[TConst.SUB_CURSOR];
public RoundPlayer(int index) {
this.index = index;
this.name = ""+(index+1);
this.initialize();
}
public RoundPlayer(int index, String name) {
this.index = index;
this.name = name;
this.initialize();
}
public RoundPlayer(int index, String name, int color) {
this.index = index;
this.name = name;
this.color = color;
this.initialize();
}
public void initialize() {
for (int i=0 ; i<TConst.PLAYER_MAX_MARK ; i++){
markAll[i] = new TMark();
}
for (int i=0 ; i<TConst.SUB_CURSOR ; i++){
markDraw[i] = new TMark();
markDraw[i].mkVal = TConst.getMarkFromPos(i);
}
curMark = 0;
curRound = 1;
scoreCnt = 0;
undoRedo = 0;
oneRound = 0;
over = false;
}
public void add(int mark, int multi, TParameter pm) {
if ( over )
return;
// result: 慡偰偺僨乕僞傪攝楍偵愊傓
markAll[curMark - undoRedo].mkVal = mark;
markAll[curMark - undoRedo].multi = multi;
int pos = TConst.getPosFromMark( mark );
pm.pos = pos;
// 慜偵恑傓
if ( undoRedo > 0 ) {
undoRedo--;
}else {
curMark++;
}
if ( curMark == TConst.PLAYER_MAX_MARK && undoRedo == 0) {
over = true;
}
// Round偺寁嶼
oneRound++;
if ( oneRound == TConst.ONE_ROUND_COUNT ) {
pm.drawUserChg = true;
curRound++;
} else if ( oneRound > TConst.ONE_ROUND_COUNT ) {
oneRound -= TConst.ONE_ROUND_COUNT;
}
// calculate丗揰悢偺寁嶼
if ( multi <= TConst.MULTIPLE_0 ) {
return;
}
if ( pos >= 0 ) {
int mul = markDraw[pos].multi;
if ( mul >= TConst.MULTIPLE_3 ) {
scoreCnt += mark*multi;
pm.drawScore = true;
} else {
pm.drawMark = true;
if ( (mul + multi) > TConst.MULTIPLE_3 ) {
scoreCnt += mark*(mul + multi - TConst.MULTIPLE_3);
pm.drawScore = true;
}
}
mul += multi;
markDraw[pos].multi = mul;
}
}
public void undo(TParameter pm) {
if ( oneRound <= 0 ) {
pm.drawUserChg = true;
if ( undoRedo < curMark ) {
oneRound = TConst.ONE_ROUND_COUNT;
}
return;
}
// 栠傞懳徾偺庢摼
undoRedo++;
if ( over ) {
over = false;
}
int mark = markAll[curMark - undoRedo].mkVal;
int multi = markAll[curMark - undoRedo].multi;
int pos = TConst.getPosFromMark( mark );
pm.pos = pos;
// 栠傞寁嶼傪峴偆
// Round偺寁嶼
oneRound--;
if ( oneRound == (TConst.ONE_ROUND_COUNT -1) ) {
curRound--;
}
// calculate丗揰悢偺寁嶼
if ( multi <= TConst.MULTIPLE_0 ) {
return;
}
if ( pos >= 0 ) {
int mul = markDraw[pos].multi;
if ( (mul - multi) >= TConst.MULTIPLE_3 ) {
scoreCnt -= mark*multi;
pm.drawScore = true;
} else {
pm.drawMark = true;
if ( mul > TConst.MULTIPLE_3 ) {
scoreCnt -= mark*(mul - TConst.MULTIPLE_3);
pm.drawScore = true;
}
}
mul -= multi;
markDraw[pos].multi = mul;
}
}
public void redo(TParameter pm) {
if ( undoRedo <= 0 ){
return;
}
// 抣偺庢傝弌偡
int mark = markAll[curMark - undoRedo].mkVal;
int multi = markAll[curMark - undoRedo].multi;
// 恑傓寁嶼
this.add(mark, multi, pm);
}
public String getResult(String winner) {
String result = "";
for (int i = 0; i < markDraw.length; i++) {
result += "[" + markDraw[i].mkVal + ":" + markDraw[i].multi + "]";
}
result = this.name + "丗" + scoreCnt + winner + "\n " + result;
return result;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public boolean isOver() {
return over;
}
public int getCurRound() {
return curRound;
}
public int getOneRound() {
return oneRound;
}
public void setOneRound(int oneRound) {
this.oneRound = oneRound;
}
public int getScoreCnt() {
return scoreCnt;
}
public int getStyleToDraw(int pos){
if ( pos < 0 || pos >= TConst.SUB_CURSOR) {
return -1;
}
return markDraw[pos].multi;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -