import java.awt.*;
import java.awt.event.*;
public class FiveGame extends Frame implements MouseListener
{
static FiveGame f=new FiveGame();
static int a[][]=new int[19][19];
static int flag_now=1; //当前谁下棋
static int flag_win=0; //胜利标志
public static void main(String args[])
{
f.setTitle("五子棋");
f.setBounds(100,70,850,650);
f.setResizable(false);
f.setBackground(new Color(220,220,120));
f.addMouseListener(f);
f.setLayout(null);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
}
public void paint(Graphics g)
{
int i,j;
for(i=0;i<=18;i++)
{
g.drawLine(40,60+i*30,580,60+i*30);
g.drawLine(40+i*30,60,40+i*30,600);
}
for(i=3;i<=15;i+=6)
for(j=3;j<=15;j+=6)
g.fillOval(40+i*30-4,60+j*30-4,8,8);
for(i=0;i<=18;i++)
for(j=0;j<=18;j++)
{
if(a[i][j]==1)
{
g.setColor(Color.BLACK);
g.fillOval(40+i*30-12,60+j*30-12,24,24);
}
if(a[i][j]==2)
{
g.setColor(Color.WHITE);
g.fillOval(40+i*30-12,60+j*30-12,24,24);
}
}
}
public void mousePressed(MouseEvent e)
{
int i=(e.getX()-25)/30;
int j=(e.getY()-45)/30;
if(flag_win==0)
{
if(CanDown(i,j))
{
a[i][j]=flag_now;
if(IsWin(flag_now))
flag_win=1;
else
flag_now=3-flag_now;
}
}
f.update(getGraphics());
}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public boolean CanDown(int i,int j)
{
if(i<0||j<0||i>18||j>18||a[i][j]!=0)
return false;
return true;
}
public boolean IsWin(int now)
{
for(int i=0;i<=18;i++)
for(int j=0;j<=18;j++)
if(a[i][j]==now)
{
if(i+4<=18&&a[i+1][j]==now&&a[i+2][j]==now&&a[i+3][j]==now&&a[i+4][j]==now) return true;
if(j+4<=18&&a[i][j+1]==now&&a[i][j+2]==now&&a[i][j+3]==now&&a[i][j+4]==now) return true;
if(i+4<=18&&j+4<=18&&a[i+1][j+1]==now&&a[i+2][j+2]==now&&a[i+3][j+3]==now&&a[i+4][j+4]==now) return true;
if(i+4<=18&&j-4>=0&&a[i+1][j-1]==now&&a[i+2][j-2]==now&&a[i+3][j-3]==now&&a[i+4][j-4]==now) return true;
}
return false;
}
}
java 五子棋 源代码 在我的基础上加个悔棋 判断胜负后把胜利的一方显示...
2 --> 白子 比如: allChess[2][3]=2 --> 第3行第4列为白子 如果想要悔棋的话,我的理解是这样的:拿白子举例:每下一个白子后,保存两个数组,连续下两次白子之后的数组,如果想悔棋,黑方确认之后,返回到上一次白子下后的数组。楼主这样试试 ...
系统框图如下 java实现五子棋程序 可以实现人人对战 人机对战 简单功能...
我自己先写了用自定义数组模拟的栈,但由于是学Java语言且由于悔棋的存储空间需要随当前步数增大而增大(由于每局最多下225步,即最多要悔225步,所以自己开个225的数组完全可以避免存储空间自增长的问题且内存完全可以接受,之所以不用自定义数组而用ArrayList类主要是为了尝试Java中STL的用法),所有我最终改为用Java类库...
java五子棋代码谁能帮我加个悔棋功能上去,急!!!
其实,你在走棋的那一步里面加上日志就可以了,把走的每一步写在日志文件里面,然后,悔棋的时候从日志文件读取一行出来还原就可以了。
用C++编写的小游戏源代码
五子棋的代码:include<iostream> include<stdio.h> include<stdlib.h> include using namespace std;const int N=15; \/\/15*15的棋盘 const char ChessBoardflag = ' '; \/\/棋盘标志 const char flag1='o'; \/\/玩家1或电脑的棋子标志 const char flag2='X'; \/\/玩家2的棋子标...
我想知道五子棋的AI怎么写?求C\/C++源码带详细注释的,或者直接详细讲算法...
三、胜负判断 实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。具体见下面的图示:四、搜索算法...