⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 five.java.txt

📁 java网络五子棋 可同时容纳50个人同时在线下棋
💻 TXT
📖 第 1 页 / 共 2 页
字号:
下面的源代码分为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(); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -