java实现网络编程的五子棋(15*15)【不需要判断输赢、要能够显示棋盘和下棋的信息】
时间: 2024-03-10 10:48:54 浏览: 79
好的,我可以提供一个简单的Java网络五子棋游戏的实现,可以显示棋盘和下棋的信息,但不会判断输赢。
首先,我们需要一个服务器和客户端之间进行通信,可以使用Java Socket实现。服务器将接受客户端的连接请求,然后客户端可以连接到服务器并开始玩游戏。
以下是服务器端的代码:
```java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 创建服务器套接字,监听端口号8888
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,等待客户端连接...");
// 等待客户端连接请求
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功!");
// 启动一个线程处理客户端请求
Thread thread = new Thread(new GameHandler(socket));
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
接下来是客户端的代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
try {
// 创建客户端套接字,连接到服务器IP地址和端口号
Socket socket = new Socket("localhost", 8888);
System.out.println("连接服务器成功!");
// 从套接字获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 从控制台读取用户输入
Scanner scanner = new Scanner(System.in);
// 输出欢迎信息和棋盘
System.out.println(in.readLine());
System.out.println(in.readLine());
// 循环读取用户输入并发送给服务器
while (true) {
String message = scanner.nextLine();
out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
最后是游戏处理器的代码,它将处理客户端的请求并更新棋盘:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class GameHandler implements Runnable {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private char[][] board;
public GameHandler(Socket socket) {
this.socket = socket;
this.board = new char[15][15];
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
board[i][j] = '-';
}
}
}
@Override
public void run() {
try {
// 从套接字获取输入输出流
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
// 输出欢迎信息和棋盘
out.println("欢迎来到五子棋游戏!");
out.println("当前棋盘状态:");
printBoard();
// 循环处理客户端请求
while (true) {
String message = in.readLine();
System.out.println("收到客户端消息:" + message);
// 解析用户输入的坐标信息
String[] parts = message.split(",");
int row = Integer.parseInt(parts[0]);
int col = Integer.parseInt(parts[1]);
// 判断坐标是否合法
if (row < 0 || row >= 15 || col < 0 || col >= 15) {
out.println("坐标不合法,请重新输入。");
continue;
}
// 更新棋盘并输出
board[row][col] = 'X';
out.println("当前棋盘状态:");
printBoard();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void printBoard() {
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
out.print(board[i][j] + " ");
}
out.println();
}
}
}
```
以上是一个简单的Java网络五子棋游戏的实现,可以显示棋盘和下棋的信息,但不会判断输赢。
阅读全文