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=0i<50i++)
{
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=0i<50i++)
{
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=0i<=chessBlackCounti++)
{
chessBlack_x[i]=0
chessBlack_y[i]=0
}
for(int i=0i<=chessWhiteCounti++)
{
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=1step<=4step++)
{
for(chessCompare=0chessCompare<=chessBlackCountchessCompare++)
{
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=1step<=4step++)
{
for(chessCompare=0chessCompare<=chessBlackCountchessCompare++)
{
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=1step<=4step++)
{
for(chessCompare=0chessCompare<=chessBlackCountchessCompare++)
{
if((a*20==chessBlack_x[chessCompare]) &&((b+step)*20==chessBlack_y[chessCompare]))
{
直接上程序吧://wuziqi.java
import java.applet.Applet
import java.awt.Button
import java.awt.Checkbox
import java.awt.CheckboxGroup
import java.awt.Color
import java.awt.Graphics
import java.awt.Label
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.ItemEvent
import java.awt.event.ItemListener
import java.awt.event.MouseEvent
import java.awt.event.MouseListener
import java.awt.event.MouseMotionListener
@SuppressWarnings("serial")
public class wuziqi 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)
{
@SuppressWarnings("unused")
Graphics g=getGraphics()
if (e.getSource()==b1)
{
Game_start()
}
else
{
Game_re()
}
}
public void mousePressed(MouseEvent e){}
@SuppressWarnings("unused")
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=1i<16i++)
{
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=0i<16 i++ )
{
for (int j=0j<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=1i<5 i++ )
{
if (x1>15)
{
break
}
if (intGame_Body[x1+i][y1]==intGame_Body[x][y])
{
t+=1
}
else
{
break
}
}
for (int i=1i<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=1i<5 i++ )
{
if (x1>15)
{
break
}
if (intGame_Body[x1][y1+i]==intGame_Body[x][y])
{
t+=1
}
else
{
break
}
}
for (int i=1i<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=1i<5 i++ )
{
if (x1>15)
{
break
}
if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y])
{
t+=1
}
else
{
break
}
}
for (int i=1i<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=1i<5 i++ )
{
if (x1>15)
{
break
}
if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y])
{
t+=1
}
else
{
break
}
}
for (int i=1i<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
}
}
}
楼主要是觉得看的不舒服可以拷到记事本里看~ import java.applet.* import java.awt.* import java.awt.event.* import java.applet.Applet import java.awt.Color//这一段import就不说了,下面要用到的就import进来 public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener //继承Applet表明是个applet,后面的接口必须要实现每个接口的所有方法 { 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(" ")//这个label用来显示最后输赢信息的,先留空 Checkbox ckbHB[]=new Checkbox[2]//用来表明选择黑气或白棋先走的checkbox CheckboxGroup ckgHB=new CheckboxGroup()//两个checkbox必须放在同一个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)//new一个checkbox ckbHB[0].setBounds(320,20,60,30)//设置左上角位置和大小 ckbHB[1]=new Checkbox("黑子先",ckgHB,false)//new第二个checkbox ckbHB[1].setBounds(380,20,60,30)//设置左上角位置和大小 add(ckbHB[0])//将第一个checkbox加入界面 add(ckbHB[1])//将第二个checkbox加入界面 ckbHB[0].addItemListener(this)//将本类作为其事件接口来响应选中动作 ckbHB[1].addItemListener(this)//将本类作为其事件接口来响应选中动作 add(lblWin)//将标签加入界面 lblWin.setBounds(330,130,80,30)//设置标签的左上角位置和大小 Game_start_csh()//调用游戏初始化 } public void itemStateChanged(ItemEvent e) //ItemListener接口中的方法,必须要有 { if (ckbHB[0].getState()) //选择黑子先还是白子先 { color_Qizi=0//白棋先 } else { color_Qizi=1//黑棋先 } } public void actionPerformed(ActionEvent e) //ActionListener接口中的方法,也是必须的 { Graphics g=getGraphics()//这句话貌似可以去掉,g是用来画图或者画界面的 if (e.getSource()==b1) //如果动作的来源是第一个按钮 { Game_start()//游戏开始 } else //否则 { Game_re()//游戏重新开始 } } public void mousePressed(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有 public void mouseClicked(MouseEvent e) //鼠标单击时 { Graphics g=getGraphics()//获得画笔 int x1,y1 x1=e.getX()//单击处的x坐标 y1=e.getY()//单击处的y坐标 if (e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300) //在棋盘范围之外 { return//则这是不能走棋的,直接返回 } //下面这两个if和两个赋值的作用是将x和y坐标根据舍入原则修改成棋盘上格子的坐标 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){} //MouseListener接口中的方法,用不到所以留个空,但一定要有 public void mouseExited(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有 public void mouseReleased(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有 public void mouseDragged(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有 public void mouseMoved(MouseEvent e){} //MouseListener接口中的方法,用不到所以留个空,但一定要有 public void paint(Graphics g) //重绘和applet程序装载的时候会调用这个绘制的过程 { draw_qipan(g)//画棋盘 }欢迎分享,转载请注明来源:内存溢出
评论列表(0条)