【发布时间】:2015-07-12 05:40:42
【问题描述】:
我正在创建一个单人纸牌游戏,它将卡片存储在 arraylist 中。 我想创建两种方法来检查玩家的移动和播放。
一个布尔函数,它通过 ArrayList 并检查是否有任何可能的移动。如果有可能,此方法返回 true。
第二个动作。它还通过 ArrayList 并检查是否有任何可能的移动,进行移动并停止工作。为了阻止它,我使用了 return true。但我认为这不是好方法。
而且两个函数很相似,代码是重复的。如何解决? 这个看起来是任何可能移动的方法应该返回布尔值还是可以移动的两个卡片数量(a和b)?
public boolean makeMove() {
int a = 0; //index of one card
int b; //index of second card
for (b = getSize() - 1; b > 0; b--) {
for (a = 0; a < b; a++) {
if (isCorrectMove(a, b)) {
swap(a, b); //makes move
return true; //exit after move
}
}
}
return false; //if there was no move
}
public boolean isPossibleAnyMove() {int a = 0; //index of one card
int b; //index of second card
for (b = getSize() - 1; b > 0; b--) {
for (a = 0; a < b; a++) {
if (isCorrectMove(a, b)) {
return true; //returns true if there was a move
}
}
}
return false; //if there was no move
}
【问题讨论】: