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) {
boolean isMy = false;
super.paintComponent(g);
for(int i=0; iItems.size(); i◆◆) {
isMy = !isMy;
if(isMy)
else
void myRepaint() {
repaint();
private class MouseHandler extends MouseAdapter {
public void mousePressed(MouseEvent event) {
int x = event.getX();
int y = event.getY();
paintItem(x, y);
void paintItem(int x, int y) {
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
Items.clear();
myRepaint();
class GameFrame extends JFrame {
public GameFrame() {
setTitle("A Little Game");
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();
//有缺陷,需要更加完善
以下是现写的 实现了两人对战 自己复制后运行把 没什么难度 类名 Games
import java.util.Scanner;
public class Games {
private String board[][];
private static String roles = "A粉丝";
//初始化数组
public void initBoard() {
board = new String[SIZE][SIZE];
for (int i = 0; i SIZE; i◆◆) {
for (int j = 0; j SIZE; j◆◆) {
// if(i==0){
// String str = "";
// str ◆= j◆" ";
// board[i][j]= str;
// }else if(i!=0j==0){
// String str = "";
// str ◆= i◆" ";
// }else{
board[i][j] = "╋";
// }
//输出棋盘
public void printBoard() {
System.out.print(board[i][j]);
System.out.println();
//判断所下棋子位置是否合理
public boolean isOk(int x, int y) {
boolean isRight = true;
//System.out.println("输入错误,请从新输入");
isRight = false;
if (board[x][y].equals("●") || board[x][y].equals("○")) {
return isRight;
//判断谁赢了
public void whoWin(Games wz) {
int xlabel;// 记录第一次找到某个棋子的x坐标
int ylabel;// 记录第一次找到某个棋子的y坐标
// ●○╋
// 判断人是否赢了
if (board[i][j].equals("○")) {
xlabel = i;
ylabel = j;
// 横向找 x坐标不变 y坐标以此加1连成字符串
String heng = "";
heng ◆= board[i][k];
if (heng.equals("○○○○○")) {
System.out.println(roles◆"赢了!您输了!");
System.exit(0);
String xia = "";
xia ◆= board[l][j];
// System.out.println(xia);
if (xia.equals("○○○○○")) {
// 斜向右下判断
String youxia = "";
youxia ◆= board[xlabel◆◆][ylabel◆◆];
if (youxia.equals("○○○○○")) {
// 判断电脑是否赢了
if (board[i][j].equals("●")) {
if (heng.equals("●●●●●")) {
System.out.println(roles◆"赢输了!您输了!");
xia ◆= board[l][ylabel];
if (xia.equals("●●●●●")) {
if (youxia.equals("●●●●●")) {
Games wz = new Games();
Scanner sc = new Scanner(System.in);
wz.initBoard();
wz.printBoard();
while (true) {
int x = sc.nextInt();
int y = sc.nextInt();
if (x == SIZE y == SIZE) {
System.out.println("程序结束");
if (x SIZE || x 0 || y SIZE | y 0) {
System.out.println("输入错误,请从新输入");
continue;
//如果roles是A粉丝 就让A粉丝下棋,否则就让B粉丝下棋.
if (wz.board[x][y].equals("╋")roles.equals("A粉丝")) {
wz.board[x][y] = "○";
//判断输赢
wz.whoWin(wz);
}else if(wz.board[x][y].equals("╋")roles.equals("B粉丝")){
wz.board[x][y] = "●";
} else {
System.out.println("此处已经有棋子,从新输入");
if(roles.equals("A粉丝")){
roles = "B粉丝";
}else if(roles.equals("B粉丝")){
roles = "A粉丝";
java网络五子棋
chessPad.java:棋盘的绘制.
chessServer.java:服务器端.
/*********************************************************************************************
①chessClient.java
**********************************************************************************************/
import java.io.*;
import java.net.*;
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(userNumber0 !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);
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无法关闭");
else if(recMessage.startsWith("/peer "))
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");
chessclient.chatpad.chatLineArea.append(recMessage◆"\n");
chessclient.chatpad.chatLineArea.setCaretPosition(
chessclient.chatpad.chatLineArea.getText().length());
public void run()
String message="";
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;
boolean isOnChat=false; //在聊天?
boolean isOnChess=false; //在下棋?
boolean isServer=false; //如果是下棋的主机
Panel southPanel=new Panel();
Panel northPanel=new Panel();
Panel centerPanel=new Panel();
Panel westPanel=new Panel();
Panel eastPanel=new Panel();
chessClient()
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)
chatSocket.close();
catch(Exception ed)
if(isOnChess || isGameConnected)
chesspad.chessSocket.close();
catch(Exception ee)
public void windowActivated(WindowEvent ea)
});
add(westPanel,BorderLayout.WEST);
add(centerPanel,BorderLayout.CENTER);
add(southPanel,BorderLayout.SOUTH);
pack();
setVisible(true);
validate();
public boolean connectServer(String serverIP,int serverPort) throws Exception
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();
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(e.getSource()==controlpad.joinGameButton)
String selectedUser=userpad.userList.getSelectedItem();
if(selectedUser==null || selectedUser.startsWith("[inchess]") ||
selectedUser.equals(chessClientName))
chesspad.statusText.setText("必须先选定一个有效用户");
if(!isGameConnected)
if(chesspad.connectServer(chesspad.host,chesspad.port))
isGameConnected=true;
isOnChess=true;
isClient=true;
controlpad.cancelGameButton.setEnabled(true);
chesspad.chessthread.sendMessage("/joingame "◆userpad.userList.getSelectedItem()◆" "◆chessClientName);
isGameConnected=false;
isOnChess=false;
isClient=false;
chatpad.chatLineArea.setText("chesspad.connectServer无法连接 \n"◆ee);
if(e.getSource()==controlpad.creatGameButton)
isServer=true;
chesspad.chessthread.sendMessage("/creatgame "◆"[inchess]"◆chessClientName);
catch(Exception ec)
isServer=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);
chesspad.statusText.setText("请建立游戏或者加入游戏");
if(!isOnChess)
isClient=isServer=false;
public void keyPressed(KeyEvent e)
TextField inputWords=(TextField)e.getSource();
if(e.getKeyCode()==KeyEvent.VK_ENTER)
if(inputpad.userChoice.getSelectedItem().equals("所有人"))
out.writeUTF(inputWords.getText());
inputWords.setText("");
catch(Exception ea)
chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接 \n");
userpad.userList.removeAll();
inputpad.userChoice.removeAll();
controlpad.connectButton.setEnabled(true);
out.writeUTF("/"◆inputpad.userChoice.getSelectedItem()◆" "◆inputWords.getText());
public void keyTyped(KeyEvent e)
public void keyReleased(KeyEvent e)
public static void main(String args[])
chessClient chessClient=new chessClient();
/******************************************************************************************
下面是:chessInteface.java
******************************************************************************************/
class userPad extends Panel
List userList=new List(10);
userPad()
userList.add(i◆"."◆"没有用户");
add(userList,BorderLayout.CENTER);
class chatPad extends Panel
chatPad()
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
Choice userChoice=new Choice();
inputPad()
userChoice.addItem(i◆"."◆"没有用户");
add(userChoice);
add(inputWords);
/**********************************************************************************************
下面是:chessPad.java
class chessThread extends Thread
chessPad chesspad;
chessThread(chessPad chesspad)
this.chesspad=chesspad;
public void sendMessage(String sndMessage)
chesspad.outData.writeUTF(sndMessage);
System.out.println("chessThread.sendMessage:"◆ea);
if(recMessage.startsWith("/chess "))
String chessToken;
String[] chessOpt={"-1","-1","0"};
int chessOptNum=0;
chessToken=(String)userToken.nextToken(" ");
chessOpt[chessOptNum-1]=chessToken;
chessOptNum◆◆;
chesspad.chessSelfName=recMessage.substring(10);
chesspad.statusText.setText("错误:没有这个用户,请退出程序,重新加入");
//System.out.println(recMessage);
message=chesspad.inData.readUTF();
class chessPad extends Panel implements MouseListener,ActionListener
int chessPoint_x=-1,chessPoint_y=-1,chessColor=1;
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;
chessThread chessthread=new chessThread(this);
chessPad()
setLayout(null);
addMouseListener(this);
add(statusText);
statusText.setEditable(false);
public boolean connectServer(String ServerIP,int ServerPort) throws Exception
chessSocket=new Socket(ServerIP,ServerPort);
inData=new DataInputStream(chessSocket.getInputStream());
outData=new DataOutputStream(chessSocket.getOutputStream());
chessthread.start();
statusText.setText("chessPad:connectServer:无法连接 \n");
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;
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)
chessBlackCount◆◆;
else if(color==-1)
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(chessCompare=0;chessCompare=chessBlackCount;chessCompare◆◆)
chessLink=chessLink◆1;
return(true);
if(chessLink==(chessLinkTest◆1))
chessLinkTest◆◆;
break;
chessLink◆◆;
chessLinkTest=1;
以上就是土嘎嘎小编为大家整理的java五子棋程序代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!