Java 西蒙说程序问题
Java Simon Says program issues
这是我第一次 post 访问此网站,所以如果我违反了规则或我不知道的事情,我将深表歉意。也就是说,我的老师指派我制作一个 Simon Says 程序,我正在为 class 苦苦挣扎,所以我正在寻找其他帮助途径。规则如下:
完成这项任务的方式完全取决于您。该代码必须完全按照指定的方式工作才能获得适当的信用。你将设计游戏西蒙。西蒙有四种颜色:红色、蓝色、绿色和黄色。用户必须选择与 Simon 相同的颜色,并按正确的顺序选择。西蒙选择的颜色必须是随机的。每一轮连续的 Simon 都会在序列中添加另一种颜色。当用户失败时,Simon 应该告诉用户他们持续了多少轮。您可以玩多少轮应该没有限制。此任务不需要 GUI。如果您使用 JOptionPane 选择颜色,则必须使用红色、蓝色、绿色和黄色的字母快捷方式。您还必须包括游戏说明。您还必须跟踪每次游戏的高分,并允许用户输入他们的名字以获得高分。如果您关闭程序,您就不必记分;仅在程序打开时。
当我执行我的代码时,它不会在用户给出正确答案时继续游戏,而是在一个循环后终止。奇怪的是,如果我给出错误的答案,它似乎只会循环。最后,我想指出我的程序真的很基础,因为老实说,这是我所知道的全部使用方法。感谢您的帮助
package stuff;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Simon {
String s = "";
String a = "";
String c = "";
String d = "";
boolean b = true;
boolean b2 = true;
String obj[] = { "Red", "Yellow", "Green", "Blue" };
ArrayList<String> colors = new ArrayList<String>();
String[] options = new String[] { "Red", "Yellow", "Green", "Blue" };
int count = 0;
int count2 = 0;
int score = 0;
public String simon() {
do {
int c = ((int) (Math.random() * 4));
if (c == 0)
colors.add(obj[0]);
else if (c == 1)
colors.add(obj[1]);
else if (c == 2)
colors.add(obj[2]);
else if (c == 3)
colors.add(obj[3]);
else {
JOptionPane.showMessageDialog(null,
"weird stuff happened bruh");
}
JOptionPane.showMessageDialog(null, colors.get(count));
b2 = true;
while (b2) {
for (int i2 = 0; i2 < colors.size(); i2++) {
a = JOptionPane.showInputDialog("put letter");
if(a != null){
if (a.equalsIgnoreCase(colors.get(i2))) {
JOptionPane.showMessageDialog(null,
"Your color is right" + score);
score += 1;
if (i2 == colors.size() - 1)
b2 = false;
else {
JOptionPane.showMessageDialog(null, "weird stuff happened bruh fo realz");
}
} else {
b2 = false;
b = false;
}
}else{
System.exit(0);
}
}
}
count++;
} while (b == false);
return s;
}
}
你的很多代码都不需要,而且你让它变得比应该的更难:)。
我发布了代码来展示我将如何使用两个单一的 for 循环来制作程序,并检查以对抗 nasty NullPointerException 当用户创建时取消输入。
public String simon() {
while(true){
generateColor();
for(int i = 0; i < colors.size(); i++){
JOptionPane.showMessageDialog(null, "Color #"+i+" is: "+colors.get(i));
}
for(int i = 0; i < colors.size(); i++){
String input = JOptionPane.showInputDialog("Type in #"+i+" color: ");
if(input == null){
System.out.println("User typed in wrong input");
return "Program ended unsuspectively";
}
if(input.equalsIgnoreCase(colors.get(i))){
System.out.println("You were correct!");
}
else{
System.out.println("you wasnt correct");
return "You ended with a score of: "+score;
}
}
score++;
}
}
private void generateColor(){
int c = (int)(Math.random() * 4);
colors.add(obj[c]);
}
希望这对您有所帮助,祝您有愉快的一天:)
这是我第一次 post 访问此网站,所以如果我违反了规则或我不知道的事情,我将深表歉意。也就是说,我的老师指派我制作一个 Simon Says 程序,我正在为 class 苦苦挣扎,所以我正在寻找其他帮助途径。规则如下:
完成这项任务的方式完全取决于您。该代码必须完全按照指定的方式工作才能获得适当的信用。你将设计游戏西蒙。西蒙有四种颜色:红色、蓝色、绿色和黄色。用户必须选择与 Simon 相同的颜色,并按正确的顺序选择。西蒙选择的颜色必须是随机的。每一轮连续的 Simon 都会在序列中添加另一种颜色。当用户失败时,Simon 应该告诉用户他们持续了多少轮。您可以玩多少轮应该没有限制。此任务不需要 GUI。如果您使用 JOptionPane 选择颜色,则必须使用红色、蓝色、绿色和黄色的字母快捷方式。您还必须包括游戏说明。您还必须跟踪每次游戏的高分,并允许用户输入他们的名字以获得高分。如果您关闭程序,您就不必记分;仅在程序打开时。
当我执行我的代码时,它不会在用户给出正确答案时继续游戏,而是在一个循环后终止。奇怪的是,如果我给出错误的答案,它似乎只会循环。最后,我想指出我的程序真的很基础,因为老实说,这是我所知道的全部使用方法。感谢您的帮助
package stuff;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Simon {
String s = "";
String a = "";
String c = "";
String d = "";
boolean b = true;
boolean b2 = true;
String obj[] = { "Red", "Yellow", "Green", "Blue" };
ArrayList<String> colors = new ArrayList<String>();
String[] options = new String[] { "Red", "Yellow", "Green", "Blue" };
int count = 0;
int count2 = 0;
int score = 0;
public String simon() {
do {
int c = ((int) (Math.random() * 4));
if (c == 0)
colors.add(obj[0]);
else if (c == 1)
colors.add(obj[1]);
else if (c == 2)
colors.add(obj[2]);
else if (c == 3)
colors.add(obj[3]);
else {
JOptionPane.showMessageDialog(null,
"weird stuff happened bruh");
}
JOptionPane.showMessageDialog(null, colors.get(count));
b2 = true;
while (b2) {
for (int i2 = 0; i2 < colors.size(); i2++) {
a = JOptionPane.showInputDialog("put letter");
if(a != null){
if (a.equalsIgnoreCase(colors.get(i2))) {
JOptionPane.showMessageDialog(null,
"Your color is right" + score);
score += 1;
if (i2 == colors.size() - 1)
b2 = false;
else {
JOptionPane.showMessageDialog(null, "weird stuff happened bruh fo realz");
}
} else {
b2 = false;
b = false;
}
}else{
System.exit(0);
}
}
}
count++;
} while (b == false);
return s;
}
}
你的很多代码都不需要,而且你让它变得比应该的更难:)。
我发布了代码来展示我将如何使用两个单一的 for 循环来制作程序,并检查以对抗 nasty NullPointerException 当用户创建时取消输入。
public String simon() {
while(true){
generateColor();
for(int i = 0; i < colors.size(); i++){
JOptionPane.showMessageDialog(null, "Color #"+i+" is: "+colors.get(i));
}
for(int i = 0; i < colors.size(); i++){
String input = JOptionPane.showInputDialog("Type in #"+i+" color: ");
if(input == null){
System.out.println("User typed in wrong input");
return "Program ended unsuspectively";
}
if(input.equalsIgnoreCase(colors.get(i))){
System.out.println("You were correct!");
}
else{
System.out.println("you wasnt correct");
return "You ended with a score of: "+score;
}
}
score++;
}
}
private void generateColor(){
int c = (int)(Math.random() * 4);
colors.add(obj[c]);
}
希望这对您有所帮助,祝您有愉快的一天:)