100分求高手给修改一个程序 谢谢先~
我是java初学者
我写了一个网络对战的五子棋程序 但是就是网络数据交换时候出现了问题
不知道怎么修改了 求高手花时间给看看 最好是能给出修改过的代码 我把自己的代码给出来
见结果马上结帖 谢谢了 :)
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.io.*;
import javax.swing.*;
import java.util.*;
import java.net.*;
/*<applet code=wzq height=600 width=600>
</applet>
*/
public class wzq extends JApplet implements ActionListener
{
JButton b1;
JButton b2;
JButton b3;
Panel p1;
qipan q=new qipan();
public wzq()
{
}
public void init()
{
getContentPane().setLayout(new BorderLayout());
b1=new JButton("Start");
b2=new JButton("Exit");
b3=new JButton("Last");
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
p1=new Panel();
p1.add(b1);
p1.add(b2);
p1.add(b3);
getContentPane().add("North",p1);
getContentPane().add("Center",q);
}
public void paint(Graphics g)
{
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
}
if(e.getSource()==b2)
{
}
if(e.getSource()==b3)
{
}
}
}
class qipan extends JApplet implements MouseListener //canvas
{
int maxHeight;
int maxWidth;
int x1=0;
int y1=0; // 自己下的棋子的坐标
String x2=new String();
String y2=new String(); //对方下的棋子的坐标
boolean mark[][]=new boolean [15][15];
int x[]=new int[15];
int y[]=new int[15];
int position_x=0;
int position_y=0;
boolean win=false;
BufferedReader in;
PrintWriter out;
/* ServerSocket server;
Socket s=null;*/
public qipan()
{
addMouseListener(this);
for(int i=0;i<15;i++)
for(int j=0;j<15;j++)
{
mark[i][j]=false;
}
/* try
{
System.out.println("@@@@@@@@@@@@@@@2");
server=new ServerSocket(9999);
System.out.println("start:"+server);
s=server.accept();
System.out.println(s);
}catch(Exception e){System.out.println(e);}*/
}
public void init()
{
}
public void paint(Graphics g)
{
maxHeight=getHeight();
maxWidth=getWidth();
System.out.println(""+maxHeight);
System.out.println(""+maxWidth);
setBackground(Color.gray);
x[0]=50;
y[0]=50;
for(int i=1;i<15;i++)
{
x[i]=x[i-1]+35;
y[i]=y[i-1]+35;
}
for(int i=0;i<15;i++)
{
g.drawLine(x[0],y[i],x[14],y[i]);
g.drawLine(x[i],y[0],x[i],y[14]);
}
}
public void update(Graphics g)
{
g.setColor(Color.black); //客户端和服务器端设置不同的颜色
draw(position_x,position_y,g);
try{
send(x1,y1);
receive();
g.setColor(Color.white);
draw(x[Integer.parseInt(x2)],y[Integer.parseInt(y2)],g);
}catch(Exception e){System.out.println(e);}
}
public void draw(int x,int y,Graphics g)
{
g.fillArc(position_x-8,position_y-8,16,16,0,360);
isWin();
}
public void send(int x,int y)throws IOException //客户端发送消息
{
try
{
ServerSocket server=new ServerSocket(9999);
System.out.println("start:"+server);
Socket s=server.accept();
System.out.println("connecting :"+s);
out=new PrintWriter(s.getOutputStream());
String str=null;
out.println(Integer.toString(x));
out.println(Integer.toString(y));
System.out.println(""+x+y);
out.close();
server.close();
}
catch(Exception e){System.out.println("2"+e);}
finally
{
}
}
public void receive()throws IOException
{
try
{
ServerSocket server=new ServerSocket(9999);
System.out.println("start:"+server);
Socket s=server.accept();
System.out.println("connecting :"+s);
in=new BufferedReader(
new InputStreamReader(s.getInputStream()));
x2 = in.readLine();
y2 = in.readLine();
System.out.println(""+x2+y2);
in.close();
server.close();
}
catch(Exception e){System.out.println("2"+e);}
finally
{
}
}
public void isWin()
{
int num=0; //竖
for(int i=0;i<15;i++)
{
for(int j=0;j<15;j++)
{
if(mark[i][j]==true;
num=num+1;
}
if(num>=5)
{
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); //赢了之后的操作
}
num=0;
}
int num1=0; //横
for(int i=0;i<15;i++)
{
for(int j=0;j<15;j++)
{
if(mark[j][i]==true)
num1++;
}
if(num1>=5)
{
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); //赢了之后的操作
}
num1=0;
}
int num2=0; //左上右下 下
int m;
for(int j=0;j<11;j++)
{
m=j;
for(int i=0;i<15-j;i++,j++)
{
if(mark[i][j]==true)
System.out.println("*******************************");
num2++;
}
if(num2>=5)
{
//System.out.println("*******************************"); //赢了之后的操作
}
num2=0;
j=m;
}
}
public void mouseClicked(MouseEvent e)
{
for(int i=0;i<15;i++)
{
if(x[i]-10<e.getX()&&e.getX()<x[i]+10)
{
position_x=x[i];
x1=i;
break;
}
}
for(int i=0;i<15;i++)
{
if(y[i]-10<e.getY()&&e.getY()<y[i]+10)
{
position_y=y[i];
y1=i;
break;
}
}
mark[x1][y1]=true;
repaint();
}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
}
大家复制下来看吧 我写的格式在这里不好用