返回

让回忆重现:经典小游戏五子棋带你穿越童年

后端

五子棋,一种古老而经典的益智游戏,在世界各地广受欢迎。它以其简单的规则和深奥的策略而著称,让玩家们在对弈中体验智慧的碰撞和乐趣。如今,随着科技的进步,五子棋也逐渐在电子游戏中焕发新的光彩。

在这个数字化的时代,人们对电子游戏有着浓厚的兴趣。五子棋,作为一款经典的棋类游戏,也受到了许多开发者的青睐。他们利用现代编程技术,将五子棋移植到电子设备上,让更多的人可以随时随地享受五子棋带来的乐趣。

开发一款五子棋游戏并不困难,即使你是一个编程新手,也可以轻松上手。在本文中,我们将介绍如何使用C++、Python或Java等编程语言,一步步创建自己的五子棋游戏。在开发的过程中,你不仅可以学习到编程知识,还能体验到开发游戏的乐趣。

C++实现五子棋游戏

#include <iostream>
#include <vector>

using namespace std;

// 定义五子棋棋盘大小
const int BOARD_SIZE = 15;

// 定义五子棋棋盘
vector<vector<int>> board(BOARD_SIZE, vector<int>(BOARD_SIZE, 0));

// 定义玩家符号
const int PLAYER_1 = 1;
const int PLAYER_2 = 2;

// 定义游戏结束标志
bool gameOver = false;

// 定义获胜玩家
int winner = 0;

// 定义游戏主函数
int main() {
  // 循环游戏,直到游戏结束
  while (!gameOver) {
    // 打印棋盘
    printBoard();

    // 获取玩家输入
    int x, y;
    cout << "Player 1, enter your move (x, y): ";
    cin >> x >> y;

    // 检查玩家输入是否合法
    if (isValidMove(x, y)) {
      // 将玩家符号放置在棋盘上
      board[x][y] = PLAYER_1;

      // 检查游戏是否结束
      if (checkWin(PLAYER_1)) {
        gameOver = true;
        winner = PLAYER_1;
      }
    } else {
      cout << "Invalid move. Please try again." << endl;
    }

    // 交换玩家
    if (!gameOver) {
      cout << "Player 2, enter your move (x, y): ";
      cin >> x >> y;

      // 检查玩家输入是否合法
      if (isValidMove(x, y)) {
        // 将玩家符号放置在棋盘上
        board[x][y] = PLAYER_2;

        // 检查游戏是否结束
        if (checkWin(PLAYER_2)) {
          gameOver = true;
          winner = PLAYER_2;
        }
      } else {
        cout << "Invalid move. Please try again." << endl;
      }
    }
  }

  // 打印游戏结果
  if (winner == PLAYER_1) {
    cout << "Player 1 wins!" << endl;
  } else if (winner == PLAYER_2) {
    cout << "Player 2 wins!" << endl;
  } else {
    cout << "Tie game!" << endl;
  }

  return 0;
}

Python实现五子棋游戏

import numpy as np

# 定义五子棋棋盘大小
BOARD_SIZE = 15

# 定义五子棋棋盘
board = np.zeros((BOARD_SIZE, BOARD_SIZE), dtype=int)

# 定义玩家符号
PLAYER_1 = 1
PLAYER_2 = 2

# 定义游戏结束标志
gameOver = False

# 定义获胜玩家
winner = 0

# 定义游戏主函数
def main():
  # 循环游戏,直到游戏结束
  while not gameOver:
    # 打印棋盘
    printBoard()

    # 获取玩家输入
    x, y = input("Player 1, enter your move (x, y): ").split()
    x, y = int(x), int(y)

    # 检查玩家输入是否合法
    if isValidMove(x, y):
      # 将玩家符号放置在棋盘上
      board[x][y] = PLAYER_1

      # 检查游戏是否结束
      if checkWin(PLAYER_1):
        gameOver = True
        winner = PLAYER_1
    else:
      print("Invalid move. Please try again.")

    # 交换玩家
    if not gameOver:
      x, y = input("Player 2, enter your move (x, y): ").split()
      x, y = int(x), int(y)

      # 检查玩家输入是否合法
      if isValidMove(x, y):
        # 将玩家符号放置在棋盘上
        board[x][y] = PLAYER_2

        # 检查游戏是否结束
        if checkWin(PLAYER_2):
          gameOver = True
          winner = PLAYER_2
      else:
        print("Invalid move. Please try again.")

  # 打印游戏结果
  if winner == PLAYER_1:
    print("Player 1 wins!")
  elif winner == PLAYER_2:
    print("Player 2 wins!")
  else:
    print("Tie game!")

# 定义检查玩家输入是否合法的函数
def isValidMove(x, y):
  return 0 <= x < BOARD_SIZE and 0 <= y < BOARD_SIZE and board[x][y] == 0

# 定义检查游戏是否结束的函数
def checkWin(player):
  # 检查水平方向
  for i in range(BOARD_SIZE):
    for j in range(BOARD_SIZE - 4):
      if board[i][j] == player and board[i][j+1] == player and board[i][j+2] == player and board[i][j+3] == player and board[i][j+4] == player:
        return True

  # 检查垂直方向
  for i in range(BOARD_SIZE - 4):
    for j in range(BOARD_SIZE):
      if board[i][j] == player and board[i+1][j] == player and board[i+2][j] == player and board[i+3][j] == player and board[i+4][j] == player:
        return True

  # 检查右上方向
  for i in range(BOARD_SIZE - 4):
    for j in range(BOARD_SIZE - 4):
      if board[i][j] == player and board[i+1][j+1] == player and board[i+2][j+2] == player and board[i+3][j+3] == player and board[i+4][j+4] == player:
        return True

  # 检查右下方向
  for i in range(4, BOARD_SIZE):
    for j in range(BOARD_SIZE - 4):
      if board[i][j] == player and board[i-1][j+1] == player and board[i-2][j+2] == player and board[i-3][j+3] == player and board[i-4][j+4] == player:
        return True

  return False

# 定义打印棋盘的函数
def printBoard():
  for i in range(BOARD_SIZE):
    for j in range(BOARD_SIZE):
      if board[i][j] == PLAYER_1:
        print("X", end=" ")
      elif board[i][j] == PLAYER_2:
        print("O", end=" ")
      else:
        print(".", end=" ")
    print()

# 调用游戏主函数
if __name__ == "__main__":
  main()

Java实现五子棋游戏

import java.util.Scanner;

public class Gomoku {

    private static final int BOARD_SIZE = 15;
    private static final int PLAYER_1 = 1;
    private static final int PLAYER_2 = 2;

    private static int[][] board = new int[BOARD_SIZE][BOARD_SIZE];
    private static boolean gameOver = false;
    private static int winner = 0;

    public static void