Java 打鼹鼠游戏
我是java新手,我正在使用JFrame和JButtons制作一个打鼹鼠游戏。目前,我有一个5x5网格的按钮,这是我得到的。我有3个按钮是X(代表摩尔)和22个是O(代表一个空洞)。我想对按钮值进行随机排列,以便每2秒对值进行随机排列。我该怎么做呢?很抱歉我是一个新手,我几周前就开始使用java了,JFrames仍然让我困惑,哈哈Java 打鼹鼠游戏,java,Java,我是java新手,我正在使用JFrame和JButtons制作一个打鼹鼠游戏。目前,我有一个5x5网格的按钮,这是我得到的。我有3个按钮是X(代表摩尔)和22个是O(代表一个空洞)。我想对按钮值进行随机排列,以便每2秒对值进行随机排列。我该怎么做呢?很抱歉我是一个新手,我几周前就开始使用java了,JFrames仍然让我困惑,哈哈 import javax.swing.*; import java.awt.*; public class Whack_A_Mole extends JFrame {
import javax.swing.*;
import java.awt.*;
public class Whack_A_Mole extends JFrame {
JButton[][] square = new JButton[5][5];
JButton button1, button2;
static JLabel label = new JLabel();
Whack_A_Mole() {
super("Whack a Mole");
JPanel p = new JPanel(new GridLayout(5,5));
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
square[i][j] = new JButton();
p.add(square[i][j]);
}
}
add(p, BorderLayout.CENTER);
p = new JPanel(new GridLayout(1,2));
setSize(600, 600);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
new Whack_A_Mole();
}
}
import javax.swing.*;
导入java.awt.*;
公共类重击A_Mole扩展JFrame{
JButton[][]方形=新JButton[5][5];
b按钮1、按钮2;
静态JLabel标签=新JLabel();
打鼹鼠{
超级(“打鼹鼠”);
JPanel p=新JPanel(新网格布局(5,5));
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
正方形[i][j]=新的JButton();
p、 加(平方[i][j]);
}
}
添加(p,BorderLayout.CENTER);
p=新JPanel(新网格布局(1,2));
设置大小(600600);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(真);
setLocationRelativeTo(空);
}
公共静态void main(字符串[]args){
新打鼹鼠;
}
}
如果将对象放在ArrayList中,可以使用shuffle()方法对其顺序进行无序排列。至于计时,可以使用Thread.sleep(毫秒SAMT)或计时器。我更喜欢util.Timer,尤其是当动作无限重复或多次重复时 创建一个线程,该线程将每隔2秒向队列中添加更新功能
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.util.Random;
public class Wack_A_Mole extends JFrame {
JButton[][] square = new JButton[5][5];
JButton button1, button2;
static JLabel label = new JLabel();
private Thread updateWoker;
Whack_A_Mole() {
super("Whack a Mole");
JPanel p = new JPanel(new GridLayout(5,5));
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
square[i][j] = new JButton();
p.add(square[i][j]);
}
}
add(p, BorderLayout.CENTER);
p = new JPanel(new GridLayout(1,2));
setSize(600, 600);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
}
void start(){
updateWoker=new Thread(new Runnable(){
public void run(){
Runnable r=new Runnable(){
public void run() {
buttonUpdate(); // call buttonUpdate every two seconds
}
};
while (true){
javax.swing.SwingUtilities.invokeLater(r);
try{Thread.sleep(2000);} catch (InterruptedException ex) {
return;
}
}
}
}
);
updateWoker.start();
}
public void buttonUpdate(){ // random update can be done in this function
Random r=new Random();
for(int i=0;i<square.length;i++){
for(int j=0;j<square[i].length;j++){
if(r.nextInt() %2==0)
square[i][j].setText("O");
else
square[i][j].setText("X");
}
}
}
public void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) { // making sure to stop the thread after gui closes
if(updateWoker.isAlive()){
updateWoker.interrupt();
}
dispose();
}
}
public static void main(String[] args) throws InterruptedException {
final Whack_A_Mole theTest=new Whack_A_Mole();
theTest.start();
}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.WindowEvent;
导入java.util.Random;
公共类Wack_A_Mole扩展JFrame{
JButton[][]方形=新JButton[5][5];
b按钮1、按钮2;
静态JLabel标签=新JLabel();
私有线程更新器;
打鼹鼠{
超级(“打鼹鼠”);
JPanel p=新JPanel(新网格布局(5,5));
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
正方形[i][j]=新的JButton();
p、 加(平方[i][j]);
}
}
添加(p,BorderLayout.CENTER);
p=新JPanel(新网格布局(1,2));
设置大小(600600);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(真);
setLocationRelativeTo(空);
}
void start(){
updatewker=新线程(newrunnable()){
公开募捐{
Runnable r=新的Runnable(){
公开募捐{
buttonUpdate();//每两秒钟调用buttonUpdate
}
};
while(true){
swing.SwingUtilities.invokeLater(r);
试试{Thread.sleep(2000);}catch(InterruptedException ex){
返回;
}
}
}
}
);
updatewker.start();
}
public void buttonUpdate(){//可以在此函数中进行随机更新
随机r=新随机();
对于(int i=0;i