Я занимаюсь разработкой простой TicTacToe игры, в которой есть режим «игрок против игрока».
Я решил добавить меню, в котором игрок мог выбрать, хочет ли он играть с другим игроком или с компьютером.
Но я не мог понять, как правильно вызывать пункты меню, чтобы вызвать указанный код.
Я пытался Слушатель действий , но ActionListener внутри ActionListener , похоже, не работает.
Я новичок в программировании, я искал различные сайты, но, похоже, не смог найти решение.Я просто хочу, чтобы код 1-vs-1 был запущен, когда пользователь нажимает 1-vs-1 и 1-vs-computer (эточасть еще не написана, как вы, вероятно, поняли), которая будет запущена, когда пользователь выбирает 1-vs-computer из меню.
Ваше небольшое время для решения этой проблемы будет огромной помощью для меня!
package tictacpractice;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Frame implements ActionListener {
int value=0;
JButton reset;
JButton exit;
JLabel p1;
JLabel p2;
JButton []board;
int turn;
String Checker= "";
String []Checkers= new String[9];
boolean winner=false;
JMenuBar menuBar;
JMenu Menu;
JMenuItem item1,item2;
Frame(){
turn=1;
JFrame frm = new JFrame("TicTacThuss");
frm.setSize(400,400);
menuBar = new JMenuBar();
Menu = new JMenu("Mode");
Menu.setFont(new Font("Ariel", Font.BOLD, 32));
item1 = new JMenuItem("1v1");
item1.setFont(new Font("Ariel", Font.BOLD, 32));
item2 = new JMenuItem("1vc");
item2.setFont(new Font("Ariel", Font.BOLD, 32));
Menu.add(item1);
Menu.add(item2);
menuBar.add(Menu);
frm.setJMenuBar(menuBar);
item2.addActionListener(this);
reset = new JButton("reset");
exit = new JButton ("exit");
p1 = new JLabel("Player X");
p2 = new JLabel("Player O");
board = new JButton[9];
reset.addActionListener(this);
exit.addActionListener(this);
JPanel Lowerpanel= new JPanel();
Lowerpanel.add(reset);
Lowerpanel.add(exit);
JPanel Centralpanel= new JPanel();
Centralpanel.setLayout(new GridLayout(3,3));
//String initiallizer
for(int c=0; c<9; c++){
Checkers[c]="";
}
for(int i=0; i<9; i++)
{
board[i]=new JButton();
Centralpanel.add(board[i]);
board[i].addActionListener(this);
board[i].setFont(new Font("Ariel", Font.BOLD, 72));
}
frm.add(Centralpanel, BorderLayout.CENTER);
frm.add(Lowerpanel, BorderLayout.SOUTH);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e){
value++;
if(turn==1){
Checker=" X";
}
if(turn==0){
Checker=" O";
}
if(e.getSource()==reset){
for(int i=0; i<9; i++)
{
board[i].setText("");
board[i].setEnabled(true);
winner=false;
Checkers[i]="";
value=0;
turn=1;
}
}
if(e.getSource()==exit){
System.exit(0);
}
for(int i=0; i<9; i++)
{
if(e.getSource()==board[i])
{
if(turn==1)
{
board[i].setText("X");
board[i].setEnabled(false);
Checkers[i]=Checker;
}
else{
if(turn==0)
{
board[i].setText("O");
board[i].setEnabled(false);
Checkers[i]=Checker;
}
}
turn=(turn+1)%2;
}
}
//horizontal
if (Checkers[0].equals(Checkers[1]) &&
Checkers[1].equals(Checkers[2]) &&
!Checkers[0].equals("") ) {
winner = true;
}
else if (Checkers[3].equals(Checkers[4]) &&
Checkers[4].equals(Checkers[5]) &&
!Checkers[3].equals("") ) {
winner = true;
}
else if (Checkers[6].equals(Checkers[7]) &&
Checkers[7].equals(Checkers[8]) &&
!Checkers[6].equals("") ) {
winner = true;
}
//Verticle
if (Checkers[0].equals(Checkers[3]) &&
Checkers[3].equals(Checkers[6]) &&
!Checkers[0].equals("") ) {
winner = true;
}
else if (Checkers[1].equals(Checkers[4]) &&
Checkers[4].equals(Checkers[7]) &&
!Checkers[1].equals("") ) {
winner = true;
}
else if (Checkers[2].equals(Checkers[5]) &&
Checkers[5].equals(Checkers[8]) &&
!Checkers[2].equals("") ) {
winner = true;
}
//Digonals
if (Checkers[0].equals(Checkers[4]) &&
Checkers[4].equals(Checkers[8])
&& !Checkers[0].equals("") ) {
winner = true;
}
else if (Checkers[2].equals(Checkers[4]) &&
Checkers[4].equals(Checkers[6]) &&
!Checkers[2].equals("") ) {
winner = true;
}
//Checker
if(winner){
JOptionPane.showMessageDialog(null, "Player"+Checker+" Wins");
for (JButton i : board) {
i.setEnabled(false);
}
}
else if(!winner && value==9)
{
JOptionPane.showMessageDialog(null," This game is draw ") ;
}
}
}