三子棋游戏(C语言版)

一、三子棋的规则

三子棋是一个很古老的民间传统游戏,玩起来也非常便捷。三子棋也叫做OOXX棋,井字棋等,用“井”字分出3×3的格子,双方轮流下棋子(可以用O或者X来区别),只要将自己的棋子连成直线就赢了
在这里插入图片描述

二、三子棋的具体实现思路(基本流程

  1. 建立一个游戏菜单
  2. 创建一个棋盘并将其初始化
  3. 将初始化后的棋盘进行打印
  4. 玩家落子并打印棋盘(玩家输入行列坐标的方式来落子)
  5. 判定胜负关系(玩家是否获胜?有则直接游戏结束无则继续进行)
  6. 电脑落子并打印棋盘(随机位置落子)
  7. 判定胜负关系(电脑是否获胜?有则直接游戏结束无则继续进行)
  8. 若无胜负关系则回到 2 继续交替下棋直至出现胜负或和棋。

三、游戏的具体实现过程(源代码

1.代码总览

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<time.h>

//三子棋游戏
#define MAX_ROW 3//宏定义行数,列数,方便后续进行修改
#define MAX_COL 3

//一·创建一个游戏菜单
//菜单函数
int menu(){
   
	printf("========================\n");
	printf(" 1. 开始游戏\n");
	printf(" 0. 结束游戏\n");
	printf("========================\n");
	printf(" 请输入您的选择: ");
	int num = -1;
	scanf("%d", &num);;//利用键盘输入选项	
	return num;//将选项值返回到主函数中进行判断
}
//二·游戏内容
//棋盘初始化
void init(char chessBoard[MAX_ROW][MAX_COL]) {
   
	// 把数组中的每个元素都设为 “空格”
	for (int row = 0; row < MAX_ROW; row++) {
   
		for (int col = 0; col < MAX_COL; col++) {
   
			chessBoard[row][col] = ' ';
		}
	}
}
//打印棋盘
void printChessBoard(char chessBoard[MAX_ROW][MAX_COL]){
   
	printf("+---+---+---+\n");
	for (int row = 0; row < MAX_ROW; row++){
   
		printf("| %c | %c | %c |\n", chessBoard[row][0],
			chessBoard[row][1], chessBoard[row][2]);
		printf("+---+---+---+\n");
	}
}
//玩家落子“x”
void playerMove(char chessBoard[MAX_ROW][MAX_COL]) {
   
	while (1){
   
		    printf("请输入你要下棋的坐标(ROW COL)");
			int row = 0;
		    int col = 0;
			scanf("%d %d", &row, &col);
			//对落子进行判断
			if (row < 0 || row >= MAX_ROW || col < 0 || col >= MAX_COL) {
   
				// 输入越界让玩家重新输入. 
				printf("您的坐标不在合法范围内 [0, 2]\n");
					continue;
			}
			// 校验玩家落子位置是否已经有子了. 
			if (chessBoard[row][col] != ' ') {
   
				printf("您的坐标位置已经有子了!\n");
				continue;
			}
			//最终落子
			chessBoard[row][col] = 'x';
			break;
	}
}

//电脑落子“o”
void computerMove(char chessBoard[MAX_ROW][MAX_COL]) {
   
	while (1){
   
		int row = rand() % MAX_ROW;//设置随机数让棋子落在棋盘内
		int col = rand() % MAX_COL
  • 156
    点赞
  • 668
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值