返回

用86行代码写一个联机五子棋WebSocket后端!代码简单易上手,快来学!

后端

把棋盘放在网络上

五子棋作为一种经典的策略游戏,广受人们的喜爱。如今,随着互联网的普及,五子棋也逐渐走向了网络。联机五子棋不仅可以让我们与远方的朋友进行对战,还能让我们结识到更多的棋友,从而提升自己的棋艺。

那么,如何做一个联机对战的五子棋呢?这需要个后端服务。

什么是后端服务?

后端服务是指在客户端和数据库之间起桥梁作用的软件系统。它负责处理客户端的请求,并向数据库中存储或提取数据。在联机五子棋中,后端服务需要完成以下任务:

  • 管理玩家的登录和注册
  • 为玩家匹配对手
  • 记录对战结果
  • 提供聊天功能

如何编写联机五子棋的后端服务?

编写联机五子棋的后端服务,可以使用多种编程语言和技术框架。这里,我们将使用Node.js和WebSocket来构建一个简单的后端服务。

Node.js是一个流行的JavaScript运行时环境,它可以让我们轻松地构建网络应用。WebSocket是一种双向通信协议,它允许客户端和服务器在建立连接后进行持续的数据交换。

以下是联机五子棋后端服务的代码:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

const players = [];

wss.on('connection', (ws, req) => {
  console.log('A new player connected!');

  players.push(ws);

  ws.on('message', (message) => {
    const data = JSON.parse(message);

    switch (data.type) {
      case 'login':
        ws.send(JSON.stringify({ type: 'login', success: true }));
        break;
      case 'match':
        const opponent = players.find((player) => player !== ws && player.readyState === WebSocket.OPEN);
        if (opponent) {
          ws.send(JSON.stringify({ type: 'match', opponent: opponent }));
          opponent.send(JSON.stringify({ type: 'match', opponent: ws }));
        } else {
          ws.send(JSON.stringify({ type: 'match', error: 'No opponent found' }));
        }
        break;
      case 'move':
        opponent.send(JSON.stringify({ type: 'move', move: data.move }));
        break;
      case 'chat':
        wss.clients.forEach((client) => {
          if (client !== ws && client.readyState === WebSocket.OPEN) {
            client.send(JSON.stringify({ type: 'chat', message: data.message }));
          }
        });
        break;
    }
  });

  ws.on('close', () => {
    console.log('A player disconnected!');

    players.splice(players.indexOf(ws), 1);
  });
});

运行后端服务

将代码保存为一个文件,例如server.js。然后,使用以下命令运行该文件:

node server.js

连接客户端

现在,我们已经启动了后端服务。接下来,我们需要编写一个客户端来连接到后端服务。我们可以使用JavaScript和WebSocket来编写客户端。

以下是联机五子棋客户端的代码:

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');

ws.on('open', () => {
  console.log('Connected to the server!');

  ws.send(JSON.stringify({ type: 'login' }));
});

ws.on('message', (message) => {
  const data = JSON.parse(message);

  switch (data.type) {
    case 'login':
      if (data.success) {
        console.log('Login successful!');
      } else {
        console.log('Login failed!');
      }
      break;
    case 'match':
      if (data.opponent) {
        console.log('Match found!');
      } else {
        console.log('No opponent found!');
      }
      break;
    case 'move':
      console.log('Opponent moved!');
      break;
    case 'chat':
      console.log('Received a chat message!');
      break;
  }
});

ws.on('close', () => {
  console.log('Disconnected from the server!');
});

运行客户端

将代码保存为一个文件,例如client.js。然后,使用以下命令运行该文件:

node client.js

使用联机五子棋

现在,我们已经启动了客户端和后端服务。接下来,就可以使用联机五子棋了。

  1. 打开两个终端窗口。
  2. 在第一个终端窗口中,运行node server.js命令。
  3. 在第二个终端窗口中,运行node client.js命令。
  4. 在客户端窗口中,输入login命令登录。
  5. 在客户端窗口中,输入match命令匹配对手。
  6. 在客户端窗口中,输入move命令移动棋子。
  7. 在客户端窗口中,输入chat命令发送聊天消息。

现在,你就可以与远方的朋友进行联机五子棋对战了!