一个简单的五子棋游戏

用C写一个简易的五子棋

思路:
对于一个五子棋,需要的{棋盘,玩家,判断}这三个要素。
所以,我们只要创建一个棋盘,然后玩家和电脑分别执棋落子,每一次落子结束我们就计算刚刚落子的周围区域是否满足五子,满足退出,不满足就继续。

//整个游戏用上下左右键就能移动,回车键落子
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<stdbool.h>

char arr[15][15];
const int N = 15;
char p;
int x = 7, y = 7;

void init(void);//初始化棋盘
void show(void); //显示棋盘
void get_key(void); //获取落子坐标
int count_key(int ox, int oy);//通过ox,oy偏移值计算落子周围相同棋子的个数
bool check_board(void); //检查棋盘是否出现五子

int main()
{
   

	p = 'X';//玩家先行,可以自己加判断输入是X先放还是O先放
	init();
	for (;;)
	{
   
		system(<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单五子棋游戏的Java代码示例: ```java import java.util.Scanner; public class GomokuGame { // 棋盘大小为15x15 private static final int BOARD_SIZE = 15; // 用二维数组表示棋盘,0表示空格,1表示黑子,2表示白子 private static int[][] board = new int[BOARD_SIZE][BOARD_SIZE]; // 当前下棋方,1表示黑方,2表示白方 private static int currentPlayer = 1; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { // 打印棋盘 printBoard(); // 获取当前下棋方的输入 System.out.print("Player " + currentPlayer + ", please enter your move (row[1-15] column[1-15]): "); int row = scanner.nextInt(); int col = scanner.nextInt(); // 将输入转换为数组下标 row--; col--; // 判断是否下在了空格 if (board[row][col] != 0) { System.out.println("Invalid move, please try again."); continue; } // 下棋 board[row][col] = currentPlayer; // 判断是否获胜 if (checkWin(row, col)) { printBoard(); System.out.println("Player " + currentPlayer + " wins!"); break; } // 判断是否平局 if (checkDraw()) { printBoard(); System.out.println("Draw!"); break; } // 切换下棋方 currentPlayer = currentPlayer == 1 ? 2 : 1; } } // 打印棋盘 private static void printBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j] == 0 ? "+" : board[i][j] == 1 ? "●" : "○"); } System.out.println(); } } // 判断是否获胜 private static boolean checkWin(int row, int col) { int count = 1; // 横向检查 for (int i = col - 1; i >= 0 && board[row][i] == currentPlayer; i--) { count++; } for (int i = col + 1; i < BOARD_SIZE && board[row][i] == currentPlayer; i++) { count++; } if (count >= 5) { return true; } // 纵向检查 count = 1; for (int i = row - 1; i >= 0 && board[i][col] == currentPlayer; i--) { count++; } for (int i = row + 1; i < BOARD_SIZE && board[i][col] == currentPlayer; i++) { count++; } if (count >= 5) { return true; } // 对角线检查 count = 1; for (int i = row - 1, j = col - 1; i >= 0 && j >= 0 && board[i][j] == currentPlayer; i--, j--) { count++; } for (int i = row + 1, j = col + 1; i < BOARD_SIZE && j < BOARD_SIZE && board[i][j] == currentPlayer; i++, j++) { count++; } if (count >= 5) { return true; } // 反对角线检查 count = 1; for (int i = row - 1, j = col + 1; i >= 0 && j < BOARD_SIZE && board[i][j] == currentPlayer; i--, j++) { count++; } for (int i = row + 1, j = col - 1; i < BOARD_SIZE && j >= 0 && board[i][j] == currentPlayer; i++, j--) { count++; } if (count >= 5) { return true; } return false; } // 判断是否平局 private static boolean checkDraw() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == 0) { return false; } } } return true; } } ``` 这个代码示例实现了一个简单的控制台五子棋游戏,其中包含打印棋盘、下棋、判断胜负、判断平局等基本功能。注意这个代码示例还有很多可以改进的地方,例如可以增加图形界面、人机对战等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值