⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lin1.java

📁 高智能网络版五子棋程序!为小学期实践设计课题
💻 JAVA
字号:
package linda;

//五子棋程序网络版
//成功测试了网络的连通
//直接计算分值最到的点,并且加入33禁手

import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.net.*;

class qipan extends Panel {
 
	qipan() {
        setSize(400, 440);//棋盘大小
        setLayout(null);
        setBackground(Color.pink);//棋盘颜色
    }

//===================画棋盘================
    public void paint(Graphics g) {
//********************画横格线******************
        for (int i = 10; i <= 395; i = i + 25) {
            g.drawLine(30, i, 380, i);
        }
        g.drawLine(30, 395, 380, 395);
 //********************画纵格线******************
        for (int j = 30; j <= 380; j = j + 25) {
            g.drawLine(j, 10, j, 360);
        }
        g.drawLine(380, 10, 380, 360);
 //*******************确定棋盘中央的五个定点***********
        g.fillOval(102, 82, 6, 6);
        g.fillOval(302, 82, 6, 6);
        g.fillOval(202, 182, 6, 6);
        g.fillOval(102, 282, 6, 6);
        g.fillOval(302, 282, 6, 6);
    }

    public void chess_Paint(int chessPoint_a, int chessPoint_b, int color) {
        chessPointblack chesspointblack = new chessPointblack();//定义chesspointblack为chesspointblack类
        chessPointwhite chesspointwhite = new chessPointwhite();//定义chessPointwhite为chessPointwhite类
        chessPointPink chesspointpink = new chessPointPink();//定义chessPointPink为chessPointPink类
        if (color == 1) {
            this.add(chesspointblack);//
            chesspointblack.setBounds(chessPoint_a * 25 + 20,
                    chessPoint_b * 25, 20, 20);
            System.out.println("黑子");
        }//画黑子
        if (color == -1) {
            this.add(chesspointwhite);
            chesspointwhite.setBounds(chessPoint_a * 25 + 20,
                    chessPoint_b * 25, 20, 20);
            System.out.println("白子");
        }//画白子

        if (color == 0) {
            this.add(chesspointpink);
            chesspointpink.setBounds(chessPoint_a * 25 + 20,
                    chessPoint_b * 25, 20, 20);
        }
    }
}

//========================定义类chessPointPink===================
class chessPointPink extends Canvas {

    chessPointPink() {
        setSize(25, 25);//定义大小
    }

    public void paint(Graphics g) {
        g.setColor(Color.pink);//颜色
        g.fillOval(0, 0, 20, 20);//初始值
    }
}

//========================定义类chessPointblack===================
class chessPointblack extends Canvas {

    chessPointblack() {
        setSize(25, 25);//定义黑棋棋子大小
    }

    public void paint(Graphics g) {
        g.setColor(Color.black);//颜色
        g.fillOval(0, 0, 20, 20);//初始值
    }
}

//========================定义类chessPointwhite===================
class chessPointwhite extends Canvas {

    chessPointwhite() {
        setSize(25, 25);//定义白棋棋子大小
    }

    public void paint(Graphics g) {
        g.setColor(Color.white);//颜色
        g.fillOval(0, 0, 20, 20);//初始值
    }
}

class ControlPad1 extends Panel {
    Label IPlabel = new Label("服务器IP", Label.LEFT);

    TextField inputIP = new TextField("219.242.243.114", 10);//显示服务器ip地址

    Button connectButton = new Button("连接主机");//Button连接主机

    Button creatGameButton = new Button("登陆请求");//Button登陆请求

    Button exitGameButton = new Button("关闭程序");//Button关闭程序

    ControlPad1() {
        setLayout(new FlowLayout(FlowLayout.LEFT));
        setBackground(Color.pink);

   //*************添加各个按键****************
        add(IPlabel);
        add(inputIP);
        add(connectButton);
        add(creatGameButton);
        add(exitGameButton);
    }

}

//=========================定义线程client1Thread类===============
class client1Thread extends Thread {
    Lin2 chessclient;
    Lin4 lin4;

    client1Thread(Lin2 chessclient) {
        this.chessclient = chessclient;
    }

    public void run() {
        lin4 = new Lin4(chessclient);
    }
}

//定义lin2类完成客户端与服务器短的连接和数据的发送
class Lin2 extends Frame implements ActionListener {
    ControlPad1 controlpad = new ControlPad1();//定义controlpad为ControlPad1类

    client1Thread xiancheng;

    qipan qipan1 = new qipan();//定义qipan1为qipan

    Socket clientSocket = null;//客户端Socket

    DataInputStream in = null;//定义in为DataInputStream类型并附初值 

    DataOutputStream out = null;//定义out为DataOutputStream类型并附初值 

    String host = null;//定义host类型并付初值

    int port = 2345;//服务器端口号

    byte[] a;//数组a

    Panel panel = new Panel();//通道1

    Panel panel2 = new Panel();//通道2

    Lin2() {
      super("五子棋");//标题显示
      setLayout(new BorderLayout());
      host = controlpad.inputIP.getText();//获取服务器ip保存在host中

//====================按键显示位置================
      panel.add(controlpad, BorderLayout.CENTER);
      panel.setBackground(Color.pink);
      panel2.add(qipan1, BorderLayout.NORTH);
      panel2.setBackground(Color.pink);
      add(panel, BorderLayout.SOUTH);
      add(panel2, BorderLayout.CENTER);

//=========================设置按键监听====================
      controlpad.connectButton.addActionListener(this);
      controlpad.creatGameButton.addActionListener(this);
 //     controlpad.againButton.addActionListener(this);
      controlpad.exitGameButton.addActionListener(this);

      //***********监听窗口*****************
      addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);//退出
        }
      });

      pack();
      setSize(500, 450);//界面大小
      setVisible(true);
      setResizable(false);
      validate();
    }

    public void actionPerformed(ActionEvent e) {
      if (e.getSource() == controlpad.connectButton) //连接主机
      {
        try {
          clientSocket = new Socket(host, port);//Socket
          System.out.println("host = " + clientSocket.getInetAddress());
          in = new DataInputStream(clientSocket.getInputStream());//输入流
          out = new DataOutputStream(clientSocket.getOutputStream());//输出流

        }
        catch (UnknownHostException es) {
          System.out.println("UnknownHostException = " + es.getMessage());
        }
        catch (IOException es) {
          System.out.println("IOException = " + es.getMessage());
        }
      }
      
//======================客户端网路连接===========================
      if (e.getSource() == controlpad.creatGameButton) //登陆请求
      {
        a = new byte[13];//存放发送给服务器的棋手名称,连接成功
        a[0] = 1;
        a[1] = 1;
        a[2] = 8;
        a[3] = '0';
        a[4] = '3';
        a[5] = '2';
        a[6] = '8';
        a[7] = '1';
        a[8] = '0';
        a[9] = '2';
        a[10] ='5';
        a[11] = 1;
        a[12] = 0;

        try {
          out.write(a);
          out.flush();
          System.out.println("rec = " + in.readByte()
                             + in.readByte() + in.readByte());
          Thread.sleep(1000);
        }
        catch (IOException es) {
          System.out.println("io error : " + es.getMessage());
        }
        catch (InterruptedException es) {
          System.out.println("Interrupted error : " + es.getMessage());
        }

        xiancheng = new client1Thread(this);
        xiancheng.start();//启动xiancheng监听
      }

      if (e.getSource() == controlpad.exitGameButton)//退出程序
      {
        try {
          clientSocket.close();
          in.close();
          out.close();
        }
        catch (IOException ee) {

        }

        System.exit(0);
      }
    }
  }

public class Lin1 {
    Lin1() {
        new Lin2();
    }
//===========================main函数=================
    public static void main(String args[]) {
        Lin1 Client = new Lin1();
    }
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -