📄 lin1.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 + -