📄 tryclient.java
字号:
else
{
record[i]=0;
button[i].setIcon(image[0]);
servernum++;
totalnum++;
}
if(IsGameOver()) //胜负已经揭晓
{
start=true;
startAgain();
pressed=true;
}
else if(totalnum==9)
{
JOptionPane.showMessageDialog(null,"双方不分胜负,此局结束,请重新开始");
start=true;
startAgain();
pressed=true;
}
}
else if(message.substring(0,7).equals("restart"))
{ start=false;
startAgain();
}
textArea.setCaretPosition(textArea.getText().length() );
}
//异常处理
catch ( ClassNotFoundException classNotFoundException )
{
textArea.append( "\nUnknown object type received" );
}
} while ( !message.equals( "game over" ) );
}//end_processConnection()
//重新开始
public void startAgain()
{
int i;
for(i=0;i<9;i++)
{
button[i].setIcon(backcolor);
record[i]=-1;
}
totalnum=0;
servernum=0;
clientnum=0;
if(start)
sendData("restart");
}
//判断游戏是否结束的方法
public boolean IsGameOver()
{
if(record[4]==0) //以4为中心,总共有4种取胜的可能
{
if((record[3]==0&&record[5]==0)||(record[1]==0&&record[7]==0)||(record[0]==0&&record[8]==0)||(record[2]==0&&record[6]==0))
{
if(imageType==0)
JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
else
JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
return true;
}
}
else if(record[4]==1)
{
if((record[3]==1&&record[5]==1)||(record[1]==1&&record[7]==1)||(record[0]==1&&record[8]==1)||(record[2]==1&&record[6]==1))
{ if(imageType==1)
JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
else
JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
return true;
}
}
//判断四周是否存在获胜组合,共有4种
if((record[0]==0&&record[1]==0&&record[2]==0)||(record[0]==0&&record[3]==0&&record[6]==0)
||(record[6]==0&&record[7]==0&&record[8]==0)||(record[2]==0&&record[5]==0&&record[8]==0))
{
if(imageType==0)
JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
else
JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
return true;
}
if((record[0]==1&&record[1]==1&&record[2]==1)||(record[0]==1&&record[3]==1&&record[6]==1)
||(record[6]==1&&record[7]==1&&record[8]==1)||(record[2]==1&&record[5]==1&&record[8]==1))
{
if(imageType==1)
JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
else
JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
return true;
}
return false; //还不分胜负
}//end_IsGameOver()
//发送数据作为内部方法使用
public void sendData(String command)
{
//发送消息到
try {
output.writeObject( command );
output.flush();
textArea.append(command );
}
//处理发送过程中发生的异常
catch ( IOException ioException )
{
textArea.append( "\nError writing object" );
}
} //end_sendData()
//事件监听器类
public class Actionhandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(startgame))
StartGame();
else if(e.getSource().equals(exit))
{
sendData("game over");
System.exit(0);
}
else if(e.getSource().equals(restart))
{
if(start)
restart(); //调动重新开始方法
else
JOptionPane.showMessageDialog(null,"对方已经按下开始键了,可以开始游戏了");
}
else //下面处理面板上的按钮的点击事件
{ int i;
for(i=0;!(e.getSource().equals(button[i]))&&i<9;i++);
PressHandler(i);
}
}
//游戏开始的处理方法
public void StartGame()
{
int m;
m=(int)(Math.random()*10);
if(m%2==0) {
imageType=0;
textArea.append("客户端选择--圆\n");
}
else { imageType=1; //随机选择
textArea.append("客户端选择--叉\n");
}
sendData("start game:"+imageType+" ");
pressed=true;
}
//游戏重新开始的处理方法
public void restart()
{
int i;
for(i=0;i<9;i++)
{
button[i].setIcon(backcolor);
record[i]=-1;
}
totalnum=0;
servernum=0;
clientnum=0;
sendData("restart");
pressed=true;
}
//按钮处理方法
public void PressHandler(int loc)
{
if(pressed)
{
if(record[loc]==-1) //如果这个位置原本是空的
{
button[loc].setIcon(image[imageType]); //给这个位置设置图标
record[loc]=imageType;
sendData("order:"+loc+" ");
textArea.append("\nClient>>>order:"+loc);
clientnum++;
totalnum++;
pressed=false;
if(IsGameOver())
{
start=true;
startAgain();
}
else if(totalnum==9)
{
JOptionPane.showMessageDialog(null,"双方不分胜负,本局结束,请重新开始");
start=true;
startAgain();
}
}
else JOptionPane.showMessageDialog(null,"此处不能下");
}//end_if(pressed)
else JOptionPane.showMessageDialog(null,"你已经下过一次了");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -