三子棋小游戏(C++)

【零基础学智能仿真-68】本地仿真助手的工具调用 本节学习把本地大模型的计算建议转化为可检查的工具调用。以两单元均匀杆为例,建立工具白名单、参数范围和原需求一致性校验,完成有限元求解、物理验收、结果回传与日志保存。通过合法调用、未知工具和参数篡改案例理解失败处理,并提供可选的Ollama接入程序,区分模型解释与工具原始结果,为下一节综合仿真研究打通计算入口。 阅读详情

    修复了上一版本的已知错误——平局无法结束游戏。后期续更!!!

#include<iostream>
#include<cstdio>
#include<windows.h>
#include<ctime>
using namespace std;
int checkerboard[4][4];
 
/*============== all class ==============*/
 
class chess {
	public:
		static void Game_game_pvp();
		static void Game_game_pvc();
};
 
/*============== all function ==============*/
 
int Game_init(){
	printf(
	"                  Three character chess game\n"
	"\n" 
	"             1.enter                       2.exit\n"
	);
	int retreat;
	scanf("%d",&retreat);
	return retreat;
}
void slow_o(string a,bool wrap){
	for(int i=0;i<a.size();i++){
		cout<<a[i];
		Sleep(50);
	}
	if(wrap){
		printf("\n");
	}
}
void Game_user(){
	printf(
	"            user interface\n"
	"            \n"
	"            1.Start the game!\n"
	"            \n"
	"            2.version\n"
	"            \n"
	"            3.What the author said"
	);
}
void Game_version(){
	slow_o("Version: 0.0.3",1);
	slow_o("Author:--",0);
}
void Game_author_said(){
	slow_o("  This is a three piece chess game that currently only has",1);
	slow_o("",1);
	slow_o("people vs people and people vs computer, and more versions",1);
	slow_o("",1);
	slow_o("will be published in the future.",0);
}
char convert(int a){
	if(a==0) return '?';
	if(a==1) return 'O';
	if(a==2) return 'X';
}
void round(){
	int i,j;
	do{
		i=rand()%3+1;
		j=rand()%3+1;
	}while(checkerboard[i][j]);
	cout<<i<<' '<<j;
	checkerboard[i][j]=2;
}
void Game_interface(){
	system("cls");
	system("color 1");
	Game_user();
	int x;
	while(x!=1){
		slow_o("",1);
		scanf("%d",&x);
		if(x==1){
			system("cls");
			return;
		}
		if(x==2){
			system("cls");
			Game_version();
		}else if(x==3){
			system("cls");
			Game_author_said();
		}
		Sleep(5000);
		system("cls");
		Game_user();
	}
}
void opt(){
	system("color 5");
	printf(
	"1.People vs. People(Normal mode)\n"
	"\n"
	"2.People vs. Computers(Expert mode)"
	);
}
 
int determine(){
	bool flag=0;
	if(checkerboard[1][1]==checkerboard[1][2]&&checkerboard[1][2]==checkerboard[1][3]){
		if(checkerboard[1][1]==1) return 1;
		if(checkerboard[1][1]==2) return 2;
	}
	if(checkerboard[2][1]==checkerboard[2][2]&&checkerboard[2][2]==checkerboard[2][3]){
		if(checkerboard[2][1]==1) return 1;
		if(checkerboard[2][1]==2) return 2;
	}
	if(checkerboard[3][1]==checkerboard[3][2]&&checkerboard[3][2]==checkerboard[3][3]){
		if(checkerboard[3][1]==1) return 1;
		if(checkerboard[3][1]==2) return 2;
	}
	if(checkerboard[1][1]==checkerboard[2][1]&&checkerboard[2][1]==checkerboard[3][1]){
		if(checkerboard[1][1]==1) return 1;
		if(checkerboard[1][1]==2) return 2;
	}
	if(checkerboard[1][2]==checkerboard[2][2]&&checkerboard[2][2]==checkerboard[3][2]){
		if(checkerboard[1][2]==1) return 1;
		if(checkerboard[1][2]==2) return 2;
	}
	if(checkerboard[1][3]==checkerboard[2][3]&&checkerboard[2][3]==checkerboard[3][3]){
		if(checkerboard[1][3]==1) return 1;
		if(checkerboard[1][3]==2) return 2;
	}
	if(checkerboard[1][1]==checkerboard[2][2]&&checkerboard[2][2]==checkerboard[3][3]){
		if(checkerboard[1][1]==1) return 1;
		if(checkerboard[1][1]==2) return 2;
	}
	if(checkerboard[1][3]==checkerboard[2][2]&&checkerboard[2][2]==checkerboard[3][1]){
		if(checkerboard[1][3]==1) return 1;
		if(checkerboard[1][3]==2) return 2;
	}
	for(int i=1;i<=3;i++){
		for(int j=1;j<=3;j++){
			if(convert(checkerboard[i][j])=='?'){
				flag=1;
			}
		}
	}
	if(flag==0){
		return 0;
	}
}
void stamp(){
	for(int i=1;i<=3;i++){
		for(int j=1;j<=3;j++){
			cout<<convert(checkerboard[i][j])<<' ';
		}
		cout<<endl;
	} 
}
void cls(){
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			checkerboard[i][j]=0;
		}
	}
}
void all(){
	int flag=0;
	for(int i=1;i<=3;i++){
		for(int j=1;j<=3;j++){
			if(checkerboard[i][j]==0){
				flag=1;
			}
		}
	}
	if(flag==false){
		system("cls");
		MessageBox(GetForegroundWindow(),"  draw","The outcome has been divided",MB_OK);
		abort();
	}
}
void chess::Game_game_pvp(){
	system("cls");
	cls();
	system("color F");
	int p1_x,p1_y;
	int p2_x,p2_y;
	for(int i=1;;i++){
		all();
		if(determine()==1){
			system("cls");
			MessageBox(GetForegroundWindow(),"  Player2 lost, you won","The outcome has been divided",MB_OK);
			abort();
		}
		if(determine()==2){
			system("cls");
			MessageBox(GetForegroundWindow(),"  Player1 lost, you won","The outcome has been divided",MB_OK);
			abort();
		}
		all();
		stamp(); 
		if(i%2==1){
			cout<<"Please input rows and columns for player 1 : ";
			cin>>p1_x>>p1_y;
			checkerboard[p1_x][p1_y]=1;
			system("cls");
			if(determine()==1){
				system("cls");
				MessageBox(GetForegroundWindow(),"  Player2 lost, you won","The outcome has been divided",MB_OK);
				abort();
			}
			all();
		}else{
			cout<<"Please input rows and columns for player 2 : ";
			cin>>p1_x>>p1_y;
			checkerboard[p1_x][p1_y]=2;
			system("cls");
			if(determine()==2){
				system("cls");
				MessageBox(GetForegroundWindow(),"  Player1 lost, you won","The outcome has been divided",MB_OK);
				abort();
			}
			all();
		}
	}
}
void Game_mode(){
	chess np;
	int xz;
	opt();
	cin>>xz;
	if(xz==1){
		np.Game_game_pvp();
	}else if(xz==2){
		np.Game_game_pvc();
	}
}
void chess::Game_game_pvc(){
	system("cls");
	cls();
	system("color F");
	int p_x,p_y;
	int c_x,c_y;
	for(int i=1;;i++){
		c_x=rand()%3+1;
		c_y=rand()%3+1;
		all();
		if(determine()==1){
			system("cls");
			MessageBox(GetForegroundWindow(),"  computer lost, you won","The outcome has been divided",MB_OK);
			abort();
		}
		if(determine()==2){
			system("cls");
			MessageBox(GetForegroundWindow(),"  you lost, computer won","The outcome has been divided",MB_OK);
			abort();
		}
		all();
		if(i%2==1){
			stamp(); 
			cout<<"Please input rows and columns for player : ";
			cin>>p_x>>p_y;
			checkerboard[p_x][p_y]=1;
			system("cls");
			if(determine()==2){
				system("cls");
				MessageBox(GetForegroundWindow(),"  you lost, computer won","The outcome has been divided",MB_OK);
				abort();
			}
			all();
		}else{
			stamp(); 
			cout<<"Please input rows and columns for computer : ";
			Sleep(1000);
			round();
			Sleep(950); 
			system("cls");
			if(determine()==1){
				system("cls");
				MessageBox(GetForegroundWindow(),"  computer lost, you won","The outcome has been divided",MB_OK);
				abort();
			}
			all();
		}
	}
}
 
/*============== The game is about to begin ! ==============*/
 
int main(){
	srand(time(nullptr));
	system("color 7");
	if(Game_init()==2){
		system("color 4"); return 0;
	}else Game_interface();
	chess myclass;
	Game_mode();
	return 0;
}
从抽象到落地:线性代数中“秩”与“最大无关组”的降维打击 线性代数中的“向量组的秩”与“最大线性无关组”并非抽象理论,而是数据科学与工程应用的核心工具。通过矩阵秩揭示系统真实自由度,实现特征降维(如PCA)、图像压缩(低秩近似)与故障诊断。结合Python的NumPy和SciPy,可高效求解秩、提取核心特征,将教材中的行变换转化为实际代码。从海量数据中剥离冗余、提炼本质,正是数学赋予我们驾驭复杂世界的底层能力。 阅读详情

相关推荐

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件

西门子触摸屏教程wincc flexible2008 sp5 Smart V3 V4中文版软件

liang007dudu的博客 1万+

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 428

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 319

微调数据集构建:清洗、标注、格式转换完整流程

摘要解决微调数据直接抓取导致的噪声污染、模式崩溃与Token错位问题。适用于需为大模型SFT阶段构建高质量训练集的数据与算法工程师。读完可获得包含启发式清洗、MinHash去重及ChatML格式对齐的完整可运行数据流水线。关键词数据清洗、MinHash去重、数据标注、ChatML、SFT数据集、数据配比背景与问题大模型微调效果的上限由数据质量决定,直接使用未经处理的原始语料极易引发模型复读、幻觉与指令遵循能力退化。

2402_85729970的博客 468

27-eMMC电路设计

eMMC硬件电路设计

weixin_66510961的博客 4005

硬核拆解华为/大疆/小米硬件面试真题:手撕电路+考点思维导图(附答案)

设计一个增益为20dB、带宽≥100kHz的同相放大器,电源电压±5V,要求输出摆幅≥8V。12位ADC的参考电压2.5V,输入信号1kHz正弦波,峰峰值2V。输入24V转5V/10A的同步降压电路,开关频率500kHz,计算MOSFET的损耗并选择型号(需提供TI官网截图)。设计无人机图传系统,要求1080P@30fps,传输距离2km。FPGA设计中,100MHz时钟域到50MHz时钟域传输32位数据,给出同步方案并画时序图。“设计一个输入12V、输出5V/3A的同步降压电路,给出关键参数计算”

qq_63103361的博客 3534

容器能启动却调用不了GPU?CUDA驱动兼容性验收实战

AI算力平台容器虽可进入Shell,但GPU任务仍可能因驱动、运行时、框架版本或设备映射不匹配而失败。验收需逐层验证:宿主机驱动、Docker GPU支持、框架版本、动态库加载、基础CUDA计算及自定义扩展。通过固定镜像Digest、执行最小计算与业务请求,确保真实算力可用,避免将兼容性问题误判为模型错误。

iFisher666的博客 555

华为OD机考真题 新系统 - 小菊的寻宝之旅(Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【小菊的寻宝之旅】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小菊的寻宝之旅】多语言题解。

qq_45776114的博客 617

Python 正则表达式:5 个日常够用的模式

第一段</p><p>第二段</p>'],一次吞到了最后一个 </p>;非贪婪结果是 ['<p>第一段</p>', '<p>第二段</p>'],每段分开取出。输出说明:第一行是 ['20260115', '299', '3'];第二行是 ('2026', '01', '15'),三个分组分别对应年、月、日。输出说明:结果是 ['苹果', '香蕉', '橙子', '葡萄', '西瓜']。后,就会尽量少匹配。html = '<p>第一段</p><p>第二段

云物缭绕 224

Atlas 300I Duo - vllm部署Qwen3-VL-8B-Instruct

本文介绍了在Ascend NPU环境下部署Qwen3-VL-8B大语言模型的步骤。主要包括:1)安装驱动、docker和vllm镜像;2)创建特权容器并挂载设备与目录;3)进入容器安装指定版本的transformers;4)设置环境变量和NPU卡配置;5)启动vllm服务;6)测试API接口。部署过程涉及多块NPU卡的使用,需注意内存碎片化问题,最终通过vllm框架提供模型推理服务。

m0_50105717的博客 1560

【ComfyUI】SDXL + 单LoRA 房屋平面图渲染装修

本文介绍了一种基于ComfyUI的室内平面设计图自动生成效果图的工作流。该流程通过导入房屋平面图,结合SDXL室内设计模型与北欧风格LoRA模块,快速生成多房间效果展示。工作流包含图像输入、文本处理、模型加载和图像生成等环节,支持风格化渲染和细节补充,适用于建筑设计、家装展示、房地产营销等场景。核心采用SDXL通用室内设计模型和北欧极简LoRA,通过节点衔接实现自动化批量生成,能在短时间内将平面方案转化为逼真的三维效果图。该技术可提升设计呈现效率,辅助客户决策,并应用于教学研究领域。

Mr数据杨 3643

Python 基础系列教程(二):运算符与字符串详解

本文详解Python运算符与字符串核心知识。涵盖七类运算符(算术、赋值、比较、逻辑等)及其优先级,重点解析/与//、负数整除、取余符号规则及幂运算右结合特性。通过实例揭示运算符的类型多态性,如字符串乘法、列表拼接。深入讲解字符串索引、切片、不可变性及常用方法,并介绍三种格式化方式。附带海象运算符:=等进阶用法,助力夯实编程基础。

810cheng 489

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【FDE系列】阶段2:Day 47(UP详细版):对接企业系统 — 飞书 / 钉钉 API

函数,把飞书的 5 个错误码映射到"换 token / 加权限 / 丢弃 / 退避 / 重试",并写单测覆盖这 5 条分支。(可分两次)| 难度:★★★★☆ | 前置知识:Day 46(认证与 401/403)、Day 44(nginx 转发头)写一个 5 行的"攻击脚本":同一个 sign,换一条 body,POST 到你的接收端。指向它,跑一遍:发 3 条消息,确认只换 1 次 token。多换 1 次,换来"手上 token 至少还有 5 分钟"20 并发抢刷新:无锁 20 次、加锁 1 次。

正经教主是个热衷于正经学习分享的教主。 407

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python FTP 服务端项目详细功能文档

基于 socketserver.ThreadingTCPServer 的多线程 FTP 服务端,与前面的客户端配套,用 ini 存账号、JSON 存断点,不依赖外部数据库。

piaoyiren的博客 93

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 73

Python 做 ETF 行情:标的池、批量 K 线与数据校验的可复用封装

个人开发者做 ETF 行情,真正的成本不在取数,而在代码格式统一、批量请求与复权口径。本文给出一套四层封装的 Python 实践:标的池、取数适配、数据校验与整理,并列出容易静默出错的检查点。

weixin_45515140的博客 305

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 130

Day07 Python数据存储与运算实战全解

本文是《AI应用开发筑基》系列的第一篇技术笔记,聚焦Python编程中最底层的两块基石——**数据存储**(字面量、变量、五大基本类型、内存模型)与**数据运算**(四种运算符、I/O交互、类型转换机制)。全文采用"概念解析→源码演示→输出验证→踩坑总结"四步分析法,逐层拆解每个知识点的底层逻辑。文末附ATM取款机完整实战,带你从零写出第一个交互式Python程序。适合零基础入门及需要系统梳理Python基础的技术人员阅读。

2301_79028807的博客 230

python自动化框架中的类,函数,库,模块,文件,包,项目名等等有没有命名规范

python自动化框架中的类,函数,库,模块,文件,包,项目名等等有没有命名规范

simpleness_的博客 334

飞凌嵌入式ElfBoard-数据类型-元组

my_tuple = (1, 2, 3, 'a', 'b', 'c') # my_tuple 包含了多个元素,包括整数和字符串。print(my_tuple[1:4]) # 输出:(2, 3, 'a'),切片访问从索引1到索引3(不包括索引4)的元素。my_tuple = (1, 2, 3, 'a', 'b', 'c') # 再次定义 my_tuple,内容与之前相同。print(my_tuple[3:]) # 输出:('a', 'b', 'c'),切片访问从索引3到结束的元素。

2301_76587520的博客 160

python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)

文章浏览阅读2.6w次,点赞21次,收藏136次。本文介绍了如何利用Python的scapy库进行网络报文的分层解析,包括从pcap文件中读取数据、实时抓包

2601_96798011的博客 236

HA分布式架构采集节点变更操作手册20261029

在分布式架构中,存在多个采集节点,如果采集节点出现问题,需要重装。 或者是因为规划,要删除一个节点,请按照这个流程操作。

2501_91502527的博客 188

2026 Python 股票数据接口选型指南(横评 + 决策树)

没有「最好的接口」,只有「最匹配你需求的组合」。;;;;。实务里几乎都是「基本面一个源 + 交易型行情一个源」混搭,而非非此即彼。

2601_96288572的博客 642

Python asyncio 深度解析:事件循环、协程与异步 I/O 的完整作战手册

asyncio 是协作式单线程 I/O 并发:把"等待"变成可挂起的对象,一个线程管理成千上万个连接,适合 I/O 密集场景。await 是显式让出点:只有遇到 await 才会切换,因此协程内写阻塞调用 = 卡死全平台。Task/Future/gather 是编排三件套:create_task 调度、gather 并发收集、wait_for 超时保护。与线程/进程互补而非替代:I/O 用 asyncio,CPU 用多进程,遗留阻塞库用线程池兜底。工程化靠纪律。

ITOfDragon的博客 288

【AI】方案设计:通用慢节奏策略游戏大模型智能体流水线开发架构设计——基于 OODA 文件总线与可插拔协议适配层

本方案设计了一种面向慢节奏策略游戏的通用智能体架构,通过C++与Python协同构建协议适配层,实现游戏状态与控制指令的解耦。核心采用文件目录作为唯一总线,基于OODA循环分阶段处理态势感知、研判、决策与执行,支持多协议接入、可审计回放、人在回路干预及自愈容错。大模型仅依赖统一结构化简报与通用指令,具备高兼容性与可扩展性,适用于复杂推演场景。

hknaruto的专栏 162
上一篇: 三子棋小游戏第二版(C++)
下一篇: C++三子棋小游戏第四版
186-38
博客等级 码龄4年 30粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值