使用linux,c++,创作一个简单的五子棋游戏

#include <iostream>  
#include <vector>  
#include <unordered_map>  using namespace std;  // 棋盘大小  
const int BOARD_SIZE = 15;  // 棋子类型  
enum ChessType {  EMPTY,  BLACK,  WHITE  
};  // 棋盘类  
class ChessBoard {  
private:  vector<vector<ChessType>> board;  public:  ChessBoard() {  board.resize(BOARD_SIZE, vector<ChessType>(BOARD_SIZE, EMPTY));  }  // 打印棋盘  void print() {  for (int i = 0; i < BOARD_SIZE; ++i) {  for (int j = 0; j < BOARD_SIZE; ++j) {  switch (board[i][j]) {  case BLACK: cout << "● "; break;  case WHITE: cout << "○ "; break;  default: cout << "· "; break;  }  }  cout << endl;  }  }  // 下棋  bool placeChess(ChessType type, int x, int y) {  if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || board[x][y] != EMPTY) {  return false;  }  board[x][y] = type;  return true;  }  // 检查是否胜利  bool checkWin(ChessType type, int x, int y) {  // 检查八个方向(上下左右,四个对角线)  vector<pair<int, int>> directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1},  {-1, -1}, {-1, 1}, {1, -1}, {1, 1}};  for (auto dir : directions) {  int count = 1;  for (int i = 1; i < 5; ++i) {  int nx = x + i * dir.first;  int ny = y + i * dir.second;  if (nx >= 0 && nx < BOARD_SIZE && ny >= 0 && ny < BOARD_SIZE && board[nx][ny] == type) {  ++count;  } else {  break;  }  }  for (int i = 1; i < 5; ++i) {  int nx = x - i * dir.first;  int ny = y - i * dir.second;  if (nx >= 0 && nx < BOARD_SIZE && ny >= 0 && ny < BOARD_SIZE && board[nx][ny] == type) {  ++count;  } else {  break;  }  }  if (count >= 5) {  return true;  }  }  return false;  }  
};  int main() {  ChessBoard board;  ChessType currentPlayer = BLACK;  bool gameOver = false;  while (!gameOver) {  board.print();  cout << (currentPlayer == BLACK ? "Black" : "White") << ", enter your move (x y): ";  int x, y;  cin >> x >> y;  if (board.placeChess(currentPlayer, x, y)) {  if (board.checkWin(currentPlayer, x, y)) {  board.print();  cout << (currentPlayer == BLACK ? "Black wins!" : "White wins!") << endl;  gameOver = true;  } else {  currentPlayer = (currentPlayer == BLACK) ? WHITE : BLACK;  }  } else {  cout << "Invalid move. Try again." << endl;  }  }  return 0;  
}

编译通过后的执行效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/644354.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全氟己酮灭火绳的用法早知道:灭火绳多少钱一米?

全氟己酮灭火装置作为一种高效、安全、环保的灭火技术&#xff0c;已经成为了备受青睐的新型灭火选择之一。伴随着市场需求不断增长&#xff0c;在全氟己酮厂家的努力下&#xff0c;各式各样的全氟己酮自动灭火装置不断涌现&#xff0c;包括自动灭火贴、灭火片、灭火毯、灭火绳…

go语言并发实战——日志收集系统(八) go语言操作etcd以及利用watch实现对键值的监控

有关包的安装 我们要实现go语言对第三方包的操作需要我们下载第三方包go.etcd.io&#xff0c;下载命令&#xff1a; go get go.etcd.io/etcd/client/v3 ectd的put与get操作 相关函数说明与示例 我们想实现对etcd进行简单的操作的步骤还是比较简单的&#xff0c;在我上一篇文…

图像哈希:全局+局部提取特征

文章信息 作者&#xff1a;梁小平&#xff0c;唐振军期刊&#xff1a;ACM Trans. Multimedia Comput. Commun. Appl&#xff08;三区&#xff09;题目&#xff1a;Robust Hashing via Global and Local Invariant Features for Image Copy Detection 目的、实验步骤及结论 目…

python实现钉钉通讯录导出Excel表

Python工具开源专栏 Py0004 python实现钉钉通讯录导出Excel表 Python工具开源专栏前言目录结构部分演示完整代码已在GitHub上开源 前言 需求来源于公司&#xff0c;需要将钉钉通讯录以Excel表的形式导出到本地&#xff0c;方便定期备份。导出的Excel需要处理钉钉用户兼任多部门…

【Kafka】安装配置操作(二)

Kafka安装与操作 安装与配置 版本说明 安装包下载地址&#xff1a; http://archive.apache.org/dist/kafka/3.5.0/ 源码包下载地址&#xff1a; http://archive.apache.org/dist/kafka/3.5.0/ 安装配置 1)解压&#xff1a; tar -zxvf kafka_2.12-3.5.0.tgz -C /opt/module/ 2…

贪心算法-活动安排问题和背包问题

实验6贪心算法-活动安排问题和背包问题 实验目的&#xff1a; 理解贪心算法的基本思想运用贪心算法解决实际问题 实验内容&#xff1a; 采用贪心方法编程实现以下问题的算法 1.如何安排下列活动使得使用的活动场所最少&#xff0c;并给出具体的安排方法。 活动 a b c …

【笔试】03

FLOPS FLOPS 是 Floating Point Operations Per Second 的缩写&#xff0c;意为每秒浮点运算次数。它是衡量计算机性能的指标&#xff0c;特别是用于衡量计算机每秒能够执行多少浮点运算。在高性能计算领域&#xff0c;FLOPS 被广泛用来评估超级计算机、CPU、GPU 和其他处理器…

甘特图是什么?利用甘特图来优化项目管理流程

在现代项目管理中,图表是一种强大而直观的工具,可以帮助项目经理和团队成员清晰地了解并掌控整个项目进程。其中,甘特图是最常用和最有效的图表之一。 甘特图是一种条形图,可以用来直观地展示项目中各个任务的进度、持续时间和相互关系。它由一个横轴和一个纵轴组成。横轴代表时…

2024 OceanBase 开发者大会:OceanBase 4.3正式发布,打造PB级实时分析数据库

4月20日&#xff0c;2024 OceanBase开发者大会盛大召开&#xff0c;吸引了50余位业界知名的数据库专家和爱好者&#xff0c;以及来自全国各地的近600名开发者齐聚一堂。他们围绕一体化、多模、TP与AP融合等前沿技术趋势展开深入讨论&#xff0c;分享场景探索的经验和最佳实践&a…

编程基础“四大件”

基础四大件包括&#xff1a;数据结构和算法,计算机网络,操作系统,设计模式 这跟学什么编程语言,后续从事什么编程方向均无关&#xff0c;只要做编程开发&#xff0c;这四个计算机基础就无法避开。可以这么说&#xff0c;这基础四大件真的比编程语言重要&#xff01;&#xff0…

typedef 定义函数指针

typdef int(*FUNC_TYPE)(int,int) FUNC_TYPE p NULL; 定义了一个函数指针 函数指针作为函数的参数的用法demon

基于python+django+mysql农业生产可视化系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…