java hangman swing_JAVA图形界面三星题之Hangman

代码如下:

package com.ytu.lc;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.lang.reflect.Array;

import java.util.ArrayList;

import java.util.Random;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

public class Hangman extends JFrame implements ActionListener {

private JLabel label = null;

private JTextField text = null;

private char answer = 'a';

private Random random = null;

private String[] words = { "write", "that", "program", "problem",

"yourself" };

private String str = null;

private int count = 0;

private int number = 0;

private ArrayList a = new ArrayList();

private String letter = null;

public Hangman() {

setTitle("猜单词");

random = new Random();

label = new JLabel("提示消息:");

text = new JTextField();

JButton btn = new JButton("开始");

btn.setActionCommand("start");

btn.addActionListener(this);

add(btn, BorderLayout.WEST);

btn = new JButton("确定");

btn.addActionListener(this);

add(btn, BorderLayout.EAST);

btn = new JButton("结束");

btn.setActionCommand("end");

btn.addActionListener(this);

add(btn, BorderLayout.SOUTH);

add(label, BorderLayout.NORTH);

add(text, BorderLayout.CENTER);

setSize(400, 300);

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

}

public static void main(String[] args) {

new Hangman();

}

@Override

public void actionPerformed(ActionEvent e) {

if ("start".equals(e.getActionCommand())) {

str = words[random.nextInt(5)];

System.out.println(str);

count = 0;

number = str.length();

for (int i = 0; i < number; i++)

// 给数组增加10个Int元素

a.add(i);

for (int i = 0; i < number; i++) {

a.set(i, '*');

label.setText("(Guess) Enter a letter in word ");

for (int i1 = 0; i1 < str.length(); i1++) {

label.setText(label.getText() + a.get(i1));

}

label.setText(label.getText() + " > ");

}

} else if ("end".equals(e.getActionCommand())) {

label.setText("Game over!");

} else {

String letter = text.getText().toLowerCase();

text.setText("");

int m = 0;

for (int i = 0; i < str.length(); i++) {

if (a.get(i).equals(letter.charAt(0))) {

m = 1;

} else if (str.charAt(i) == letter.charAt(0)) {

a.set(i, letter.charAt(0));

number--;

m = 1;

}

}

if (m == 0) {

label.setText("提示消息:" + letter + " is no in the word");

count++;

} else if (m == 2) {

label.setText("提示消息:" + letter + " is already in the word");

} else if (m == 1) {

if (number != 0) {

label.setText("(Guess) Enter a letter in word ");

for (int i1 = 0; i1 < str.length(); i1++) {

label.setText(label.getText() + a.get(i1));

}

label.setText(label.getText() + " > ");

} else {

label.setText("The word is " + str + ". You missed "

+ count + " time. ");

}

}

}

}

}

运行结果:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值