写了两天,遇到问题一大堆 最终还是写出来了 不过只是能实现两边的互通,还有很多地方需要修改
package com.wuziqi;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import com.wuziqi.SocketDef.MyCanvas;
public class Server {
static int[][] a=new int[15][15];
ServerSocket ss;
public ObjectOutputStream oos;
ObjectInputStream oi;
static Socket s;
private final int bWidth=535;
private final int bHeight=536;
BufferedImage bi;
BufferedImage sel;
BufferedImage black;
BufferedImage white;
int X_COUNT=-1;
int Y_COUNT=-1;
int turn=1;
boolean isWin=false;
int[][] board=new int[15][15];
Frame f=new Frame("服务端");
MyCanvas drawArea=new MyCanvas();
public void initNet() throws IOException, ClassNotFoundException{
ss=new ServerSocket(30000);
s=ss.accept();
oos=new ObjectOutputStream(s.getOutputStream());
oi=new ObjectInputStream(s.getInputStream());
bi=ImageIO.read(new File("image/board.jpg"));
sel=ImageIO.read(new File("image/selected.gif"));
black=ImageIO.read(new File("image/black.gif"));
white=ImageIO.read(new File("image/white.gif"));
drawArea.setPreferredSize(new Dimension(bWidth,bHeight));
f.add(drawArea);
drawArea.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e){
X_COUNT=(e.getX()-6)/35;
Y_COUNT=(e.getY()-6)/35;
drawArea.repaint();
}
});
drawArea.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
//X_COUNT=(e.getX()-10)/35;
//Y_COUNT=(e.getY()-10)/35;
board[X_COUNT][Y_COUNT]=1;
//isWin=ifWin1(board,X_COUNT,Y_COUNT);
try {
oos.writeObject(board);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println("无法发送到客户端");
}
drawArea.repaint();
}
});
f.setSize(bWidth, bHeight+30);
f.setVisible(true);
f.setBackground(new Color(0,222,222));
f.addWindowListener(new WindowAdapter() //为了关闭窗口
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
int [][] o;
while((o=(int[][]) oi.readObject())!=null)
{
board =o;
drawArea.repaint();
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException{
new Server().initNet();
}
class MyCanvas extends JPanel{
public void paint(Graphics g){
g.drawImage(bi, 0, 0,null);
if(X_COUNT>=0&&Y_COUNT>=0) {g.drawImage(sel, X_COUNT*35+6, Y_COUNT*35+6, null);}
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(board[i][j]==1) g.drawImage(white, i*35+6, j*35+6, null);
else if(board[i][j]==2) g.drawImage(black, i*35+6, j*35+6, null);
}
}
if(isWin==true) {
g.setFont(new Font("Times",Font.BOLD,60));
g.setColor(new Color(255,0,0));
if(turn==0) g.drawString("白方胜", 250, 250);
if(turn==1) g.drawString("黑方胜", 200, 250);
}
}
}
}
package com.wuziqi;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
class SocketDef{
public ObjectOutputStream oos;
ObjectInputStream oi;
static Socket s;
private final int bWidth=535;
private final int bHeight=536;
BufferedImage bi;
BufferedImage sel;
BufferedImage black;
BufferedImage white;
int X_COUNT=-1;
int Y_COUNT=-1;
int turn=1;
boolean isWin=false;
int[][] board=new int[15][15];
Frame f=new Frame();
MyCanvas drawArea=new MyCanvas();
public SocketDef() throws UnknownHostException, IOException, ClassNotFoundException{
s=new Socket("127.0.0.1",30000);
oos=new ObjectOutputStream(s.getOutputStream());
bi=ImageIO.read(new File("image/board.jpg"));
sel=ImageIO.read(new File("image/selected.gif"));
black=ImageIO.read(new File("image/black.gif"));
white=ImageIO.read(new File("image/white.gif"));
drawArea.setPreferredSize(new Dimension(bWidth,bHeight));
f.add(drawArea);
drawArea.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e){
X_COUNT=(e.getX()-6)/35;
Y_COUNT=(e.getY()-6)/35;
drawArea.repaint();
}
});
f.setSize(bWidth, bHeight+30);
f.setVisible(true);
f.setBackground(new Color(0,222,222));
f.addWindowListener(new WindowAdapter() //为了关闭窗口
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
drawArea.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
//X_COUNT=(e.getX()-10)/35;
//Y_COUNT=(e.getY()-10)/35;
/*
if(turn==1&&board[X_COUNT][Y_COUNT]==0){
turn=0;
board[X_COUNT][Y_COUNT]=1;
//isWin=ifWin1(board,X_COUNT,Y_COUNT);
}
*/
board[X_COUNT][Y_COUNT]=2;
//=ifWin2(board,X_COUNT,Y_COUNT);
try {
oos.writeObject(board);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
drawArea.repaint();
}
//System.out.println(X_COUNT+","+Y_COUNT);
});
oi=new ObjectInputStream(s.getInputStream());
Object o;
while((o=oi.readObject())!=null){
board=(int[][]) o;
drawArea.repaint();
}
}
class MyCanvas extends JPanel{
public void paint(Graphics g){
g.drawImage(bi, 0, 0,null);
if(X_COUNT>=0&&Y_COUNT>=0) {g.drawImage(sel, X_COUNT*35+6, Y_COUNT*35+6, null);}
for(int i=0;i<15;i++){
for(int j=0;j<15;j++){
if(board[i][j]==1) g.drawImage(white, i*35+6, j*35+6, null);
else if(board[i][j]==2) g.drawImage(black, i*35+6, j*35+6, null);
}
}
if(isWin==true) {
g.setFont(new Font("Times",Font.BOLD,60));
g.setColor(new Color(255,0,0));
if(turn==0) g.drawString("白方胜", 250, 250);
if(turn==1) g.drawString("黑方胜", 200, 250);
}
}
}
}
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException{
new SocketDef();
}
}