当前位置: 首页 > news >正文

【小游戏篇】三子棋游戏

硬控我一上午,小编还是太菜了,大家可以自行升级电脑难度,也可以升级游戏到五子棋

1.game.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 3
#define COL 3//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col);
//打印棋盘
void DispalyBoard(char board[ROW][COL], int row, int col);
//玩家下棋
void PlayerMove(char board[ROW][COL], int row, int col);
//电脑下棋
void ComputerMove(char board[ROW][COL], int row, int col);
//判断输赢
char IfWin(char board[ROW][COL], int row, int col);
int IfFull(char board[ROW][COL], int row, int col);

2.test.c

#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
void menu(){printf("****************************\n");printf("****** 1.play 0.exist ******\n");printf("****************************\n");}
void game()
{char ret='C';char board[ROW][COL] = { 0 };//初始化棋盘的函数InitBoard(board,ROW,COL);DispalyBoard(board,ROW,COL);while (1){PlayerMove(board,ROW,COL);ret=IfWin(board,ROW,COL);if (ret != 'C'){break;}DispalyBoard(board,ROW,COL);ComputerMove(board,ROW,COL);ret=IfWin(board,ROW,COL);if (ret != 'C'){break;}DispalyBoard(board,ROW,COL); }if (ret == '*'){printf("玩家赢\n");}		if (ret == '#'){printf("电脑赢\n");}if (ret == 'Q'){printf("平局\n");}}int main()
{int input = 0;
do{menu();//菜单printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("三子棋\n");game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误\n");break;}
} while (input);
return 0;}

3.game.c

#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
int IfFull(char board[ROW][COL],int row,int col)
{for (int i = 0;i < row;i++){for (int j = 0;j < col;j++){if (board[i][j] == ' '){return 0;}}}return 1;
}
void InitBoard(char board[ROW][COL], int row, int col)
{for (int i = 0;i < row;i++){for (int j = 0;j < col;j++){board[i][j] = ' ';}}
}void DispalyBoard(char board[ROW][COL], int row, int col)
{for (int i = 0;i < row;i++){for (int j = 0;j < col;j++){printf(" %c ", board[i][j]);if (j < col - 1)printf("|");}printf("\n");if (i < row - 1){for (int j = 0;j < col;j++){printf("---");if (j < col - 1)printf("|");}printf("\n");}}
}void PlayerMove(char board[ROW][COL], int row, int col){int  x = 0, y = 0;printf("玩家下棋:>\n");while (1){printf("请输入坐标:>");scanf("%d %d", &x,&y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (board[x - 1][y - 1] == ' '){board[x - 1][y - 1] = '*';break;}else{printf("坐标被占用,请选择其他位置\n");}}else{printf("坐标非法,请重新输入\n");}}}void ComputerMove(char board[ROW][COL], int row, int col)
{srand((unsigned int)time(NULL));printf("电脑下棋\n");int x = 0, y = 0;while(1){int  x = rand() % row;int  y = rand() % col;if (board[x][y] == ' '){board[x][y] = '#';break;}}}char IfWin(char board[ROW][COL], int row, int col)
{//行for (int i = 0;i < row;i++){if (board[i][0] == board[i][1] && board[i][2] == board[i][1] && board[i][1] != ' '){return board[i][0];}}//列for (int j = 0;j< col;j++){if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[1][j] !=' '){return board[0][j];}}//对角线if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' '){return board[0][0];}if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' '){return board[1][1];}if (IfFull(board, row, col)){return 'Q';}return 'C';
}

http://www.lryc.cn/news/525731.html

相关文章:

  • 7-Zip Mark-of-the-Web绕过漏洞复现(CVE-2025-0411)
  • 2025年国产化推进.NET跨平台应用框架推荐
  • 关于ARM和汇编语言
  • 2024人工智能AI+制造业应用落地研究报告汇总PDF洞察(附原数据表)
  • QTableView和QTableWidget的关系与区别
  • Java导出通过Word模板导出docx文件并通过QQ邮箱发送
  • ESP8266 MQTT服务器+阿里云
  • css动画水球图
  • 【设计模式-行为型】状态模式
  • 2024.1.22 安全周报
  • idea修改模块名导致程序编译出错
  • root用户Linux银河麒麟服务器安装vnc服务
  • CentOS 7使用RPM安装MySQL
  • OpenCV imread函数读取图像__实例详解
  • 激光线扫相机无2D图像的标定方案
  • 【安当产品应用案例100集】034-安当KSP支持密评中存储数据的机密性和完整性
  • 08.七种排序算法实现(C语言)
  • Alibaba Spring Cloud 一 核心组件、特性
  • kafka学习笔记7 性能测试 —— 筑梦之路
  • HQChart使用教程30-K线图如何对接第3方数据45- DRAWRADAR数据结构
  • Java集合学习:HashMap的原理
  • ETLCloud在iPaas中的是关键角色?
  • Docker Hub 全面解析及应对策略
  • 第五天 Labview数据记录(5.1 INI配置文件读写)
  • 【算法】经典博弈论问题——巴什博弈 python
  • ES6语法
  • 窥探QCC518x-308x系列与手机之间的蓝牙HCI记录与分析 - 耳机篇
  • ubuntu k8s 1.31
  • Prometheus+grafana实践:Doris数据库的监控
  • 【豆包MarsCode蛇年编程大作战】花样贪吃蛇