当前位置: 代码迷 >> J2SE >> java 五子棋游戏解决方案
  详细解决方案

java 五子棋游戏解决方案

热度:416   发布时间:2016-04-24 18:10:13.0
java 五子棋游戏
大家好,我是java新手,今天写五子棋游戏,遇上点小麻烦,希望大家给解决一下!
我用Arraylist装棋子,然后,不知道怎么判定坐标处已有棋子!代码如下:[code=Java][/code]
package com.chess.game;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyJFrame extends JFrame
{
boolean isback =true;//判断棋子颜色
MyJFrame mf ;
/**
* 声明窗体的宽
*/
private static final int WIDTH = 500;
/**
* 声明窗体的长
*/
  private static final int HEIGHT = 500;
   

public MyJFrame()
{
//设置窗体标题
this.setTitle("五子棋对弈");
this.setSize(WIDTH,HEIGHT);
int wideth = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation((wideth-WIDTH)/2,(height-HEIGHT)/2 );
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
addMouseListener(new MyMouseMonitor());
this.setVisible(true);
new Thread(new MyRunnable()).start();


/**
* 通过标签加入背景图片
*/
ImageIcon backIcon = new ImageIcon("D:/yzy1/Image/fiveChess.jpg");
JLabel label = new JLabel(backIcon);
label.setOpaque(true);
label.setBounds(0, 0, backIcon.getIconWidth(),backIcon.getIconHeight() );
this.add(label);

}

List <Chessman> chessmanList =new ArrayList <Chessman>(); //装棋子


/**
* 重写paint方法,画出棋盘方格
*/
@Override
public void paint(Graphics g)
{
super.paint(g);
Color c = g.getColor();
g.setColor(Color.BLACK);
for(int i = 0;i <= 360;i = i+20)
{
g.drawLine(10, 70 + i,370,70 + i );
g.drawLine(10 + i, 70, 10+i, 430);
}
Font f = g.getFont();
g.setColor(Color.red);
g.setFont(new Font("宋体",0,18));
g.drawString("五子棋对弈:", 60, 60);
g.setColor(Color.BLACK);
g.drawString("黑方时间:",40, 470);
g.drawString("白方时间:", 260,470 );
g.setFont(f);
g.setColor(c);


/**
* 在棋盘中画棋子
*/
for(int i =0;i < chessmanList.size();i++ )
{
Chessman chessman = chessmanList.get(i);
chessman.paint(g);
}

}



/**
* 鼠标监听事件
* @author Administrator
*
*/
class MyMouseMonitor extends MouseAdapter
{
@Override
public void mousePressed(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
//System.out.println(x);
//System.out.println(y);
Chessman chessman;
if(isback)
{
chessman = new Chessman(x, y, mf, isback);
  chessmanList.add(chessman);
isback = false;
}
else
{
chessman = new Chessman(x, y, mf, isback);
chessmanList.add(chessman);
isback = true;
}
}


}


class MyRunnable implements Runnable
{
@Override
public void run()
{
while(true)
{
repaint();
try
{
Thread.sleep(50);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}


}









package com.chess.game;

import java.awt.Color;
/**
 * 棋子类
 * @author Administrator
 *
 */
public class Chessman
{
MyJFrame mf;
int x,y;
boolean isback;

/**
* 确定棋子的大小
  相关解决方案