eclipse五子棋对弈小游戏 这些报错的地方要怎么改啊 头大 .
编程不先学怎么看错误信息吗
告诉你184行有错误,你好歹去看看
package main;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
/*
* 画布类
*/
public class GamePanel extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
GamePanel gamePanel=this;
private JFrame mainFrame=null;
JMenuBar jmb=null;
public String gameFlag="";
public static final int ROWS=15;
public static final int COLS=15;
public Pointer points[][] = new Pointer[ROWS][COLS];
public Object qizis;
//构造里面初始化相关参数
public GamePanel(JFrame frame){
this.setLayout(null);
this.setOpaque(false);
mainFrame = frame;
//创建按钮
initMenu();
mainFrame.requestFocus();
mainFrame.setVisible(true);
}
private void initMenu(){
// 创建菜单及菜单选项
jmb = new JMenuBar();
JMenu jm1 = new JMenu("游戏");
jm1.setFont(new Font("宋体", Font.BOLD, 18));// 设置菜单显示的字体
JMenu jm2 = new JMenu("帮助");
jm2.setFont(new Font("宋体", Font.BOLD, 18));// 设置菜单显示的字体
JMenuItem jmi1 = new JMenuItem("开始新游戏");
JMenuItem jmi2 = new JMenuItem("退出");
jmi1.setFont(new Font("宋体", Font.BOLD, 18));
jmi2.setFont(new Font("宋体", Font.BOLD, 18));
JMenuItem jmi3 = new JMenuItem("操作说明");
jmi3.setFont(new Font("宋体", Font.BOLD, 18));
JMenuItem jmi4 = new JMenuItem("成功/失败判定");
jmi4.setFont(new Font("宋体", Font.BOLD, 18));
jm1.add(jmi1);
jm1.add(jmi2);
jm2.add(jmi3);
jm2.add(jmi4);
jmb.add(jm1);
jmb.add(jm2);
mainFrame.setJMenuBar(jmb);// 菜单Bar放到JFrame上
jmi1.addActionListener(this);
jmi1.setActionCommand("Restart");
jmi2.addActionListener(this);
jmi2.setActionCommand("Exit");
jmi3.addActionListener(this);
jmi3.setActionCommand("help");
jmi4.addActionListener(this);
jmi4.setActionCommand("lost");
}
//重新开始
public void restart() {
//游戏开始标记
gameFlag="start";
}
//绘制网格
private void drawGrid(Graphics g) {
Graphics2D g_2d=(Graphics2D)g;
int start=26;
int x1=start;
int y1=20;
int x2=586;
int y2=20;
for (int i = 0; i < ROWS; i++) {
y1 = start + 40*i;
y2 = y1;
g_2d.drawLine(x1, y1, x2, y2);
}
y1=start;
y2=586;
for (int i = 0; i < COLS; i++) {
x1 = start + 40*i;
x2 = x1;
g_2d.drawLine(x1, y1, x2, y2);
}
}
//绘制5个黑点
private void draw5Point(Graphics g) {
//第1个点
g.fillArc(142, 142, 8, 8, 0, 360);
//第2个点
g.fillArc(462, 142, 8, 8, 0, 360);
//第3个点
g.fillArc(142, 462, 8, 8, 0, 360);
//第4个点
g.fillArc(462, 462, 8, 8, 0, 360);
//中心点
g.fillArc(302, 302, 8, 8, 0, 360);
}
@Override
public void mouseClicked(MouseEvent e) {
//在合适的位置点击则进行落子操作
if(!"start".equals(gameFlag)) return ;
int x = e.getX();
int y = e.getY();
Pointer pointer;
for (int i = 0; i <ROWS; i++) {
for (int j = 0; j < COLS; j++) {
pointer = points[i][j];
if(pointer==null)continue;
//被点击,且没有棋子,则可以落子
if(pointer.isPoint(x, y) && pointer.getQizi()==0){
Qizi qizi = new Qizi(pointer.getX(), pointer.getY(), 2, gamePanel);
pointer.setQizi(2);
qizis.add(qizi);
//重绘画布
repaint();
//判断有没有五子连珠的情况
if(AI.has5(pointer, gamePanel)){
gamePanel.gameWin();
}else{
AI.next(gamePanel);
}
return ;
}
}
}
}
@Override
public void paint(java.awt.Graphics g) {
super.paint(g);
//绘制网格
drawGrid(g);
//绘制5个黑点
draw5Point(g);
//绘制指示器
Pointer pointer = null;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
pointer = points[i][j] ;
if(pointer!=null){
pointer.draw(g);
}
}
}
//绘制棋子
Qizi qizi=null;
for (int i = 0; i < qizi.size(); i++) {
qizi = (Qizi)qizis.get(i);
qizi.draw(g);
}
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
System.out.println(command);
UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("思源宋体", Font.ITALIC, 18)));
UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("思源宋体", Font.ITALIC, 18)));
if ("Exit".equals(command)) {
Object[] options = { "确定", "取消" };
int response = JOptionPane.showOptionDialog(this, "您确认要退出吗", "",
JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (response == 0) {
System.exit(0);
}
}else if("Restart".equals(command)){
if(!"end".equals(gamePanel.gameFlag)){
JOptionPane.showMessageDialog(null, "正在游戏中无法重新开始!",
"提示!", JOptionPane.INFORMATION_MESSAGE);
}else{
if(gamePanel!=null) {
gamePanel.restart();
}
}
}else if("help".equals(command)){
JOptionPane.showMessageDialog(null, "鼠标在指示器位置点下,则落子!",
"提示!", JOptionPane.INFORMATION_MESSAGE);
}else if("lost".equals(command)){
JOptionPane.showMessageDialog(null, "五子连珠方获得胜利!",
"提示!", JOptionPane.INFORMATION_MESSAGE);
}
}
//创建二维数组
private void createArr() {
int x=0,y=0;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
y = 26 + 40*i;
x = 26 + 40*j;
Pointer pointer = new Pointer(x, y, i,j,new Color(255,192,203), this);
points[i][j] = pointer;
}
}
}
//初始化相关对象
private void init() {
createArr();
//游戏开始标记
gameFlag="start";
}
}
GamePanel里的代码