【发布时间】:2016-09-30 00:05:27
【问题描述】:
基本上我有一个棋盘,我想让在不在边缘的方格上迈出第一步是非法的。框架是一个 5x5 的游戏板,在点击时会根据轮到谁来改变颜色。
我的问题:当我启动程序时,它并没有告诉我我在中间按下的按钮是非法动作。谁能解释为什么代码不起作用?
这里是一些示例代码:
package fgame;
import java.awt.Color;
import javax.swing.JOptionPane;
public class FooFrame extends javax.swing.JFrame {
private Color whoseTurn = Color.BLACK;
private Color playerOneTurn = Color.BLACK;
private Color playerTwoTurn = Color.ORANGE;
private String playerOne = "You";
private String playerTwo;
private int PlayerOneCount = 21;
private int PlayerTwoCount = 21;
public FooFrame() {
initComponents();
setSize(800,800);
setLocationRelativeTo(null);
humanOrAI();
movesLeft();
endGame();
}
private void humanOrAI()
{
Object[] options = {"Other Human","Computer (EASY)","Computer (HARD)"};
Object input = (Object) JOptionPane.showInputDialog(null,
"Who is your opponent?",
"CHOOSE YOUR FATE!",JOptionPane.QUESTION_MESSAGE,
null,options,
options[0]);
if (input == options[0]){
playerTwo = (String.valueOf(options[0]));
}
else if (input == options[1]){
playerTwo = (String.valueOf(options[1]));
}
else {
playerTwo = (String.valueOf(options[2]));
}
}
private void determineWhoseTurn()
{
if (whoseTurn.equals(playerOneTurn))
{
whoseTurn = Color.orange;
}
else
{
whoseTurn = Color.BLACK;
}
}
public void movesLeft()
{
if (whoseTurn.equals(playerOneTurn))
{
jLabel1.setText(" " + playerOne + " have " + PlayerOneCount+ " pieces left "
+ " "+ playerTwo+ " has " + PlayerTwoCount+ " pieces left");
PlayerOneCount--;
}
else
{
jLabel1.setText(" " + playerOne + " have " + PlayerOneCount+ " pieces left "
+ " "+ playerTwo+ " has " + PlayerTwoCount+ " pieces left");
PlayerTwoCount--;
}
}
//How do I count the amount of black and orange squares?
public void endGame()
{
int black = 0;
int orange = 0;
if (whoseTurn.equals(playerOneTurn))
{
black++;
}
else
{
orange++;
}
if (PlayerTwoCount <= 0 || PlayerOneCount <= 0)
{
JOptionPane.showMessageDialog(rootPane, "Game Over!" + " black: "+ black
+ "orange: "+ orange);
}
}
public void validStartingPoint()
{
Object illStartPoint[] = {B2,B3,B4,C2,C3,C4,D2,D3,D4};
while (PlayerOneCount == 21 || PlayerTwoCount == 21)
if (whoseTurn.equals(illStartPoint[0-8]))
{
JOptionPane.showMessageDialog(rootPane, "Not a valid move! Start "
+ "from an edge square!");
} else
{
break;
}
}
我的问题与方法validStartingPoint() 有关。但我也有一个关于 endGame() 的问题,它放在上面的评论中。我所有的 JBUTTONS 中都调用了所有方法
另外,我知道这可能与 while 循环无关。我不是世界上最好的程序员。
【问题讨论】:
-
投票结束,因为不清楚您的要求。显然,在代码中使用循环很好,我在这里看不到任何其他问题。我什至没有看到对您未预料到的情况的描述。
-
您的主要问题是微不足道的:while 循环当然适用于 Swing 应用程序,但您的基本问题不是而且实际上是不完整的。您没有告诉我们您的代码遇到的问题,也没有发布我们可以运行的任何内容。请考虑改进此问题并提供minimal reproducible example(不要在链接中提醒您),我们将有更好的能力找到答案。
-
@HovercraftFullOfEels 我添加了更多代码
-
@HovercraftFullOfEels 没有建议“更多代码”,而是 MCVE!请关注并阅读链接。看到的代码需要导入和
main(String[])方法才能将其显示在屏幕上,然后才能称为 MCVE。 -
我无法运行甚至编译你的代码,所以我很茫然。