【发布时间】:2018-08-22 06:42:44
【问题描述】:
我正在 Android Studio 上开发游戏。
游戏有 12 个方块和 12 个符号(在本例中为“0”零)。 当您按下新游戏按钮时,将启动第一关。总共有12个级别。 (当前水平)。 几秒钟后,屏幕上会随机显示一个符号,然后消失。 (根据每个级别输入的数量增加1,例如,级别1:必须猜测1个符号,级别2:必须猜测2个符号)直到第12级。
到目前为止,它可以正常工作。
现在我需要解决我的代码以接收用户的输入,检查是否与显示的正确块预览匹配。 如果是则进入下一个级别(重复清除块的循环,显示随机符号,再次清除,等待用户输入)直到第 12 级。 如果不显示失败消息并再次显示新游戏按钮。
我创建了这个 Arraylist 但它不能正常工作,现在它的条件总是负面的(即使右块被按下)“失败!再试一次!”它正在显示的消息。
我运行调试器并显示: List tempList = new ArrayList ();
tempList:size 12
for (int i = 0; i < curLevel; i++) { curLevel size:13
tempList.add ( buttons.get ( i ) ); buttons size:12
if (tempList.contains ( v.getTag () )) { tempList size 12
Its not matching the condition. –
这里是值:
static int MAXLEVELS = 12;
static String SUCCESS_SYMBOL = "0";
curLevel = 1;
curGuess = 0;
有什么建议让它发挥作用吗?甚至让这段代码更整洁?
private void buttonLogic(View v) {
List<Button> tempList = new ArrayList<> ();
for (int i = 0; i <= curLevel; i++) {
if (i!= MAXLEVELS)
tempList.add ( buttons.get ( i ) );
else
break;
}
if (tempList.contains ( v.getTag () )) {
curGuess++;
checkWin ();
} else {
lostGame ();
}
}
private void lostGame () {
Toast.makeText(this, "Fail! Try Again", Toast.LENGTH_SHORT).show();
disableButtons();
b_new.setVisibility(View.VISIBLE);
}
private void checkWin() {
if (curGuess == curLevel) {
disableButtons ();
if (curLevel == 12) {
Toast.makeText ( this, "Congratulations! You Won", Toast.LENGTH_SHORT ).show ();
b_new.setVisibility ( View.VISIBLE );
} else {
curGuess = 0;
curLevel++;
generateButtons ( curLevel );
}
}
}
还有一个来自之前代码的图像。干杯。
【问题讨论】:
-
调试您的代码,在您尝试验证内容时检查 tempList 包含的内容,并在您在列表中输入该值时检查 v.getTag() 究竟包含什么
-
很难说,尤其是因为我们不知道
v.getTag()将返回什么或tempList将实际包含什么。如果这是您的实际代码,那么如果数据设置正确(我们不知道),tempList.contains ( v.getTag () )应该可以工作。最好使用调试器单步执行您的代码,尤其是检查tempList的内容以及您从v.getTag()获得的内容 - 然后检查两个对象的equals()方法在做什么。 -
我运行调试器并显示: List
-
if (tempList.contains ( v.getTag () ))将其更改为if (tempList.contains ( v)) -
请不要通过 cmets 提供更多信息。始终编辑和更新您的问题!
标签: java android arrays if-statement arraylist