C语言:实现三子棋

C语言:3*3棋盘实现三子棋 三子棋的实现功能: 通过输入坐标确认下棋地点,与电脑对战,电脑产生随机数(随机坐标)。 输出棋盘,并判断玩家与电脑的输赢,输出赢家。 #include #include #include"game.h" #include void start_game(char arr[ROWS][COLS]) { show_arr(arr, ROWS, COLS);  //输出棋盘; 阅读详情

C语言:实现三子棋

思路:三子棋顾名思义就是五子棋的延申,C语言实现三子棋需要先给用户展示使用界面,使用界面必须简单易懂,让他们能够去选择,其次是三子棋是人机大战,需要电脑和用户共同完成,所以写电脑的移动是可以以随机数生成坐标的形式来实现,无论是电脑移动和用户移动时,都要对坐标以判断,看是不是可以走,然后就是判断输赢了,以横竖对角线相等来判断输赢和平局,最后给用户一个显示界面供用户查看判断。

以下是源代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
#include <time.h>
#define ROW 3
#define COL 3
void ShowUI()
{
	printf("##################################\n");
	printf("## 1. Play              2. Exit ##\n");
	printf("##################################\n");
	printf("Please Select:> ");
}
void ComputerMove(char board[][COL], int row, int col)
{
	while (1){
		int x = rand() % row;
		int y = rand() % col;
		if (board[x][y] == ' '){
			board[x][y] = 'O';
			break;
		}
	}
}
void PlayerMove(char board[][COL], int row, int col)
{
	int x, y;
	while (1){
		printf("Please Enter Your Pos(x,y):>  ");
		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] = 'X';
				break;
			}
			else{
				printf("Enter Pos Is Not OK, Try Again!\n");
			}
		}
		else{
			printf("Enter Error, Try Again!\n");
		}
	}
}
char Judge(char board[][COL], int row, int col)
{
	int i = 0;
	int j = 0;
	for (; i < row; i++){
		if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && \
			board[i][0] != ' '){
			return board[i][0];
		}
	}
	for (i = 0; i < col; i++){
		if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && \
			board[0][i] != ' '){
			return board[0][i];
		}
	}
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && \
		board[1][1] != ' '){
		return board[1][1];
	}
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && \
		board[1][1] != ' '){
		return board[1][1];
	}

	for (i = 0; i < row; i++){
		for (j = 0; j < col; j++){
			if (board[i][j] == ' '){
				return 'N';
			}
		}
	}
	return 'E';
}

void ShowBoard(char board[][COL], int row, int col)
{
	printf("    1   2   3\n");
	printf("-----------------\n");
	int i = 0;
	int j = 0;
	for (; i < row; i++){
		printf("%d |", i + 1);
		for (j = 0; j < col; j++){
			printf(" %c |", board[i][j]);
		}
		printf("\n-----------------\n");

	}
	printf("\n");
}
void Game()
{
	char board[ROW][COL];
	memset(board, ' ', sizeof(board));
	char result = 'N';
	srand((unsigned long)time(NULL));

	while (1){
		system("cls");
		ComputerMove(board, ROW, COL);
		ShowBoard(board, ROW, COL);
		result = Judge(board, ROW, COL);
		if (result != 'N'){//'X' 'O' 'E' 'N'
			break;
		}
		PlayerMove(board, ROW, COL);
		ShowBoard(board, ROW, COL);
		result = Judge(board, ROW, COL);
		if (result != 'N'){//'X' 'O' 'E' 'N'
			break;
		}
	}
	switch (result){
	case 'X':
		printf("You Win! :)\n");
		break;
	case 'O':
		printf("You Lose, Computer Win! :(\n");
		break;
	case 'E':
		printf("平局,恭喜!\n");
		break;
	default:
		break;
	}
}
int main()
{
	int select = 0;
	int quit = 0;
	while (!quit){
		ShowUI();
		scanf("%d", &select);
		switch (select){
		case 1:
			Game();
			break;
		case 2:
			printf("I Am Quit!\n");
			quit = 1;
			break;
		default:
			printf("Select Error! Try Again!\n");
			break;
		}
	}
	return 0;
}
Nettrace 源码分析 文章介绍:本文将围绕腾讯开源项目nettrace工具中数据采集,数据处理,数据分析三个模块深入源码分析其实现细节 阅读详情

相关推荐

vue3的面试题

vue3的面试题

jiang7701037的博客 6263

C语言实现 —— 三子棋!!!

在3*3矩阵中, 玩家’X’ 与 电脑’O’实现三子棋游戏。 功能实现: void ShowMU();// 实现展示游戏菜单 void Game();//开始游戏 void InitBoard(char board[][COL], int row, int col); // 初始化棋盘 void ShowBoard(char board[][COL], int row, int col); ...

qq_44329028的博客 256

HC32F460 SPI DMA 实现高效TFT屏幕刷新的实战解析

本文针对HC32F460 MCU驱动TFT屏幕时刷新卡顿的问题,深入解析了SPI DMA技术的实战应用。通过对比传统查询模式与DMA模式的性能数据,详细阐述了如何配置SPI与DMA资源、构建核心驱动框架,并提供了避坑指南与进阶优化思路,最终实现高效、流畅的屏幕刷新,显著降低CPU占用率。

weixin_29163797的博客 151

C语言实现简单三子棋游戏

三子棋,风靡高中的课间游戏,大家都和同桌拿草稿本对战过吧。今天呢,我们就来简单的实现这个小游戏! 首先,我们要把这个程序的几个小功能列出来。比如说: (1)void ShowMenu(); 菜单函数,实现进入游戏或者退出游戏功能。 (2)void Game(); 游戏函数,把游戏整体的构架整理出来。 (3)void ShowBoard(char Board[][COL], int row, int...

qq_43632625的博客 354

java三角套利_三角对冲套利-EA原理全解析

它是两个直盘货币和一个交叉盘货币之间的相互对冲,交易员往往受到外界因素的影响无法严格执行造成亏损。该系统经过大量数据统计分析和严格的科学论证计算,并通过多年实盘交易验证可以达到稳定盈利。希望交易员严格按照交易规则执行。此策略利用交叉外汇对的市场价格与其合成价格的价差来实现套利,还以EUR/USD和GBP为例:1,我们关注三个外汇对:EUR/USD,GBP/USD,以及GBP/EUR2,计算GBP/...

weixin_29531897的博客 2418

MCGS 和 200SMART 时间同步

在实际应用中,PLC经常会因为断电原因,导致时间不准确。假设我们设置了一个投加泵,每天8-18点投加。屏幕上显示的时间和PLC内部的时间,很可能不一样。所以需要在触摸屏上读取PLC的时间,并且提供设置功能。

mmxxoo_xxmmp的博客 1519

用C语言实现三子棋游戏:从思路到代码

三子棋是一种简单而有趣的棋类游戏。游戏在3×3的棋盘上开展,双方分别执“X”和“O”棋子轮流落子。落子过程中,只要一方在横、竖或对角线上成功将三个自己的棋子连成一线,便赢得游戏。若棋盘被棋子填满后,双方均未达成三子连线的情况,就判定为平局。

weixin_74353123的博客 1096

FME入门系列教程3-带你玩转GIS数据搬运与处理

FME(Feature Manipulation Engine)就像GIS界的"瑞士军刀",它能轻松解决90%的数据处理难题。我最初接触FME是因为要处理200多个不同格式的CAD地形图,传统方法需要1周时间,用FME只花了2小时!:支持300+数据格式(Shapefile、GeoJSON、CAD、Excel等)添加Reader(数据源):选择示例数据roads.shp。添加Writer(输出):设置输出为GeoJSON格式。:将常用流程保存为Template(.fmwt)

weixin_41234946的博客 1242

详细解读:C语言实现三子棋

详细解读C语言实现三子棋过程

m0_63807219的博客 3061

SAPFiori Elements Analytical List Page 概述

ALP(Analytical List Page)是SAP Fiori提供的一种复合页面类型,结合了分析(图表/KPI)与事务(表格/操作)功能,适用于需要分析后立即执行处理的业务场景(如采购价格监控、销售逾期处理等)。其核心价值在于让用户在同一页面完成从数据洞察到事务处理的闭环,减少应用切换带来的效率损耗。 页面结构包含页头KPI标签、交互式图表和明细表格,通过联动过滤、选择同步等机制实现数据钻取与即时操作。支持标准过滤和可视化过滤,并依赖OData注解(SelectionVariant/Presenta

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 268

【开发必备插件】iframe嵌套报“拒绝连接请求”的本地解决方法

关键词:iframe 拒绝连接、X-Frame-Options、Chrome 插件、前端调试、Allow X-Frame-Options前几天我在本地项目里调试一个第三方网站的嵌入页面时,遇到了一个非常经典的报错:xxx.com 拒绝了我们的连接请求。熟悉的老前端们一眼就知道——这是。但对于日常开发来说,我们经常需要在本地测试 iframe 嵌套外部页面(比如嵌第三方登录页、支付页、可视化报表系统等)。而线上站点配置了或DENY时,就会直接导致 iframe 加载失败。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1540

C语言:简易三子棋的实现

.前言 .头文件 .测试源文件 。菜单 。主函数 。游戏实现 .游戏实现源文件 。初始化数组 。打印棋盘。玩家落子 。电脑落子 。判断是否有位置 。判断输赢 。附录...

m0_69952128的博客 670

YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

如今各种网络模型更新迭代越来越快,计算机视觉相关的文章也越来越多,多到一些普通,通用的改进点无法达到发表的要求。本专栏正是解决这个问题!如何寻找创新点?为什么要使用这个模块?如何才能提升模型的精度?这是贯穿我们研究始终的问题。创新点在这个专栏中我已经整理好了,这已经省去了大部分时间,但是当我们使用这些新的模块去优化已有的模型,如何才能提升模型的精度,才是我们要达到的最终目标。当然我们可以使用传统的A+B+C的方法去堆积模块,然后是进行大量的实验去排列组合以实现最终的精度提升,这无可厚非。

Limiiiing的博客 6万+

C语言:三子棋的实现。

c语言,三子棋游戏

随便写点C++和JAVA的知识 904

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C语言:简单【三子棋】代码实现

三子棋小游戏C语言的代码实现

ks_wyf的博客 631

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

三子棋:有关c语言的实现

需要的实现方式有1.if语句 2.switch - case语句 3.二维数组的应用 4.for / while 循环 5. 函数的应用;

sdk_1的博客 700

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C语言实现:三子棋

(game.h)放置在自定义的头文件中,在主函数所在文件引用头文件,这样就可以完成程序的实现了。test.c文件。

qq_71806743的博客 511

c语言实现:三子棋

c语言实现:三子棋 问题描述:两个游戏者在3*3棋盘里轮流作标记,如果一个人在行,列或者两个对角线可以作三个标记,则为获胜。 我们首先得打印菜单供玩家选择(可以选择玩游戏或者退出游戏) 1 void menu() 2 { 3 printf("********************\n"); 4 printf("*...

weixin_30412013的博客 154

初识C语言:实现简单三子棋

C语言实现简单的三子棋

kingczqa的博客 914

数组:三子棋游戏C语言代码实现

第一次尝试使用数组来实现c语言中三子棋游戏代码的实现。

久谦的博客 1094

C语言基础:三子棋小游戏的C语言实现(超详解释+源码)

友友们好,今天和大家一起做一个简单的——三子棋小游戏。如下:游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,先连成三棋一线者视为胜利;棋盘被摆满棋子仍未分出胜利,视为平局。

linsc_05的博客 1519

C语言综合实战:登录系统与三子棋游戏的项目设计与实现

在C语言编程学习中,模块化设计和数据结构是构建健壮应用程序的核心基础。模块化通过将系统分解为高内聚、低耦合的功能单元(如认证模块、游戏逻辑模块),提升了代码的可读性、可维护性和可测试性。数据结构如二维数组和结构体,则为程序提供了高效组织与存储数据的能力。这些技术的工程价值在于,它们能将零散的知识点串联起来,形成解决复杂问题的系统化思维。在应用层面,从简单的控制台程序到具备完整流程的小型系统(如结合用户认证与游戏逻辑的应用),正是这种思维的典型实践。本文以C语言实现一个集成账号密码登录和三子棋游戏的综合项目为

weixin_31856057的博客 220

C语言:简单实现三子棋小游戏

三子棋游戏就是,假如有玩家A、B在一个棋盘下棋,一人一步轮换,谁先将三个相同的棋子连成一条线,谁就赢了 下面具体介绍游戏的实现: game.h #ifndef _GAME_H_ #define _GAME_H_ #pragma warning(disable:4996) #include<stdio.h> #include<windows.h> #include<s...

weixin_43219708的博客 505

用C语言实现经典三子棋:从设计到代码实现

当玩家和计算机下完棋并判断完输赢后,is_winer()函数返回的不是'C',则要继续下棋,因此也需要循环,当is_winer()函数返回的是'C'是,循环结束,跳出循环,并根据is_winer()函数的返回值判断输赢结果。要使用rand()函数,需要调用srand()函数且srand()函数只需调用一次,因为主函数中的test()函数只调用了一次,所以可将srand()函数写入test()函数中;test()函数中包含菜单菜单menu()函数,因为游戏不是只能玩一遍,所以使用。

2201_75467352的博客 811

C语言实现:9400字带你拿下三子棋

简易的三子棋

今年终于不是一个人看烟花了,因为今年没有烟花。 4099

C语言编写三子棋游戏:从概念到思路到实现

本文将深入探讨用C语言实现一个经典的双人策略游戏——三子棋(Tic Tac Toe)。我们不仅会详细解释游戏规则、数据结构选择,还会阐述如何设计和编码游戏的逻辑流程。通过本篇文章,读者能够理解如何从概念分析到具体代码实现,一步步构建出完整的三子棋游戏。二.游戏规则概述三子棋是一种经典的两人策略游戏,通常在一个3x3(本次代码可以随意更改棋盘大小)的网格上进行。玩家轮流放置他们的标记(这里代码玩家下棋用“*”,电脑下棋用“#”来示例),目的是在横行、竖列或斜对角线上获得三个连续的标记及为获胜。

2301_80176093的博客 878
上一篇: C语言操作符
下一篇: 扫雷程序
王翔乐
博客等级 码龄8年 6粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值