Ошибка при работе с моим кодом. Я не могу получить массив символов (myArray) для отображения в графическом интерфейсе. Когда он работает правильно, я должен отображать массив, если буквы используются позже, мне нужно повторно отобразить массив с пропущенными буквами. Продолжайте это до тех пор, пока массив букв не будет пуст. Я разместил в кавычках инструкции для назначения. В настоящее время я работаю с Eclipse.Проблемы с Java и GUI
Разработка игры - на базе «Wordmole» показать пользователю сетку букв (читай из файла). Пусть пользователь вводит слово , используя диалог ввода. Если введенное слово является действительным, то проверьте, все ли буквы слова отображаются в сетке. else используйте сообщение диалог для отображения сообщения об ошибке. Если все буквы этого слова находятся в сетке , тогда наградите игрока соответствующими точками для слова, а удалите письма из опоясывающего. else используйте диалоговое окно с сообщением, чтобы сообщить пользователю слова нет. Пусть игрок продолжает играть до тех пор, пока пользователь не выйдет из игры , не введя ни слова, ни нажав кнопку отмены. В сетке нет других букв.
import java.awt.GridLayout;
//import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Project2 {
public static String inputWord;
public static String matrix = "Words\n\n";
public static String total = "Total\n\n";
public static String newWord;
public static char[][] myArray;
public static void main(String[] args){
myArray = fillArray("project2a.txt");
while(true){
int count = 0;
int sum = 0;
inputWord = JOptionPane.showInputDialog(null,"Enter a word:");
if(inputWord == null || inputWord.length() == 0) break;
newWord = inputWord.toUpperCase();
if(IsValidWord(newWord)){
for(int x = 0; x < newWord.length(); x++){
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 10; j++){
if(newWord.charAt(x) == myArray[i][j]) count++;
}
}
}
if(count == newWord.length()){
for(int c = 0; c < newWord.length(); c++)
sum += scoreValue(newWord.charAt(c));
for(int x = 0; x < newWord.length(); x++){
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 10; j++){
if(newWord.charAt(x) == myArray[i][j]) myArray[i][j] = (' ');
}
}
}
matrix = matrix + newWord + "\n";
total = total + sum + "\n";
}
else
JOptionPane.showMessageDialog(null,"The word is not there!!!");
} // IF
else
JOptionPane.showMessageDialog(null,"ERROR: The word is invalid!!!");
} //while
createAndShowGUI();
}
public static char[][] fillArray(String myFile){
TextFileInput tfi = new TextFileInput(myFile);
String line = tfi.readLine();
System.out.println(line);
int rows, cols;
rows = Integer.parseInt(line);
cols = Integer.parseInt(line);
char[][] rtn = new char[rows][cols];
for(int i=0; i < rows; i++) {
line = tfi.readLine();
System.out.println(line);
for(int j= 0; j < cols; j++) {
rtn[i][j] = line.charAt(j);
} // For
} // For
return rtn;
} // FillArray
public static boolean IsValidWord(String myWord){
for(int i = 0; i < myWord.length(); i++)
if(!Character.isLetter(myWord.charAt(i))) return false;
return true;
} // IsValidWord
public static int scoreValue(char letters){
if(Character.isLetter(letters)){
if(letters == 'A' || letters == 'E' || letters == 'I' || letters == 'O' || letters == 'U')
return 0;
else if(letters == 'K' || letters == 'V' || letters == 'F' || letters == 'W') return 5;
else if(letters == 'X' || letters == 'Q') return 10;
} // If statement
return 1;
} // scoreValue
public static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("Word Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100,100);//width, height);
frame.setLocation(200,200);//x, y);
frame.setLayout(new GridLayout(1,2));
JTextArea textArea = new JTextArea(5, 20);
JTextArea textArea1 = new JTextArea(5, 20);
textArea.setEditable(false);
textArea1.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
JScrollPane scrollPane2 = new JScrollPane(textArea1);
frame.getContentPane().add(scrollPane);
frame.getContentPane().add(scrollPane2);
textArea.setText(matrix);
textArea1.setText(total);
//Display the window.
frame.pack();
frame.setVisible(true);
}// createAndShowGUI
public static void createAndShowGUI2() {
//Create and set up the window.
JFrame frame = new JFrame("Letters");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100,100);//width, height);
frame.setLocation(200,200);//x, y);
frame.setLayout(new GridLayout(1,2));
JTextArea textArea = new JTextArea(5, 20);
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
frame.getContentPane().add(scrollPane);
textArea.setText(myArray);
//Display the window.
frame.pack();
frame.setVisible(true);
}// createAndShowGUI
}
Было бы легче ответить на ваш вопрос, если вы удалили весь код, но часть, которую вы испытываете проблемы с. Нам не нужно видеть вашу логику игры. – jjnguy
В будущем попытайтесь реализовать фрагменты своего кода независимо (и постепенно) и протестировать каждую часть, прежде чем соединять их. Трудность отладки программы растет экспоненциально, чем больше кода вы пишете перед его тестированием. –