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

C++五子棋(未做完,但能玩,而且还不错)

代码放下面了,关于步骤介绍的我以后再完善一下。

#include<bits/stdc++.h>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
using namespace std;
//--------------------------------五子棋------------------------------------//
//player_1:o
//player_2:x
int Game_mode;
char qizi[25][25];
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
//主要模块
void print_checkerboard(){SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);cout<<"   ";for(int i=1;i<=20;i++){cout<<i<<" ";if(i<10) cout<<" ";}cout<<endl;for(int i=1;i<=20;i++){if(i<10) cout<<" ";cout<<i<<" ";for(int j=1;j<=20;j++){if(qizi[i][j]=='o'){SetConsoleTextAttribute(handle,  FOREGROUND_BLUE | FOREGROUND_INTENSITY);cout<<qizi[i][j]<<"  ";SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);}else if(qizi[i][j]=='x'){SetConsoleTextAttribute(handle,  FOREGROUND_RED | FOREGROUND_INTENSITY);cout<<qizi[i][j]<<"  ";SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);}else{SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);cout<<qizi[i][j]<<"  ";}}cout<<endl;}
}
bool inspect_1(){for(int i=1;i<=20;i++){for(int j=1;j<=20;j++){if(qizi[i][j]=='o'){if((qizi[i+1][j]=='o'&&qizi[i+2][j]=='o'&&qizi[i+3][j]=='o'&&qizi[i+4][j]=='o') or(qizi[i-1][j]=='o'&&qizi[i-2][j]=='o'&&qizi[i-3][j]=='o'&&qizi[i-4][j]=='o') or(qizi[i][j+1]=='o'&&qizi[i][j+2]=='o'&&qizi[i][j+3]=='o'&&qizi[i][j+4]=='o') or(qizi[i][j-1]=='o'&&qizi[i][j-2]=='o'&&qizi[i][j-3]=='o'&&qizi[i][j-4]=='o') or(qizi[i+1][j+1]=='o'&&qizi[i+2][j+2]=='o'&&qizi[i+3][j+3]=='o'&&qizi[i+4][j+4]=='o') or(qizi[i+1][j-1]=='o'&&qizi[i+2][j-2]=='o'&&qizi[i+3][j-3]=='o'&&qizi[i+4][j-4]=='o') or(qizi[i-1][j+1]=='o'&&qizi[i-2][j+2]=='o'&&qizi[i-3][j+3]=='o'&&qizi[i-4][j+4]=='o') or(qizi[i-1][j-1]=='o'&&qizi[i-2][j-2]=='o'&&qizi[i-3][j-3]=='o'&&qizi[i-4][j-4]=='o') ){return true;}}}}return false;
}bool inspect_2(){for(int i=1;i<=20;i++){for(int j=1;j<=20;j++){if(qizi[i][j]=='x'){if((qizi[i+1][j]=='x'&&qizi[i+2][j]=='x'&&qizi[i+3][j]=='x'&&qizi[i+4][j]=='x') or(qizi[i-1][j]=='x'&&qizi[i-2][j]=='x'&&qizi[i-3][j]=='x'&&qizi[i-4][j]=='x') or(qizi[i][j+1]=='x'&&qizi[i][j+2]=='x'&&qizi[i][j+3]=='x'&&qizi[i][j+4]=='x') or(qizi[i][j-1]=='x'&&qizi[i][j-2]=='x'&&qizi[i][j-3]=='x'&&qizi[i][j-4]=='x') or(qizi[i+1][j+1]=='x'&&qizi[i+2][j+2]=='x'&&qizi[i+3][j+3]=='x'&&qizi[i+4][j+4]=='x') or(qizi[i+1][j-1]=='x'&&qizi[i+2][j-2]=='x'&&qizi[i+3][j-3]=='x'&&qizi[i+4][j-4]=='x') or(qizi[i-1][j+1]=='x'&&qizi[i-2][j+2]=='x'&&qizi[i-3][j+3]=='x'&&qizi[i-4][j+4]=='x') or(qizi[i-1][j-1]=='x'&&qizi[i-2][j-2]=='x'&&qizi[i-3][j-3]=='x'&&qizi[i-4][j-4]=='x') ){return true;}}}}return false;
}//电脑模块
void reflection(){system("cls");for(int i=1;i<=2;i++){print_checkerboard();cout<<"电脑正在思考中";for(int i=1;i<=3;i++){cout<<".";Sleep(500);}system("cls");}
}void lianzi_3_o(){for(int i=1;i<=20;i++){for(int j=1;j<=20;j++){if(qizi[i][j]=='o'){if(qizi[i+1][j]=='o' and qizi[i+2][j]=='o'){}}}}
}int main(){memset(qizi, 42 , sizeof(qizi));HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(handle,  BACKGROUND_BLUE | BACKGROUND_GREEN);SetConsoleTextAttribute(handle,  FOREGROUND_BLUE );cout<<"请先确定游戏模式:"<<endl;cout<<"1.(玩家VS电脑)"<<endl;cout<<"2.(玩家VS玩家)"<<endl;SetConsoleTextAttribute(handle,  FOREGROUND_RED );cin>>Game_mode;system("cls");if(Game_mode==1){
//		print_checkerboard();
//		int cmp=0,player=0;
//		int player_x=0,player_y=0;
//		int cmp_x=0,cmp_y=0;
//		int F_PER=0,F_CMP=0;
//		srand(( int )time(0));
//        int order=random(2);
//		if(order==1){
//			player=1,cmp=0;
//			F_PER=1;
//			cout<<"你先下。。。"<<endl;
//			Sleep(3000);
//			system("cls");
//		}else{
//			player=0,cmp=1;
//			F_CMP=1;
//			cout<<"电脑先下。。。"<<endl;
//			Sleep(3000);
//			system("cls");
//		}
//		while(inspect_1()==false and inspect_2()==false){
//			if(player==1){
//				int a=0,b=0;
//				while(a>20 or b>20 or qizi[a][b]=='o'||qizi[a][b]=='x'){
//					a=0,b=0;
//					cin>>a>>b;
//					if(a>20 or b>20){
//						system("cls");
//						print_checkerboard();
//						SetConsoleTextAttribute(handle,  FOREGROUND_RED | FOREGROUND_INTENSITY);
//						cout<<"超出棋盘范围,请重新输入!"<<endl;
//						SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);
//					}
//					if(a<=20 and b<=20) {
//						if(qizi[a][b]=='o'||qizi[a][b]=='x'){
//							system("cls");
//							print_checkerboard();
//							SetConsoleTextAttribute(handle,  FOREGROUND_RED | FOREGROUND_INTENSITY);
//							cout<<"此坐标已有棋子,请重新输入!"<<endl;
//							SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);
//						}else{
//							player_x=a,player_y=b;
//							break;
//						}
//
//					}
//				}
//				if(F_PER==1){
//					qizi[player_x][player_y]='o';
//					system("cls");
//					print_checkerboard();
//					if(inspect_1()){
//						cout<<"哈哈,你赢了!"<<endl;
//						system("pause");
//					}
//					system("cls");
//				}else{
//					qizi[player_x][player_y]='x';
//					system("cls");
//					print_checkerboard();
//					if(inspect_2()){
//						cout<<"哈哈,你赢了!"<<endl;
//						system("pause");
//					}
//				}
//			}else{
//				int a=0,b=0;
//				print_checkerboard();
//				reflection();
//				
//			}
//		}}else if(Game_mode==2){bool player1=0,player2=0;int player1_x,player1_y;int player2_x,player2_y;print_checkerboard();while(inspect_1()==false and inspect_2()==false){if(player1==0) {int a=0,b=0;while(a>20 or b>20 or qizi[a][b]=='o'||qizi[a][b]=='x'){a=0,b=0;cin>>a>>b;if(a>20 or b>20){system("cls");print_checkerboard();SetConsoleTextAttribute(handle,  FOREGROUND_RED | FOREGROUND_INTENSITY);cout<<"超出棋盘范围,请重新输入!"<<endl;SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);		}if(a<=20 and b<=20) {if(qizi[a][b]=='o'||qizi[a][b]=='x'){system("cls");print_checkerboard();SetConsoleTextAttribute(handle,  FOREGROUND_RED | FOREGROUND_INTENSITY);cout<<"此坐标已有棋子,请重新输入!"<<endl;SetConsoleTextAttribute(handle,  FOREGROUND_GREEN | FOREGROUND_INTENSITY);	}else{player1_x=a,player1_y=b;break;}}}qizi[player1_x][player1_y]='o';system("cls");print_checkerboard();if(inspect_1()==true){cout<<"哈哈,玩家1,赢了!"<<endl;system("pause"); return 0; }player1=1;player2=0;}if(player2==0) {int a=0,b=0;while(a>20 or b>20 or qizi[a][b]=='o'or qizi[a][b]=='x'){a=0,b=0;cin>>a>>b;if(a>20 or b>20){system("cls");print_checkerboard();SetConsoleTextAttribute(handle,  FOREGROUND_RED);cout<<"超出棋盘范围,请重新输入!"<<endl;SetConsoleTextAttribute(handle,  FOREGROUND_GREEN);		}if(a<=20 and b<=20) {if(qizi[a][b]=='o'||qizi[a][b]=='x'){system("cls");print_checkerboard();SetConsoleTextAttribute(handle,  FOREGROUND_RED);cout<<"此坐标已有棋子,请重新输入!"<<endl;SetConsoleTextAttribute(handle,  FOREGROUND_GREEN);	}else{player2_x=a,player2_y=b;break;}}}qizi[player2_x][player2_y]='x';system("cls");print_checkerboard();if(inspect_2()==true){cout<<"哈哈,玩家2,赢了!"<<endl;system("pause"); return 0; }player1=0;player2=1;}}}else{cout<<"输入错误,结束。"<<endl;}return 0;
}

相关文章:

C++五子棋(未做完,但能玩,而且还不错)

代码放下面了&#xff0c;关于步骤介绍的我以后再完善一下。 #include<bits/stdc.h> #include<cstdio> #include<cstdlib> #include<ctime> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x…...

二分查找代码详解

二分查找代码实现 以下是完整的代码和解释&#xff1a; #include <stdio.h>int binarySearch(int arr[], int length, int target) {int left 0;int right length - 1;while (left < right) {int mid left (right - left) / 2; // 防止溢出if (arr[mid] target…...

uniapp的h5,读取本地txt带标签的文件

效果图 使用的回显的标签是u-parse&#xff0c;下面的网址讲了这个标签的相关 https://www.cnblogs.com/huihuihero/p/12978903.html 导入此插件 https://ext.dcloud.net.cn/plugin?id364 使用 uni.request({// 本地文件url: "/static/互联网医院医师端用户协议.txt…...

韦东山嵌入式linux系列-具体单板的按键驱动程序(查询方式)

1 GPIO 操作回顾 &#xff08;1&#xff09;使能模块&#xff1b; &#xff08;2&#xff09;设置引脚的模式&#xff08;工作于GPIO模式&#xff09;&#xff1b; &#xff08;3&#xff09;设置GPIO本身&#xff08;输入/输出&#xff09;&#xff1b; &#xff08;4&…...

如何使用 API list 极狐GitLab 群组中的镜像仓库?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…...

PHP设计模式-简单工厂模式

核心&#xff1a; 一、定义一个接口类里面写规定好的方法。 interface Message{public function send(array $params);public function getMessage(array $params);public function getCode(array $params);} 二、定义产品类 、产品类继承接口类 class AlliYunSms implements …...

C语言航空售票系统

以下是系统部分页面 以下是部分源码&#xff0c;需要源码的私信 #include<stdio.h> #include<stdlib.h> #include<string.h> #define max_user 100 typedef struct ft {char name[50];//名字char start_place[50];//出发地char end_place[50];//目的地char …...

Oracle 19c打Datapatch数据补丁报错处理

Oracle 19c打Datapatch数据补丁报错处理 错误分析重新编译补丁验证安装完数据库补丁后,在数据补丁的步骤收到以下报错: Connecting to database...OK Gathering database info...done Bootstrapping registry and package to current versions...done Determining current s…...

Linux shell编程学习笔记66:ping命令 超详细的选项说明

0 前言 网络信息是电脑网络信息安全检查中的一块重要内容&#xff0c;Linux和基于Linux的操作系统&#xff0c;提供了很多的网络命令&#xff0c;今天我们研究最常用的ping命令。 1 ping命令 的功能、格式和选项说明 1.1 ping命令 的功能 简单来说&#xff0c; ping 命令 会…...

SSL/TLS和SSL VPN

1、SSL/TLS SSL安全套接字层&#xff1a;是一种加密协议&#xff0c;用于在网络通信中建立安全连接。它在应用层和传输层&#xff08;TCP/IP&#xff09;之间提供数据加密、服务器身份验证以及信息完整性验证 SSL只保护TCP流量&#xff0c;不保护UDP协议 TLS&#xff1a;传输层…...

浅谈WebSerice

一. 什么是WebService Web Service也称为web服务&#xff0c;它是一种跨编程语言和操作系统平台的远程调用技术。Web Service采用标准的SOAP协议传输&#xff08;SOAP&#xff1a;Simple Object Access Protocol简单对象访问协议&#xff0c;soap属于w3c标准。并且soap协议是基…...

linux快速入门-学习笔记

linux快速入门-学习笔记 第一章&#xff1a;Linux系统概念及命令学习Linux系统基本概念命令终端介绍命令格式介绍Linux系统辨别目录与文件的方法通过文件详细属性辨别ls 查看目录/文件命令Linux 系统下的归属关系命令行编辑技巧Linux 基本权限的类别课后练习 第二章&#xff1a…...

科普文:5种Linux下软件部署方式说明

在Linux世界里&#xff0c;高效、灵活地安装和管理软件是每个系统管理员和开发者的基本功。从传统的RPM包管理&#xff0c;到便捷的YUM软件仓库&#xff0c;再到颠覆性的Docker容器技术&#xff0c;Snap&#xff0c;源码安装&#xff0c;每一种方法都有其独到之处&#xff0c;适…...

Redisson中的RBlockingQueue的使用场景及例子

Redisson 的 RBlockingQueue 是一个实现了 Java BlockingQueue 接口的分布式队列&#xff0c;它可以用于在分布式系统中实现生产者-消费者模式。RBlockingQueue 提供了线程安全的阻塞队列操作&#xff0c;允许生产者在队列满时阻塞&#xff0c;消费者在队列空时阻塞&#xff0c…...

【办公软件】Office 2019以上版本PPT 做平滑切换

Office2019以上版本可以在切页面时做平滑切换&#xff0c;做到一些简单的动画效果。如下在快捷菜单栏中的切换里选择平滑。 比如&#xff0c;在两页PPT中&#xff0c;使用同一个形状对象&#xff0c;修改了大小和颜色。 选择切换为平滑后&#xff0c;可以完成如下的动画显示。 …...

connect-multiparty中间件用法以及实例--文件上传中间件(保姆级别教学)

connect-multiparty中间件的用法包括安装和引入、基本设置、路由应用、文件处理以及安全和优化等步骤。 connect-multiparty是一个专为Connect和Express框架设计的文件上传中间件&#xff0c;它基于multiparty库&#xff0c;用于处理多部分表单数据&#xff0c;尤其针对文件上传…...

0503触发器的电路结构和工作原理

触发器的电路结构和工作原理 如何区分锁存器还是触发器&#xff0c; 看有没有这个三角符号&#xff0c;告诉是上升沿触发还是下降沿触发&#xff0c;没有三角符号就是电平触发。低电平触发就画个小圈。高电平触发就不画小圈。有小圈的三角就是下降沿触发 setup建立时间 hold 保…...

LeetCode:二叉树的中序遍历(C语言)

1、前序遍历&#xff1a;根左右 2、中序遍历&#xff1a;左根右 3、后序遍历&#xff1a;左右根 1、问题概述&#xff1a;二叉树中序遍历 2、示例 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;root […...

MySQL数据库基本安装与部署

目录 概念 数据库的基本概念 关系型数据库 非关系型数据库 MySQL 商业版与社区版 示例 初始化MySQL 添加系统服务 概念 数据库的基本概念 数据&#xff08;Data&#xff09; 描述事物的符号记录包括数字、文字、图形、图像、声音、档案记录等以“记录”形式按统一的…...

paraFoam 运行 报错 usr/lib/x86_64-linux-gnu/libQt5Core.so 已解决

在日常项目开发中。使用ubuntu 视图开发的时候。报错 缺少 libQt5Core 核心组件&#xff01; whereis libQt5Core.so.5sudo strip --remove-section.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 完美解决&#xff0c;并且能正常打开&#xff0c;前提是&#xff0c…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...