五子棋 网络版

写了两天,遇到问题一大堆  最终还是写出来了  不过只是能实现两边的互通,还有很多地方需要修改

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();
		
	}
	
	
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值