• 大小: 17KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Java
  • 标签:

资源简介

使用网络编程实现五子棋小游戏,适合javaSE阶段的学习,熟悉网络编程,

资源截图

代码片段和文件信息

package com.jju.chessfive.ui;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket; 
import javax.swing.Jframe;
import javax.swing.JOptionPane;

public class ClientWindow extends Jframe implements MouseListener {
int x0 = 50 y0 = 50;// 棋盘左上角的坐标
int d = 40; // 各自的大小
int N = 10; // 棋盘的大小10*10

// 定义一个表示棋盘上每个顶点的(N*N)的状态矩阵
// 0--空白 1--黑子 2--白子
int[][] pos = new int[N][N];

// 当前棋子的颜色 1--黑 2--白
int chesstype = 0;

Socket socket; // 定义一个Socket对象
boolean isStart = false; //棋局是否开始标识
boolean isMyTurn= false; // 是否到我方落子
public ClientWindow() {
settitle(“菜鸟五子棋VO.1“);
setSize(800 600);

// 设置对鼠标事件的监听
addMouseListener(this);

try {
// 和服务端建立Socket连接
socket = new Socket(“127.0.0.1“ 8888);
// 启动接收消息的线程
new ReceiveMsgThread().start();
} catch (Exception ex) {
ex.printStackTrace();
}

}

// 绘制屏幕
@Override
public void paint(Graphics g) {
// 将屏幕背景设置为白色 ---或者加载一个背景图片
g.setColor(Color.white);
g.fillRect(0 0 2000 2000);
g.drawString(“菜鸟五子棋VO.1“ 400 50);
g.setColor(Color.black);
// 绘制棋盘
for (int i = 0; i < N; i++) {
// 画横线
g.drawLine(x0 y0 + i * d x0 + (N - 1) * d y0 + i * d);
// 画竖线
g.drawLine(x0 + i * d y0 x0 + i * d y0 + (N - 1) * d);
}

// 绘制棋盘上的棋子---遍历棋盘上所有的顶点
// 如果状态为1---画黑子 2---白子
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++) {
int status = pos[i][j];// 取状态
if (status > 0) // 有棋子
{
if (status == 1) // 黑子
g.setColor(Color.black); // 设置画笔颜色
else
g.setColor(Color.yellow);
// 画半径为5的圆表示棋子
g.fillOval(x0 + j * d - 5 y0 + i * d - 5 10 10);

}
}

}

@Override
public void mouseClicked(MouseEvent e) {
//---棋局是否开局的判断,开始后方可点击
if(isStart == false) return;

//到我方落子方可点击
if(isMyTurn == false) return;

// 鼠标点击的处理方法
// 1.获得鼠标点击的位置
int x = e.getX();
int y = e.getY();

// 2.找到离该点(xy)最近的棋盘的顶点序号(row)
int row = (int) ((y - y0) * 1.0 / d + 0.5);
int col = (int) ((x - x0) * 1.0 / d + 0.5);

// 2.判断该位置是否有了棋子
if (pos[row][col] > 0)
return;

// 3.设置该顶点的棋子颜色
pos[row][col] = chesstype;

repaint(); // 4.刷新屏幕,重新画
//设置我方不可在落子
isMyTurn = false;

//将我方落子信息发送给服务端
String msg = “Push#“ + chesstype + “#“ + row + “#“+ col;
sendMessage( msg);
}

/************ 向服务器发送消息 ********/
public void sendMessage(String msg) {
try {
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os true);
pw.println(msg); // 发送数据
} catch (Exception ex) {
ex.printStackTrace();
}
}

/**** 定义接收服务端发送过来的消息的线程 *****/
class ReceiveMsgThread extends Thread {
@Override
public void run() {
try {
// 获

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-09-05 15:23  NetChessFive32\
     文件         301  2016-09-05 14:47  NetChessFive32\.classpath
     文件         390  2016-09-05 14:47  NetChessFive32\.project
     目录           0  2016-09-05 15:23  NetChessFive32\.settings\
     文件         598  2016-09-05 14:47  NetChessFive32\.settings\org.eclipse.jdt.core.prefs
     目录           0  2016-10-24 08:29  NetChessFive32\bin\
     目录           0  2016-10-24 08:29  NetChessFive32\bin\com\
     目录           0  2016-10-24 08:29  NetChessFive32\bin\com\jju\
     目录           0  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\
     目录           0  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\ui\
     文件        1303  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\ui\ClientWindow$ReceiveMsgThread.class
     文件        4596  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\ui\ClientWindow.class
     文件        1681  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\ui\ServerWindow$ReceiveMsgThreadSingleSocket.class
     文件        1862  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\ui\ServerWindow$ServerListenerThread.class
     文件        4405  2016-10-24 08:29  NetChessFive32\bin\com\jju\chessfive\ui\ServerWindow.class
     目录           0  2016-09-05 15:23  NetChessFive32\src\
     目录           0  2016-09-05 15:23  NetChessFive32\src\com\
     目录           0  2016-09-05 15:23  NetChessFive32\src\com\jju\
     目录           0  2016-09-05 15:23  NetChessFive32\src\com\jju\chessfive\
     目录           0  2016-09-05 15:23  NetChessFive32\src\com\jju\chessfive\ui\
     文件        5124  2016-09-07 10:54  NetChessFive32\src\com\jju\chessfive\ui\ClientWindow.java
     文件        5982  2016-09-07 10:48  NetChessFive32\src\com\jju\chessfive\ui\ServerWindow.java

评论

共有 条评论