怎么Java实现鼠标点击的五子棋啊 ?各位大侠 帮帮忙

求用Java实现两人对下(用鼠标操作),判断胜负的五子棋的详细方法,界面要简洁美观,代码带详细的解释。~

已发送,请查收

我也是初学者,这是我刚刚编写的五子棋源程序,希望对你有帮助,也请多多指教。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyFrame extends JFrame{
public static final int LEN = 15;
public static int time = 0;
JPanel panel = new JPanel();
public JButton [][] b = new JButton[LEN][LEN];
public static boolean flag =true;
public static int [] [] message=new int [LEN] [LEN];
public static Color[] [] color=new Color [LEN] [LEN];
public static String word="黑方执棋";
public void setButton(JButton[][] b){
for(int i=0;i<LEN;i++)
for(int j=0;j<LEN;j++){
b[i][j]=new JButton();
b[i][j].setBackground(color[i][j]);
b[i][j].addActionListener(new MyButtonListener(i,j));
}
}
public void addButton(JPanel panel,JButton[][] b){
for(int i=0;i<LEN;i++)
for(int j=0;j<LEN;j++){
panel.add(b[i][j]);
}
}
public static void resetColor(){
for(int i=0;i<LEN;i++)
for(int j=0;j<LEN;j++)
color[i][j]=Color.yellow;
}
public MyFrame(){
super("五子棋");
this.setLocation(130,0);
this.setSize(500,570);
panel.setLayout(new GridLayout(LEN,LEN));
setButton(b);
addButton(panel,b);
this.setVisible(true);
this.add(panel,BorderLayout.CENTER);
JPanel p1=new JPanel();
JLabel l1=new JLabel(word);
p1.add(l1);
this.add(p1,BorderLayout.NORTH);
JPanel p2=new JPanel();
JButton bb=new JButton("新游戏");
bb.addActionListener(new BbListener());
p2.add(bb);
this.add(p2,BorderLayout.SOUTH);

}

public static void resetMessage(){
for(int i=0;i<LEN;i++)
for(int j=0;j<LEN;j++)
message[i][j]=0;
}
}
class MyButtonListener implements ActionListener{
public static final int LEN=MyFrame.LEN;
int i,j;
public MyButtonListener(int i,int j){
this.i=i;
this.j=j;
}
public int whoWins(){
int COR=1;
int result = 0;
if(i>=4&&MyFrame.message[i][j]*MyFrame.message[i-1][j]*MyFrame.message[i-2][j]*MyFrame.message[i-3][j]*MyFrame.message[i-4][j]==COR||i=4&&MyFrame.message[i][j]*MyFrame.message[i][j-1]*MyFrame.message[i][j-2]*MyFrame.message[i][j-3]*MyFrame.message[i][j-4]==COR||j=4&&j>=4&&MyFrame.message[i][j]*MyFrame.message[i-1][j-1]*MyFrame.message[i-2][j-2]*MyFrame.message[i-3][j-3]*MyFrame.message[i-4][j-4]==COR||i>=4&&j=4&&MyFrame.message[i][j]*MyFrame.message[i+1][j-1]*MyFrame.message[i+2][j-2]*MyFrame.message[i+3][j-3]*MyFrame.message[i+4][j-4]==COR)
result = 1;
COR=32;
if(i>=4&&MyFrame.message[i][j]*MyFrame.message[i-1][j]*MyFrame.message[i-2][j]*MyFrame.message[i-3][j]*MyFrame.message[i-4][j]==COR||i=4&&MyFrame.message[i][j]*MyFrame.message[i][j-1]*MyFrame.message[i][j-2]*MyFrame.message[i][j-3]*MyFrame.message[i][j-4]==COR||j=4&&j>=4&&MyFrame.message[i][j]*MyFrame.message[i-1][j-1]*MyFrame.message[i-2][j-2]*MyFrame.message[i-3][j-3]*MyFrame.message[i-4][j-4]==COR||i>=4&&j=4&&MyFrame.message[i][j]*MyFrame.message[i+1][j-1]*MyFrame.message[i+2][j-2]*MyFrame.message[i+3][j-3]*MyFrame.message[i+4][j-4]==COR)
result = 2;
return result;
}
public void actionPerformed(ActionEvent e){
if(TestMyFrame.f.message[i][j]==0){
if(TestMyFrame.f.flag){
TestMyFrame.f.message[i][j]=1;
TestMyFrame.f.color[i][j]=Color.black;
TestMyFrame.f.word="白方执棋";
}
else{
TestMyFrame.f.message[i][j]=2;
TestMyFrame.f.color[i][j]=Color.white;
TestMyFrame.f.word="黑方执棋";
}
TestMyFrame.f.flag=!TestMyFrame.f.flag;
}

if(whoWins()==1)
{TestMyFrame.f.word="黑方胜";
int i1=0,j1=0;
for(i1=0;i1<LEN;i1++)for(j1=0;j1<LEN;j1++)TestMyFrame.f.message[i1][j1]=-1;}
if(whoWins()==2)
{TestMyFrame.f.word="白方胜";
int i1=0,j1=0;
for(i1=0;i1<LEN;i1++)for(j1=0;j1<LEN;j1++)TestMyFrame.f.message[i1][j1]=-1;}

TestMyFrame.f1=TestMyFrame.f;
TestMyFrame.f=new MyFrame();
TestMyFrame.f1.setVisible(false);
}
}

class TestMyFrame{
public static MyFrame f = new MyFrame();
public static MyFrame f1;
public static void main(String [] args){
f.resetColor();
f.resetMessage();
}
}

class BbListener implements ActionListener{
public void actionPerformed(ActionEvent e){
TestMyFrame.f.flag=true;
TestMyFrame.f.resetColor();
TestMyFrame.f.resetMessage();
MyFrame.word="黑方执棋";
TestMyFrame.f.setVisible(false);
TestMyFrame.f=new MyFrame();

}
}

import java.awt.*;
import java.awt.event.*;
import java.awt.color.*;
class wuzi {
public static void main(String[] args) {
frame myFrame =new frame("五子棋");
}
}
class frame extends Frame implements ActionListener{
MenuBar mbar=new MenuBar();
Menu mgame=new Menu("选项");
Menu mhelp=new Menu("帮助");
MenuItem mstart=new MenuItem("开始 ");
MenuItem mclose=new MenuItem("结束");
MenuItem mabout=new MenuItem("关于");
myCanvas canvas;
frame(String t) {
super(t);
canvas = new myCanvas(this);
mgame.add(mstart);
mgame.add(mclose);
mhelp.add(mabout);
mgame.addActionListener(this);
mstart.addActionListener(this);
mclose.addActionListener(this);
mhelp.addActionListener(this);
mabout.addActionListener(this);
mbar.add(mgame);
mbar.add(mhelp);
this.setMenuBar(mbar);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
this.add(canvas);
this.pack();
this.show();
this.setLocation(380,100);
this.setResizable(false);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==mstart)
{
repaint();
}
else if(e.getSource()==mclose){
this.dispose();
System.exit(0);
}
if(e.getSource()==mabout){
about frm=new about();
}
pack();
}
}

class chessman{
private boolean isExist;
private boolean isColor;
public chessman(boolean isExist){
this.isExist = isExist ;
}
boolean getChessExist() {
return isExist;
}
boolean getChessColor() {
return isColor;
}
void setChessExist(boolean m){
isExist = m;
}
void setChessColor(boolean m) { //设置棋的颜色
isColor = m;
}
}

class myCanvas extends Canvas implements MouseListener {
frame myFrame;
//保存棋子
private chessman chessMan[][] = new chessman[19][19];

int mx,my;//获取位置
int x,y;
boolean state = true;
myCanvas(frame myFrame) {

this.myFrame = myFrame;
setBackground(Color.cyan);
addMouseListener(this);
for(int i=0;i<19;i++)
for(int j=0;j<19;j++)
chessMan[i][j] = new chessman(false);
}
public void start() {
for(int i=0;i<19;i++)
for(int j=0;j<19;j++)
chessMan[i][j].setChessExist(false);
}
public void paint(Graphics g) {//画线
Dimension size = this.getSize();
g.drawRect(0,0,size.width-1,size.height-1);
g.draw3DRect(1,1,size.width-3,size.height-3,true);
for(int i=0;i<19;i++)
g.drawLine(30,i*24+30,462,i*24+30);
for(int j=0;j<19;j++)
g.drawLine(j*24+30,30,j*24+30,462);
x=(int)((mx-20)/24);
y=(int)((my-20)/24); //计算落子位置
if(!chessMan[y][x].getChessExist()&&(mx>=18||my>=18)){
chessMan[y][x].setChessExist(true);
chessMan[y][x].setChessColor(state);
state = !state;
}
for(int i =0;i<19;i++)
for(int j=0;j<19;j++){
if(chessMan[i][j].getChessExist())
{
if(chessMan[i][j].getChessColor()==true){
g.setColor(Color.black); //默认黑棋先下

}
else{
g.setColor(Color.white);
}
g.fillOval(j*24+21,i*24+21,18,18);
// whowin(x, y) ;
}
}
}

/* public void whowin(int x, int y) {

int m1 = 0, m2 = 0, m3 = 0, m4 = 0;

for (int i = 1; i < 5; i++) {//判断-------向左-------

if (x - i > 0 && chessMan[x - i][y] == chessMan[x][y]) {
m1++;
}

}

for (int j = 1; j < 5; j++) {//判断-------向右-------

if (x + j < 20 && chessMan[x + j][y] == chessMan[x][y]) {
m1++;
}

}

//判断输赢------shu线
for (int i = 1; i < 5; i++) {//判断-------向下-----------

if (y + i < 20 && chessMan[x][y + i] == chessMan[x][y]) {
m2++;
}
}
for (int i = 1; i < 5; i++) {//判断-------向上------------

if (y - i > 0 && chessMan[x][y - i] == chessMan[x][y]) {
m2++;
}

}
//判断输赢------\线
for (int i = 1; i < 5; i++) {//判断-------向左上-------------

if (x - i > 0 && y - i > 0 && chessMan[x - i][y - i] == chessMan[x][y]) {
m3++;

}

}
for (int i = 1; i < 5; i++) {//判断-------向右下-------------

if (x + i < 20 && y + i < 20 && chessMan[x + i][y + i] == chessMan[x][y]) {
m3++;
}

}

//判断输赢------/线
for (int i = 1; i < 5; i++) {//判断-------向左下------------

if (x - i > 0 && y + i < 20 && chessMan[x - i][y + i] == chessMan[x][y]) {
m4++;
}
}
for (int i = 1; i < 5; i++) {//判断-------向右上--------------

if (y - i > 0 && x + i < 20 && chessMan[x + i][y - i] == chessMan[x][y]) {
m4++;
}
}
//***************最后判断输赢********************
if (m1 > 3 || m2 > 3 || m3 > 3 || m4 > 3) {
if (chessMan[x][y] == ) {//----因为下棋后将棋子颜色改为对方的颜色,所以这里互相调一下---
JOptionPane.showMessageDialog(this, "hei-----win");
isgamealive = 0;
}
if (chessMan[x][y] == false) {
JOptionPane.showMessageDialog(this, "bai-----win");
isgamealive = 0;
}
}
}*/
public Dimension getPreferredSize() {
return new Dimension(492,492); //返回图形大小
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
mx = e.getX();
my = e.getY();
repaint();
}
}

class about extends Frame implements WindowListener //设置关于
{
about() {
this.setSize(300,170);
this.setTitle("关于五子棋游戏");
this.addWindowListener(this);
this.setVisible(true);
this.setLocation(400,200);
this.setResizable(false);
this.setLayout(new FlowLayout());
Label text1 =new Label();
Label text2 =new Label();
Label text3=new Label();

text1.setText("游戏介绍:");
text1.setFont(new Font("黑体",Font.ITALIC,25));
text1.setAlignment(text1.CENTER);
text1.setVisible(true);

text2.setText("横排,竖排,斜排,谁先放到5个就赢。");
text2.setFont(new Font("黑体",Font.PLAIN,15));
text2.setAlignment(text1.LEFT);
text2.setVisible(true);

text3.setText("制作者:0957207吴君");
text3.setFont(new Font("楷体",Font.PLAIN,15));
text3.setVisible(true);

this.add(text1,"North");
this.add(text2,"West");
this.add(text3,"South");
this.show(true);
}
public void windowActivated(WindowEvent e){}
public void windowClosed(WindowEvent e){
}
public void windowClosing(WindowEvent e){
this.dispose();
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
}

给你发了,记得给个答复啊。O(∩_∩)O~

java鼠标点击事件
答:给你一个例子,太难讲了 我自己写的 package guidemo;import java.awt.*;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;/ Title: 图形用户界面 Description: 简单的图形界面编程 Copyright: Copyright (c) 2006 Company: author vic version 1.0 / public class ColorFrame...

请问java中怎么实现鼠标经过事件?
答:在每个格点上加透明组件,组件的大小就是你想圈出一个区域的大小,并给组件加上鼠标经过事件,这样就简单多了。如果不想在格点上做组件,那就计算出所有格点的圈出区域的坐标,假设每个区域都是正方形的(非圆形),那么每个格点就是有4个坐标集合(x,x+长,y,y+宽)。取窗体鼠标移动事件,获取...

Java 怎样用mouseMoved()实现鼠标移动触发事件
答:import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;import javax.swing.JButton;import javax.swing.JFrame;public class BuTest implements MouseMotionListener{ JFrame jf=new JFrame("在按钮上移动的文字");JButton[] button=new JButton[9];int mount=0;public void ...

怎样用JAVA实现鼠标单击一个Button,并且选中该Button的效果...类似wind...
答:1.按钮事件啥都不写,点击按钮后那个虚框(焦点)会自动移动到点击的按钮上,只要你不跳转,按钮就呈选中效果 2.按钮id=button 设置 requestforcus(),效果同上也是让他获得焦点 3.★如果你说的是不点击就呈现这种点击的效果,直接 button.click();让他点下去就行了★ 4.实在不行 2张图片,一张点...

java中鼠标右击弹出菜单怎样实现
答:简单的实现代码如下:import java.awt.MenuBar;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JPopupMenu;/* * java中鼠标右击弹出菜单怎样实现 */public class Demo {public static void main(String[] args) {final JFrame jf...

java 代码操作鼠标点击
答:java 事件 消息传递机制 实际上是 1、用户点击鼠标左键。2、操作系统触发一个事件传递个java程序。3、java程序再去触发你代码里相关控件的ui响应或者你自己定义的Listener。我认为想要实现你的需求的话,忽略1,在2处模拟操作系统同,传递一个事件给java程序了,这只是我的一个想法,没试过,你可以...

JAVA中设置鼠标点击事件怎么设置啊?为什么没反应?跪谢
答:代码是图片逐句逐句看太麻烦了~ ~,根据你的意思直接做了个差不多的,代码如下 import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.* ;public class Student { public static void main(String args[]){ JFrame jf = new JFrame() ;jf.setVisible(true) ;...

java实现类似 鼠标在桌面上点击左键并拖动,能出现一个矩形的功能,代码...
答:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class test { public static void main(String[] args){ new fm();} } class fm extends JFrame { int orgx,orgy,endx,endy;Image oimage=null;Graphics gr=null;Dimension d=Toolkit.getDefaultToolkit().getScreen...

java 鼠标点击事件
答:Override public void mouseClicked ( MouseEvent e ){ if (e.getButton () == MouseEvent.BUTTON1){ System.out.println ("hello");} }

java 鼠标事件
答:text="您点击了鼠标左键";}else if(e.getModifiers()==e.BUTTON3_MASK){ text="您点击了鼠标右键";} show.setText(text);} public void mouseEntered(MouseEvent e){};public void mouseExited(MouseEvent e) {};public void mousePressed(MouseEvent e){};public void mouseReleased(MouseEvent...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网