我在 Netbeans 上制作了一个基本的刽子手游戏,它的工作方式是用户单击 26 个按钮中的一个(每个字母对应一个),然后在单词中测试该字母。我遇到的主要问题是要测试这封信。
//array holding all buttons
JButton[] alphabet = {AButton, BButton, CButton, DButton, EButton, FButton, GButton, HButton, IButton, JButton, KButton, LButton, MButton, NButton, OButton, PButton, QButton, RButton, SButton, TButton, UButton, VButton, WButton, XButton, YButton, ZButton};
//getting the current letter(need something in place of the 0)
String currentLetter = (alphabet[0].getLabel());
//replace underscores with letters as they are guessed
for (int i = 0; i < 1; i++) {
secretWord = secretWord + currentLetter.charAt(0);
foundWord = words[randValue].replaceAll("[^" + secretWord + "]", "_ ");
}
我在某处读到使用按钮数组是我必须做的,所以我把它放进去,但它没有用。另外,我读到程序需要一个 ActionListener 来读取它是什么字母。我以前使用过的尝试是:
currentLetter = AButton.getText();
currentLetter = AButton.getLabel();
但遗憾的是无济于事。所以请记住,我使用的是 Netbeans,而且我是 Java 新手,所以没有复杂的复杂内容,保持简单。谢谢:)
编辑:
private void AButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void DoButtonActionPerformed(java.awt.event.ActionEvent evt) {
JButton button = (JButton) evt.getSource();
String currentLetter = button.getText();
//replace underscores with letters as they are guessed
for (int i = 0; i < 1; i++) {
secretWord = secretWord + currentLetter.charAt(0);
foundWord = words[0].replaceAll("[^" + secretWord + "]", "_ ");
}
}
完整代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
public class MainFrame extends javax.swing.JFrame {
public MainFrame() {
initComponents();
}
static String secretWord = "";
StringBuilder mainWord = new StringBuilder();
String[] words = {"technology", "computer", "camera", "graphic", "digital", "media", "technician",
"photography", "troubleshoot", "pixels", "application", "download"};
Random r = new Random();
int randValue = r.nextInt(11)+1;
String guessWord = words[0];//words[randValue];
int errors = 0;
public static int wins = 0, losses = 0;
String foundWord = null;
String currentLetter;
private void RestartButtonActionPerformed(java.awt.event.ActionEvent evt) {
//restart game
DirectionsFrame DFrame = new DirectionsFrame();
DFrame.setVisible(true);
setVisible(false);
MainFrame MFrame = new MainFrame();
MFrame.dispose();
secretWord = "";
foundWord = null;
DirectionsFrame.WinsLabel.setText(null);
DirectionsFrame.LossesLabel.setText(null);
}
private void GetButtonActionPerformed(java.awt.event.ActionEvent evt) {
for (int i = 0; i < guessWord.length(); i++) {
mainWord.append("_ ");
}
String SetMain = mainWord.toString();
mainWord.append(secretWord);
WordLabel.setText(SetMain);
GetButton.setEnabled(false);
AButton.setEnabled(true);BButton.setEnabled(true);CButton.setEnabled (true);DButton.setEnabled(true);EButton.setEnabled(true);
FButton.setEnabled(true);GButton.setEnabled(true);HButton.setEnabled (true);IButton.setEnabled(true);JButton.setEnabled(true);
KButton.setEnabled(true);LButton.setEnabled(true);MButton.setEnabled(true);NButton.setEnabled(true);OButton.setEnabled(true);
PButton.setEnabled(true);QButton.setEnabled(true);RButton.setEnabled(true);SButton.setEnabled(true);TButton.setEnabled(true);
UButton.setEnabled(true);VButton.setEnabled(true);WButton.setEnabled(true);XButton.setEnabled(true);YButton.setEnabled(true);
ZButton.setEnabled(true);
}
private void ExitButtonActionPerformed(java.awt.event.ActionEvent evt) {
// Exit the program
System.exit(0);
}
private void AButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void BButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void CButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void DButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void EButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void FButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void GButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void HButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void IButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void JButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void KButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void LButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void MButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void NButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void OButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void PButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void QButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void RButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void SButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void TButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void UButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void VButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void WButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void XButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void YButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void ZButtonActionPerformed(java.awt.event.ActionEvent evt) {
DoButton.doClick();
}
private void DoButtonActionPerformed(java.awt.event.ActionEvent evt) {
JButton button = (JButton) evt.getSource();
String currentLetter = button.getText();
//replace underscores with letters as they are guessed
do {
for (int i = 0; i < 1; i++) {
secretWord = secretWord + currentLetter.charAt(0);
foundWord = words[0].replaceAll("[^" + secretWord + "]", "_ ");
//if letter isn't in word
if (guessWord.indexOf(currentLetter) == -1) {
JOptionPane.showMessageDialog(null, "Sorry, that wasn't in the word.");
errors++;
if (errors == 1) {
Hangman0.setVisible(false);
}
if (errors == 2) {
Hangman1.setVisible(false);
}
if (errors == 3) {
Hangman2.setVisible(false);
}
if (errors == 4) {
Hangman3.setVisible(false);
}
if (errors == 5) {
Hangman4.setVisible(false);
}
if (errors == 6) {
Hangman5.setVisible(false);
}
if (errors == 7) {
Hangman6.setVisible(false);
}
if (errors == 8) {
Hangman7.setVisible(false);
}
if (errors == 9) {
Hangman8.setVisible(false);
}
if (errors == 10) {
Hangman9.setVisible(false);
JOptionPane.showMessageDialog(null, "You lost! The word was: " + guessWord);
losses++;
DirectionsFrame DFrame = new DirectionsFrame();
DFrame.setVisible(true);
setVisible(false);
MainFrame MFrame = new MainFrame();
MFrame.dispose();
secretWord = "";
foundWord = null;
String strLosses = Integer.toString(losses);
String strWin = Integer.toString(wins);
DirectionsFrame.WinsLabel.setText(strWin);
DirectionsFrame.LossesLabel.setText(strLosses);
}
}
}
WordLabel.setText(foundWord.toUpperCase());
} while (foundWord == null);
if (foundWord.equalsIgnoreCase(guessWord)) {
JOptionPane.showMessageDialog(null, "Yay!");
wins++;
DirectionsFrame DFrame = new DirectionsFrame();
DFrame.setVisible(true);
setVisible(false);
MainFrame MFrame = new MainFrame();
MFrame.dispose();
secretWord = "";
foundWord = null;
String strWin = Integer.toString(wins);
String strLosses = Integer.toString(losses);
DirectionsFrame.WinsLabel.setText(strWin);
DirectionsFrame.LossesLabel.setText(strLosses);
}
}