java五子棋设计
㈠ 用java设计游戏:五子棋游戏
下面的源代码分为4个文件;
chessClient.java:客户端主程序。
chessInterface.java:客户端的界面。
chessPad.java:棋盘的绘制。
chessServer.java:服务器端。
可同时容纳50个人同时在线下棋,聊天。
没有加上详细注释,不过绝对可以运行,j2sdk1.4下通过。
/*********************************************************************************************
1.chessClient.java
**********************************************************************************************/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
class clientThread extends Thread
{
 chessClient chessclient;
 clientThread(chessClient chessclient)
 {
  this.chessclient=chessclient;
 }
 public void acceptMessage(String recMessage)
 {
  if(recMessage.startsWith("/userlist "))
  {
   StringTokenizer userToken=new StringTokenizer(recMessage," ");
   int userNumber=0;
   chessclient.userpad.userList.removeAll();
   chessclient.inputpad.userChoice.removeAll();
   chessclient.inputpad.userChoice.addItem("所有人");
   while(userToken.hasMoreTokens())
   {
    String user=(String)userToken.nextToken(" ");
    if(userNumber>0 && !user.startsWith("[inchess]"))
    {
     chessclient.userpad.userList.add(user);
     chessclient.inputpad.userChoice.addItem(user);
    }
    userNumber++;
   }
   chessclient.inputpad.userChoice.select("所有人");
  }
  else if(recMessage.startsWith("/yourname "))
  {
   chessclient.chessClientName=recMessage.substring(10);
   chessclient.setTitle("Java五子棋客户端   "+"用户名:"+chessclient.chessClientName);
  }
  else if(recMessage.equals("/reject"))
  {
   try
   {
    chessclient.chesspad.statusText.setText("不能加入游戏");
    chessclient.controlpad.cancelGameButton.setEnabled(false);
    chessclient.controlpad.joinGameButton.setEnabled(true);
    chessclient.controlpad.creatGameButton.setEnabled(true);
   }
   catch(Exception ef)
   {
    chessclient.chatpad.chatLineArea.setText("chessclient.chesspad.chessSocket.close无法关闭");
   }
   chessclient.controlpad.joinGameButton.setEnabled(true);
  }
  else if(recMessage.startsWith("/peer "))
  {
   chessclient.chesspad.chessPeerName=recMessage.substring(6);
   if(chessclient.isServer)
   {
    chessclient.chesspad.chessColor=1;
    chessclient.chesspad.isMouseEnabled=true;
    chessclient.chesspad.statusText.setText("请黑棋下子");
   }
   else if(chessclient.isClient)
   {
    chessclient.chesspad.chessColor=-1;
    chessclient.chesspad.statusText.setText("已加入游戏,等待对方下子...");
   }
  }
  else if(recMessage.equals("/youwin"))
  {
   chessclient.isOnChess=false;
   chessclient.chesspad.chessVictory(chessclient.chesspad.chessColor);
   chessclient.chesspad.statusText.setText("对方退出,请点放弃游戏退出连接");
   chessclient.chesspad.isMouseEnabled=false;
  }
  else if(recMessage.equals("/OK"))
  {
   chessclient.chesspad.statusText.setText("创建游戏成功,等待别人加入...");
  }
  else if(recMessage.equals("/error"))
  {
   chessclient.chatpad.chatLineArea.append("传输错误:请退出程序,重新加入 \n");
  }
  else
  {
   chessclient.chatpad.chatLineArea.append(recMessage+"\n");
   chessclient.chatpad.chatLineArea.setCaretPosition(
    chessclient.chatpad.chatLineArea.getText().length());
  }
 }
public void run()
 {
     String message="";
     try
     {
   while(true)
   {
    message=chessclient.in.readUTF();
    acceptMessage(message);
   }
  }
  catch(IOException es)
  {
  }
 }
}
public class chessClient extends Frame implements ActionListener,KeyListener
{
 userPad userpad=new userPad();
 chatPad chatpad=new chatPad();
 controlPad controlpad=new controlPad();
 chessPad chesspad=new chessPad();
 inputPad inputpad=new inputPad();
Socket chatSocket;
 DataInputStream in;
 DataOutputStream out;
 String chessClientName=null;
 String host=null;
 int port=4331;
 boolean isOnChat=false;  //在聊天?
 boolean isOnChess=false; //在下棋?
 boolean isGameConnected=false; //下棋的客户端连接?
 boolean isServer=false; //如果是下棋的主机
 boolean isClient=false; //如果是下棋的客户端
 Panel southPanel=new Panel();
 Panel northPanel=new Panel();
 Panel centerPanel=new Panel();
 Panel westPanel=new Panel();
 Panel eastPanel=new Panel();
 chessClient()
 {
  super("Java五子棋客户端");
  setLayout(new BorderLayout());
  host=controlpad.inputIP.getText();
  westPanel.setLayout(new BorderLayout());
  westPanel.add(userpad,BorderLayout.NORTH);
  westPanel.add(chatpad,BorderLayout.CENTER);
  westPanel.setBackground(Color.pink);
  inputpad.inputWords.addKeyListener(this);
  chesspad.host=controlpad.inputIP.getText();
  centerPanel.add(chesspad,BorderLayout.CENTER);
  centerPanel.add(inputpad,BorderLayout.SOUTH);
  centerPanel.setBackground(Color.pink);
  controlpad.connectButton.addActionListener(this);
  controlpad.creatGameButton.addActionListener(this);
  controlpad.joinGameButton.addActionListener(this);
  controlpad.cancelGameButton.addActionListener(this);
  controlpad.exitGameButton.addActionListener(this);
  controlpad.creatGameButton.setEnabled(false);
  controlpad.joinGameButton.setEnabled(false);
  controlpad.cancelGameButton.setEnabled(false);
  southPanel.add(controlpad,BorderLayout.CENTER);
  southPanel.setBackground(Color.pink);
addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
     if(isOnChat)
     {
      try
      {
       chatSocket.close();
      }
      catch(Exception ed)
      {
      }
     }
     if(isOnChess || isGameConnected)
     {
      try
      {
       chesspad.chessSocket.close();
      }
      catch(Exception ee)
      {
      }
     }
    System.exit(0);
   }
   public void windowActivated(WindowEvent ea)
   {
   }
  });
       add(westPanel,BorderLayout.WEST);
      add(centerPanel,BorderLayout.CENTER);
      add(southPanel,BorderLayout.SOUTH);
  pack();
  setSize(670,548);
  setVisible(true);
  setResizable(false);
  validate();
 }
public boolean connectServer(String serverIP,int serverPort) throws Exception
 {
  try
  {
   chatSocket=new Socket(serverIP,serverPort);
   in=new DataInputStream(chatSocket.getInputStream());
   out=new DataOutputStream(chatSocket.getOutputStream());
   clientThread clientthread=new clientThread(this);
   clientthread.start();
   isOnChat=true;
   return true;
  }
  catch(IOException ex)
  {
   chatpad.chatLineArea.setText("chessClient:connectServer:无法连接,建议重新启动程序 \n");
  }
  return false;
 }
public void actionPerformed(ActionEvent e)
  {
   if(e.getSource()==controlpad.connectButton)
   {
    host=chesspad.host=controlpad.inputIP.getText();
    try
    {
     if(connectServer(host,port))
     {
      chatpad.chatLineArea.setText("");
      controlpad.connectButton.setEnabled(false);
      controlpad.creatGameButton.setEnabled(true);
      controlpad.joinGameButton.setEnabled(true);
      chesspad.statusText.setText("连接成功,请创建游戏或加入游戏");
     }
}
    catch(Exception ei)
    {
     chatpad.chatLineArea.setText("controlpad.connectButton:无法连接,建议重新启动程序 \n");
    }
    }
    if(e.getSource()==controlpad.exitGameButton)
    {
     if(isOnChat)
     {
      try
      {
       chatSocket.close();
      }
      catch(Exception ed)
      {
      }
     }
     if(isOnChess || isGameConnected)
     {
      try
      {
       chesspad.chessSocket.close();
      }
      catch(Exception ee)
      {
      }
     }
     System.exit(0);
    }
    if(e.getSource()==controlpad.joinGameButton)
    {
     String selectedUser=userpad.userList.getSelectedItem();
     if(selectedUser==null || selectedUser.startsWith("[inchess]") ||
       selectedUser.equals(chessClientName))
     {
      chesspad.statusText.setText("必须先选定一个有效用户");
     }
     else
     {
      try
      {
       if(!isGameConnected)
       {
        if(chesspad.connectServer(chesspad.host,chesspad.port))
        {
         isGameConnected=true;
         isOnChess=true;
         isClient=true;
         controlpad.creatGameButton.setEnabled(false);
         controlpad.joinGameButton.setEnabled(false);
         controlpad.cancelGameButton.setEnabled(true);
         chesspad.chessthread.sendMessage("/joingame "+userpad.userList.getSelectedItem()+" "+chessClientName);
        }
       }
       else
       {
        isOnChess=true;
        isClient=true;
        controlpad.creatGameButton.setEnabled(false);
        controlpad.joinGameButton.setEnabled(false);
        controlpad.cancelGameButton.setEnabled(true);
        chesspad.chessthread.sendMessage("/joingame "+userpad.userList.getSelectedItem()+" "+chessClientName);
       }
}
      catch(Exception ee)
      {
       isGameConnected=false;
       isOnChess=false;
       isClient=false;
       controlpad.creatGameButton.setEnabled(true);
       controlpad.joinGameButton.setEnabled(true);
       controlpad.cancelGameButton.setEnabled(false);
       chatpad.chatLineArea.setText("chesspad.connectServer无法连接 \n"+ee);
      }
     }
    }
    if(e.getSource()==controlpad.creatGameButton)
    {
     try
     {
      if(!isGameConnected)
      {
       if(chesspad.connectServer(chesspad.host,chesspad.port))
       {
        isGameConnected=true;
        isOnChess=true;
        isServer=true;
        controlpad.creatGameButton.setEnabled(false);
        controlpad.joinGameButton.setEnabled(false);
        controlpad.cancelGameButton.setEnabled(true);
        chesspad.chessthread.sendMessage("/creatgame "+"[inchess]"+chessClientName);
       }
      }
      else
      {
       isOnChess=true;
       isServer=true;
       controlpad.creatGameButton.setEnabled(false);
       controlpad.joinGameButton.setEnabled(false);
       controlpad.cancelGameButton.setEnabled(true);
       chesspad.chessthread.sendMessage("/creatgame "+"[inchess]"+chessClientName);
      }
     }
     catch(Exception ec)
     {
      isGameConnected=false;
      isOnChess=false;
      isServer=false;
      controlpad.creatGameButton.setEnabled(true);
      controlpad.joinGameButton.setEnabled(true);
      controlpad.cancelGameButton.setEnabled(false);
      ec.printStackTrace();
      chatpad.chatLineArea.setText("chesspad.connectServer无法连接 \n"+ec);
     }
    }
    if(e.getSource()==controlpad.cancelGameButton)
    {
        if(isOnChess)
        {
      chesspad.chessthread.sendMessage("/giveup "+chessClientName);
      chesspad.chessVictory(-1*chesspad.chessColor);
      controlpad.creatGameButton.setEnabled(true);
      controlpad.joinGameButton.setEnabled(true);
      controlpad.cancelGameButton.setEnabled(false);
      chesspad.statusText.setText("请建立游戏或者加入游戏");
     }
     if(!isOnChess)
     {
      controlpad.creatGameButton.setEnabled(true);
      controlpad.joinGameButton.setEnabled(true);
      controlpad.cancelGameButton.setEnabled(false);
      chesspad.statusText.setText("请建立游戏或者加入游戏");
     }
     isClient=isServer=false;
     }
   }
public void keyPressed(KeyEvent e)
   {
    TextField inputWords=(TextField)e.getSource();
if(e.getKeyCode()==KeyEvent.VK_ENTER)
    {
     if(inputpad.userChoice.getSelectedItem().equals("所有人"))
     {
      try
      {
       out.writeUTF(inputWords.getText());
       inputWords.setText("");
      }
      catch(Exception ea)
      {
       chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接 \n");
       userpad.userList.removeAll();
       inputpad.userChoice.removeAll();
       inputWords.setText("");
       controlpad.connectButton.setEnabled(true);
      }
     }
     else
     {
      try
      {
       out.writeUTF("/"+inputpad.userChoice.getSelectedItem()+" "+inputWords.getText());
       inputWords.setText("");
      }
      catch(Exception ea)
      {
       chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接 \n");
       userpad.userList.removeAll();
       inputpad.userChoice.removeAll();
       inputWords.setText("");
       controlpad.connectButton.setEnabled(true);
      }
     }
      }
   }
   public void keyTyped(KeyEvent e)
   {
   }
   public void keyReleased(KeyEvent e)
   {
   }
public static void main(String args[])
   {
    chessClient chessClient=new chessClient();
   }
}
/******************************************************************************************
下面是:chessInteface.java
******************************************************************************************/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
class userPad extends Panel
{
 List userList=new List(10);
 userPad()
 {
  setLayout(new BorderLayout());
  for(int i=0;i<50;i++)
  {
   userList.add(i+"."+"没有用户");
  }
  add(userList,BorderLayout.CENTER);
 }
}
class chatPad extends Panel
{
 TextArea chatLineArea=new TextArea("",18,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
 chatPad()
 {
  setLayout(new BorderLayout());
  add(chatLineArea,BorderLayout.CENTER);
 }
}
class controlPad extends Panel
{
 Label IPlabel=new Label("IP",Label.LEFT);
 TextField inputIP=new TextField("localhost",10);
 Button connectButton=new Button("连接主机");
 Button creatGameButton=new Button("建立游戏");
 Button joinGameButton=new Button("加入游戏");
 Button cancelGameButton=new Button("放弃游戏");
 Button exitGameButton=new Button("关闭程序");
 controlPad()
 {
  setLayout(new FlowLayout(FlowLayout.LEFT));
        setBackground(Color.pink);
  add(IPlabel);
  add(inputIP);
  add(connectButton);
  add(creatGameButton);
  add(joinGameButton);
  add(cancelGameButton);
  add(exitGameButton);
 }
}
class inputPad extends Panel
{
 TextField inputWords=new TextField("",40);
 Choice userChoice=new Choice();
 inputPad()
 {
  setLayout(new FlowLayout(FlowLayout.LEFT));
  for(int i=0;i<50;i++)
  {
   userChoice.addItem(i+"."+"没有用户");
  }
  userChoice.setSize(60,24);
  add(userChoice);
  add(inputWords);
 }
}
/**********************************************************************************************
下面是:chessPad.java
**********************************************************************************************/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
class chessThread extends Thread
{
 chessPad chesspad;
 chessThread(chessPad chesspad)
 {
  this.chesspad=chesspad;
 }
 public void sendMessage(String sndMessage)
 {
  try
  {
   chesspad.outData.writeUTF(sndMessage);
  }
  catch(Exception ea)
  {
   System.out.println("chessThread.sendMessage:"+ea);
  }
 }
public void acceptMessage(String recMessage)
 {
  if(recMessage.startsWith("/chess "))
  {
   StringTokenizer userToken=new StringTokenizer(recMessage," ");
   String chessToken;
   String[] chessOpt={"-1","-1","0"};
   int chessOptNum=0;
   while(userToken.hasMoreTokens())
   {
    chessToken=(String)userToken.nextToken(" ");
    if(chessOptNum>=1 && chessOptNum<=3)
    {
     chessOpt[chessOptNum-1]=chessToken;
    }
    chessOptNum++;
   }
   chesspad.netChessPaint(Integer.parseInt(chessOpt[0]),Integer.parseInt(chessOpt[1]),Integer.parseInt(chessOpt[2]));
  }
  else if(recMessage.startsWith("/yourname "))
  {
   chesspad.chessSelfName=recMessage.substring(10);
  }
  else if(recMessage.equals("/error"))
  {
   chesspad.statusText.setText("错误:没有这个用户,请退出程序,重新加入");
  }
  else
  {
   //System.out.println(recMessage);
  }
 }
public void run()
 {
     String message="";
     try
     {
   while(true)
   {
    message=chesspad.inData.readUTF();
    acceptMessage(message);
   }
  }
  catch(IOException es)
  {
  }
 }
}
class chessPad extends Panel implements MouseListener,ActionListener
{
 int chessPoint_x=-1,chessPoint_y=-1,chessColor=1;
 int chessBlack_x[]=new int[200];
 int chessBlack_y[]=new int[200];
 int chessWhite_x[]=new int[200];
 int chessWhite_y[]=new int[200];
 int chessBlackCount=0,chessWhiteCount=0;
 int chessBlackWin=0,chessWhiteWin=0;
 boolean isMouseEnabled=false,isWin=false,isInGame=false;
 TextField statusText=new TextField("请先连接服务器");
    Socket chessSocket;
 DataInputStream inData;
 DataOutputStream outData;
 String chessSelfName=null;
 String chessPeerName=null;
 String host=null;
 int port=4331;
 chessThread chessthread=new chessThread(this);
    chessPad()
    {
  setSize(440,440);
     setLayout(null);
     setBackground(Color.pink);
     addMouseListener(this);
     add(statusText);
     statusText.setBounds(40,5,360,24);
     statusText.setEditable(false);
    }
public boolean connectServer(String ServerIP,int ServerPort) throws Exception
  {
   try
   {
    chessSocket=new Socket(ServerIP,ServerPort);
    inData=new DataInputStream(chessSocket.getInputStream());
    outData=new DataOutputStream(chessSocket.getOutputStream());
     chessthread.start();
    return true;
   }
   catch(IOException ex)
   {
    statusText.setText("chessPad:connectServer:无法连接 \n");
   }
   return false;
  }
public void chessVictory(int chessColorWin)
     {
    this.removeAll();
     for(int i=0;i<=chessBlackCount;i++)
    {
     chessBlack_x[i]=0;
          chessBlack_y[i]=0;
    }
    for(int i=0;i<=chessWhiteCount;i++)
    {
     chessWhite_x[i]=0;
          chessWhite_y[i]=0;
    }
    chessBlackCount=0;
    chessWhiteCount=0;
    add(statusText);
    statusText.setBounds(40,5,360,24);
         if(chessColorWin==1)
   { chessBlackWin++;
    statusText.setText("黑棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待白棋下子...");
   }
      else if(chessColorWin==-1)
      {
    chessWhiteWin++;
    statusText.setText("白棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待黑棋下子...");
   }
  }
public void getLocation(int a,int b,int color)
     {
   if(color==1)
   {
    chessBlack_x[chessBlackCount]=a*20;
    chessBlack_y[chessBlackCount]=b*20;
    chessBlackCount++;
   }
   else if(color==-1)
   {
    chessWhite_x[chessWhiteCount]=a*20;
    chessWhite_y[chessWhiteCount]=b*20;
    chessWhiteCount++;
   }
  }
public boolean checkWin(int a,int b,int checkColor)
     {
   int step=1,chessLink=1,chessLinkTest=1,chessCompare=0;
   if(checkColor==1)
   {
    chessLink=1;
    for(step=1;step<=4;step++)
    {
     for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
     {
      if(((a+step)*20==chessBlack_x[chessCompare]) && ((b*20)==chessBlack_y[chessCompare]))
      {
       chessLink=chessLink+1;
       if(chessLink==5)
       {
        return(true);
       }
      }
      }
      if(chessLink==(chessLinkTest+1))
      chessLinkTest++;
      else
      break;
     }
    for(step=1;step<=4;step++)
    {
     for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
     {
      if(((a-step)*20==chessBlack_x[chessCompare]) && (b*20==chessBlack_y[chessCompare]))
      {
       chessLink++;
       if(chessLink==5)
       {
        return(true);
       }
       }
      }
      if(chessLink==(chessLinkTest+1))
      chessLinkTest++;
      else
      break;
     }
    chessLink=1;
    chessLinkTest=1;
    for(step=1;step<=4;step++)
    {
     for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
     {
      if((a*20==chessBlack_x[chessCompare]) && ((b+step)*20==chessBlack_y[chessCompare]))
      {
 
㈡ java程序五子棋设计
这是最基本的思路,还有网络五子棋
㈢ 五子棋的Java算法
五子棋的算法是比较简单的。 
把棋盘当作一个 2 维数组。   用2维数组来当作棋盘的坐标系
当落子   之后。  把落子,插入到 数组中       获得  棋盘  的数组,    循环刚才数组, 判断,
刚才 数组元素 的    横向坐标  -5   到刚才 数组元素坐标 + 5   是否都是  一个数字(黑子代表 1 ,白子代表0) 只要其中 有连续 5个 都是 黑子,或者白子,  则黑子或白子 赢了。
判断,刚才元素            纵向坐标  -5         到  + 5    如上判断。 
判断   右斜线。       判断  横向坐标  -5   y -5       到 横向坐标 + 5  y + 5
判断  y + 5  x + 5     到  y-5   x  -5
简单来说。
用2维数组  来代表 棋盘 ,  每次在  界面上,  由白子,或黑子  落子之后, 在数组相应坐标,放入 1  或者0 。    
然后循环数组判断,  数组横向       竖向        右斜线        左斜线     是否是 黑子或者白子 连续的。 如果是,则获胜。
㈣ 五子棋游戏用Java设计
可以写一个仿的五子棋 ,图片可以绘制,
主要逻辑:
1.用二维数组存储整个棋盘
2. 每一个格子,存在三种状态, 0,1,2
0代表空白 ,1代表白棋 ,2代表黑棋 . 只有0的状态(没有棋子)才能改变成其他状态
3. 每走一步, 就判断是否有输赢(横向,纵向,两条斜线)是否有5连的情况
效果如下

㈤ java程序设计,五子棋判断输赢
#define MAX_LINE 15
#define MAX_ROW 15
int Map[MAX_LINE][MAX_ROW];
int CheckWin() //返回0表示都没赢,返回1表示白棋赢,返回2表示黑棋赢
{ 
 int i,j,k; 
 int tmp;
 /* 判断所有横行 */
 for(i=0;i<MAX_LINE;i++)
 {
  for(j=0;j<MAX_ROW-5;j++)  
  {  
   tmp=Map[i][j];   
   if( tmp != 0)    
   {    
    for(k=1;k<5;k++)
     if(Map[i][j+k] != tmp)      /* 判断Map[i][j+0]到Map[i][j+4]是否都相等(且不等于0) */
      break;     
     if(k==6)      
      return tmp;   
   }   
  }
 }
 /* 判断所有纵行 */
 for(i=0;i<MAX_LINE-5;i++)
 {
  for(j=0;j<MAX_ROW;j++)  
  {  
   tmp=Map[i][j];   
   if( tmp != 0)    
   {    
    for(k=1;k<5;k++)  /* 判断Map[i+0][j]到Map[i+4][j]是否都相等(且不等于0) */
     if(Map[i+k][j] != tmp)      
      break;     
     if(k==6)      
      return tmp;   
   }   
  }
 }
 /* 判断所有斜行(撇) */
 for(i=5;i<MAX_LINE;i++)
 {
  for(j=0;j<MAX_ROW-5;j++)  
  {  
   tmp=Map[i][j];   
   if( tmp != 0)    
   {    
    for(k=1;k<5;k++) /* 判断Map[i-0][j+0]到Map[i-4][j+4]是否都相等(且不等于0) */
     if(Map[i-k][j+k] != tmp)      
      break;     
     if(k==6)      
      return tmp;   
   }   
  }
 }
 /* 判断所有斜行(捺) */
 for(i=0;i<MAX_LINE-5;i++)
 {
  for(j=0;j<MAX_ROW-5;j++)  
  {  
   tmp=Map[i][j];   
   if( tmp != 0)    
   {    
    for(k=1;k<5;k++)
     if(Map[i+k][j+k] != tmp)      /* 判断Map[i+0][j+0]到Map[i+4][j+4]是否都相等(且不等于0) */
      break;     
     if(k==6)      
      return tmp;   
   }   
  }
 }
 return 0;
}
㈥ java 五子棋 源代码 在我的基础上加个悔棋 判断胜负后把胜利的一方显示在屏幕上 或别的标明胜利一方的 谢
我的设计是:
  allChess[19][19] ;//19 * 19 的棋盘  存放所有的棋子
  0 --> 当前没有棋子
  1 --> 黑子
  2 --> 白子
比如: allChess[2][3]=2  --> 第3行第4列为白子
如果想要悔棋的话,我的理解是这样的:
拿白子举例:
  每下一个白子后,保存两个数组,连续下两次白子之后的数组,如果想悔棋,黑方确认之后,返回到上一次白子下后的数组。
楼主这样试试
㈦ JAVA设计的五子棋源程序
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.*; 
class PaintPanel extends JPanel {
   ArrayList Items = new ArrayList();
   public PaintPanel() {
     setLayout(new BorderLayout());
     ButtonPanel buttonPanel = new ButtonPanel();
     add(buttonPanel, BorderLayout.SOUTH);
     addMouseListener(new MouseHandler());
   }
   public void paintComponent(Graphics g) {
     int startX = 50;
     int startY = 50;
     boolean isMy = false;
     super.paintComponent(g);
     Graphics2D g2 = (Graphics2D)g;
     for(int i=0; i<16; i++) {
       g2.draw(new Line2D.Double(startX, startY+20*i, startX+300, startY+20*i));
       g2.draw(new Line2D.Double(startX+20*i, startY, startX+20*i, startY+300));
     }
     for(int i=0; i<Items.size(); i++) {
       isMy = !isMy;
       if(isMy)
         g2.setColor(Color.BLACK);
       else
         g2.setColor(Color.WHITE);
       g2.fill((Ellipse2D)Items.get(i));
     }
   }
   void myRepaint() {
     repaint();
   }
   private class MouseHandler extends MouseAdapter {
     public void mousePressed(MouseEvent event) {
       int x = event.getX();
       int y = event.getY();
       paintItem(x, y);
       repaint();
     }
     void paintItem(int x, int y) {
       if(x > 50 && x < 350 && y >50 && y < 350) {
         int X = x / 20;
         int Y = y / 20;
         int centerX = X*20 + 10;
         int centerY = Y*20 + 10;
         Ellipse2D ellipse = new Ellipse2D.Double();
         ellipse.setFrameFromCenter(centerX, centerY, centerX+8, centerY+8);
         Items.add(ellipse);
       }
     }
   }
   private class ButtonPanel extends JPanel {
     public ButtonPanel() {
       JButton reset = new JButton("Reset");
       add(reset);
       JButton quit = new JButton("Quit");
       add(quit);
       ResetEvent listenerR = new ResetEvent();
       reset.addMouseListener(listenerR);
       QuitEvent listenerQ = new QuitEvent();
       quit.addMouseListener(listenerQ);
     }
     private class QuitEvent
         extends MouseAdapter {
       public void mouseClicked(MouseEvent event) {
         System.exit(1);
       }
     }
     private class ResetEvent
         extends MouseAdapter {
       public void mouseClicked(MouseEvent event) {
         Items.clear();
         myRepaint();
       }
     }
   }
}
class GameFrame extends JFrame {
   public GameFrame() {
     setTitle("A Little Game");
     setSize(400, 500);
     setResizable(false);
     PaintPanel panel = new PaintPanel();
     getContentPane().add(panel);
   }
} public class Game {
   public static void main(String[] args) {
     GameFrame frame = new GameFrame();
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.show();
   }
} 
//有缺陷,需要更加完善
㈧ 通过Java控制台程序完成一个五子棋游戏,能够实现黑白子交互下棋,程序自动判断输赢(需要完成判断输赢
importjava.util.Scanner;
publicclassFiveChessGame{
publicstaticvoiddisplay(char[][]arr){//图形显示函数
System.out.print("");
for(chari='0';i<='9';i++)
//打印行号0~9
System.out.print(i+"");
for(charj='a';j<='f';j++)
//打印行号a~f
System.out.print(j+"");
System.out.println();
charc='0';
for(inti=0;i<10;i++){
System.out.print(c+++"");
for(intj=0;j<16;j++){
System.out.print(arr[i][j]+"");
}
System.out.println();
}
c='a';
for(inti=10;i<16;i++){
System.out.print(c+++"");
for(intj=0;j<16;j++){
System.out.print(arr[i][j]+"");
}
System.out.println();
}
}
publicstaticintgetNum(charc){
intnum;
switch(c){
case'0':
num=0;
break;
case'1':
num=1;
break;
case'2':
num=2;
break;
case'3':
num=3;
break;
case'4':
num=4;
break;
case'5':
num=5;
break;
case'6':
num=6;
break;
case'7':
num=7;
break;
case'8':
num=8;
break;
case'9':
num=9;
break;
case'a':
case'A':
num=10;
break;
case'b':
case'B':
num=11;
break;
case'c':
case'C':
num=12;
break;
case'd':
case'D':
num=13;
break;
case'e':
case'E':
num=14;
break;
case'f':
case'F':
num=15;
break;
default:
System.out.println("输入有错误!");
return-1;
}
returnnum;
}
publicstaticintisWinner(charc,char[][]arr,inta,intb){
if(c=='@'){
intcount=0;
for(inti=0;i<16;i++){
if(arr[a][i]=='@'){
count++;
if(count>=5){
return1;
}
}else{
count=0;
}
}
count=0;
for(inti=0;i<16;i++){
if(arr[i][b]=='@'){
count++;
if(count>=5){
return1;
}
}else{
count=0;
}
}
count=0;
if(a>=b){
intj=0;
for(inti=a-b;i<=15-a+b;i++){
if(arr[i][j]=='@'){
count++;
j++;
if(count>=5){
return1;
}
}else{
count=0;
j++;
}
}
}else{
intj=0;
for(inti=b-a;i<=15-b+a;i++){
if(arr[j][i]=='@'){
count++;
j++;
if(count>=5){
return1;
}
}else{
count=0;
j++;
}
}
}
intj=a+b;
count=0;
if(a+b<=15){
for(inti=0;i<=a+b;i++){
if(arr[i][j]=='@'){
count++;
j--;
if(count>=5){
return1;
}
}else{
count=0;
j--;
}
}
}else{
j=15;
for(inti=a+b-15;i<=15;i++){
if(arr[i][j]=='@'){
count++;
j--;
if(count>=5){
return1;
}
}else{
count=0;
j--;
}
}
}
}else{//判断白色胜
intcount=0;
for(inti=0;i<16;i++){
if(arr[a][i]=='O'){
count++;
if(count>=5){
return2;
}
}else{
count=0;
}
}
count=0;
for(inti=0;i<16;i++){
if(arr[i][b]=='O'){
count++;
if(count>=5){
return2;
}
}else{
count=0;
}
}
count=0;
if(a>=b){
intj=0;
for(inti=a-b;i<=15-a+b;i++){
if(arr[i][j]=='O'){
count++;
j++;
if(count>=5){
return2;
}
}else{
count=0;
j++;
}
}
}else{
intj=0;
for(inti=b-a;i<=15-b+a;i++){
if(arr[j][i]=='O'){
count++;
j++;
if(count>=5){
return2;
}
}else{
count=0;
j++;
}
}
}
intj=a+b;
count=0;
if(a+b<=15){
for(inti=0;i<=a+b;i++){
if(arr[i][j]=='O'){
count++;
j--;
if(count>=5){
return2;
}
}else{
count=0;
j--;
}
}
}else{
j=15;
for(inti=a+b-15;i<=15;i++){
if(arr[i][j]=='O'){
count++;
j--;
if(count>=5){
return2;
}
}else{
count=0;
j--;
}
}
}
}
return0;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Scannersc=newScanner(System.in);
char[][]arr=newchar[16][16];
for(inti=0;i<16;i++)
//二维数组初始化
for(intj=0;j<16;j++)
arr[i][j]='.';
display(arr);
inti=0;
while(true){
if(i%2==0){
System.out.println("请黑方落子:");
Stringin=sc.next();
charc1=in.charAt(0);
charc2=in.charAt(1);
inta=getNum(c1);
intb=getNum(c2);
if(arr[a][b]!='.'){
System.out.println("该位置已经有棋子,请重新输入!");
}else{
arr[a][b]='@';
display(arr);
intresult=isWinner('@',arr,a,b);
if(result==1){
System.out.println("黑方获胜!");
return;
}
i++;
}
}else{
System.out.println("请白方落子:");
Stringin=sc.next();
charc1=in.charAt(0);
charc2=in.charAt(1);
inta=getNum(c1);
intb=getNum(c2);
if(arr[a][b]!='.'){
System.out.println("该位置已经有棋子,请重新输入!");
}else{
arr[a][b]='O';
display(arr);
intresult=isWinner('O',arr,a,b);
if(result==2){
System.out.println("白方获胜!");
return;
}
i++;
}
}
}
}
}

㈨ java 五子棋 课程设计
呵呵,代码自己测试:
import java.awt.*;   
import java.awt.event.*;   
import java.applet.Applet;   
import java.awt.Color;   
  
public class enzit extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener   
{   
int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子   
int intGame_Start=0;//游戏开始标志 0未开始 1游戏中   
int intGame_Body[][]=new int[16][16]; //设置棋盘棋子状态 0 无子 1 白子 2 黑子   
  
Button b1=new Button("游戏开始");   
Button b2=new Button("重置游戏");   
Label lblWin=new Label(" ");   
Checkbox ckbHB[]=new Checkbox[2];   
CheckboxGroup ckgHB=new CheckboxGroup();   
public void init()   
{   
setLayout(null);   
  
addMouseListener(this);   
add(b1);   
b1.setBounds(330,50,80,30);   
b1.addActionListener(this);   
add(b2);   
b2.setBounds(330,90,80,30);   
b2.addActionListener(this);   
ckbHB[0]=new Checkbox("白子先",ckgHB,false);   
ckbHB[0].setBounds(320,20,60,30);   
ckbHB[1]=new Checkbox("黑子先",ckgHB,false);   
ckbHB[1].setBounds(380,20,60,30);   
add(ckbHB[0]);   
add(ckbHB[1]);   
ckbHB[0].addItemListener(this);   
ckbHB[1].addItemListener(this);   
add(lblWin);   
lblWin.setBounds(330,130,80,30);   
  
Game_start_csh();   
}   
  
public void itemStateChanged(ItemEvent e)   
{   
if (ckbHB[0].getState()) //选择黑子先还是白子先   
{   
   color_Qizi=0;   
}   
else  
{   
   color_Qizi=1;   
}   
}   
  
public void actionPerformed(ActionEvent e)   
{   
Graphics g=getGraphics();   
if (e.getSource()==b1)   
{   
   Game_start();   
}   
else  
{   
   Game_re();   
}   
}   
  
public void mousePressed(MouseEvent e){}   
  
public void mouseClicked(MouseEvent e)   
{   
Graphics g=getGraphics();   
int x1,y1;   
x1=e.getX();   
y1=e.getY();   
if (e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300)   
{   
   return;   
}   
  
if (x1%20>10)   
{   
   x1+=20;   
}   
  
if(y1%20>10)   
{   
   y1+=20;   
}   
  
x1=x1/20*20;   
y1=y1/20*20;   
set_Qizi(x1,y1);   
  
}   
  
public void mouseEntered(MouseEvent e){}   
public void mouseExited(MouseEvent e){}   
public void mouseReleased(MouseEvent e){}   
public void mouseDragged(MouseEvent e){}   
public void mouseMoved(MouseEvent e){}   
  
public void paint(Graphics g)   
{   
draw_qipan(g);   
}   
  
public void set_Qizi(int x,int y) //落子   
{   
if (intGame_Start==0) //判断游戏未开始   
{   
   return;   
}   
  
if (intGame_Body[x/20][y/20]!=0)   
{   
   return;   
}   
Graphics g=getGraphics();   
  
if (color_Qizi==1)//判断黑子还是白子   
{   
   g.setColor(Color.black);   
   color_Qizi=0;   
}   
else  
{   
   g.setColor(Color.white);   
   color_Qizi=1;   
}   
  
g.fillOval(x-10,y-10,20,20);   
  
intGame_Body[x/20][y/20]=color_Qizi+1;   
if (Game_win_1(x/20,y/20)) //判断输赢   
{   
   lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");   
   intGame_Start=0;   
}   
  
if (Game_win_2(x/20,y/20)) //判断输赢   
{   
   lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");   
   intGame_Start=0;   
}   
  
if (Game_win_3(x/20,y/20)) //判断输赢   
{   
   lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");   
   intGame_Start=0;   
}   
  
if (Game_win_4(x/20,y/20)) //判断输赢   
{   
   lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");   
   intGame_Start=0;   
}   
}   
  
public String Get_qizi_color(int x)   
{   
if (x==0)   
{   
   return "黑子";   
}   
else  
{   
   return "白子";   
}   
}   
  
public void draw_qipan(Graphics G) //画棋盘 15*15   
{   
G.setColor(Color.lightGray);   
G.fill3DRect(10,10,300,300,true);   
G.setColor(Color.black);   
for(int i=1;i<16;i++)   
{   
   G.drawLine(20,20*i,300,20*i);   
   G.drawLine(20*i,20,20*i,300);   
}   
}   
  
public void Game_start() //游戏开始   
{   
intGame_Start=1;   
Game_btn_enable(false);   
b2.setEnabled(true);   
}   
  
public void Game_start_csh() //游戏开始初始化   
{   
intGame_Start=0;   
Game_btn_enable(true);   
b2.setEnabled(false);   
ckbHB[0].setState(true);   
  
for (int i=0;i<16 ;i++ )   
{   
   for (int j=0;j<16 ;j++ )   
   {   
    intGame_Body[i][j]=0;   
   }   
}   
lblWin.setText("");   
}   
  
public void Game_re() //游戏重新开始   
{   
repaint();   
Game_start_csh();   
}   
  
public void Game_btn_enable(boolean e) //设置组件状态   
{   
b1.setEnabled(e);   
b2.setEnabled(e);   
ckbHB[0].setEnabled(e);   
ckbHB[1].setEnabled(e);   
}   
  
public boolean Game_win_1(int x,int y) //判断输赢 横   
{   
int x1,y1,t=1;   
x1=x;   
y1=y;   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1>15)   
   {   
    break;   
   }   
   if (intGame_Body[x1+i][y1]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
  
}   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1<1)   
   {   
    break;   
   }   
  
   if(intGame_Body[x1-i][y1]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
}   
  
if (t>4)   
{   
   return true;   
}   
else  
{   
   return false;   
}   
}   
  
public boolean Game_win_2(int x,int y) //判断输赢 竖   
{   
int x1,y1,t=1;   
x1=x;   
y1=y;   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1>15)   
   {   
    break;   
   }   
   if (intGame_Body[x1][y1+i]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
  
}   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1<1)   
   {   
    break;   
   }   
  
   if(intGame_Body[x1][y1-i]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
}   
  
if (t>4)   
{   
   return true;   
}   
else  
{   
   return false;   
}   
}   
  
public boolean Game_win_3(int x,int y) //判断输赢 左斜   
{   
int x1,y1,t=1;   
x1=x;   
y1=y;   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1>15)   
   {   
    break;   
   }   
   if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
  
}   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1<1)   
   {   
    break;   
   }   
  
   if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
}   
  
if (t>4)   
{   
   return true;   
}   
else  
{   
   return false;   
}   
}   
  
public boolean Game_win_4(int x,int y) //判断输赢 左斜   
{   
int x1,y1,t=1;   
x1=x;   
y1=y;   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1>15)   
   {   
    break;   
   }   
   if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
  
}   
  
for (int i=1;i<5 ;i++ )   
{   
   if (x1<1)   
   {   
    break;   
   }   
  
   if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y])   
   {   
    t+=1;   
   }   
   else  
   {   
    break;   
   }   
}   
  
if (t>4)   
{   
   return true;   
}   
else  
{   
   return false;   
}   
}   
}
㈩ 五子棋棋盘java实现
其实我也有用JAVA做五子棋呢~,棋盘都是用画的,我把代码发下,你自己试下,也不定合你一意.事件代码我都去啦,因为是简单的麻烦事.~!
import java.awt.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class ChessBoard extends JPanel{
 /*
  * 制作棋盘的宽高;
  */
 public static final int BOARD_WIDTH=515;
 /*
  * 计算棋盘表格坐标(单元格宽高相等)
  */
 public static int [] location=new int[22];
 static{
  for(int i=0,WIDTH=30;i<location.length;i++,WIDTH+=22){
      location[i]=WIDTH;
     }
 }
 public ChessBoard(int x,int y){
  super(null);
  this.setBounds(x, y, BOARD_WIDTH, BOARD_WIDTH);
  this.setBackground(new Color(255, 164, 85));
 }
 /**
  * 重写方法,绘制棋盘表格图;
  */
 public void paintComponent(Graphics g){
  super.paintComponent(g);
     char ch='A';
     g.setFont(new Font("宋体",Font.BOLD,12));
     //画横线
     for(int i=0,width=30+22*21;i<location.length;i++,ch++){
       g.setColor(Color.black);
       g.drawLine(30,location[i],width,location[i]);
       g.setColor(Color.blue);
       g.drawString(""+ch,5,location[i]+3);
     }
     //画竖线
     for(int i=0,width=30+22*21;i<location.length;i++){
       g.setColor(Color.black);
       g.drawLine(location[i],30,location[i],width);
       g.setColor(Color.blue);
       g.drawString(""+(i+1),location[i]-3,13);
     }
     
 }
}
