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

网站建设倒计时代码网站自然排名优化

网站建设倒计时代码,网站自然排名优化,顺德门户网站建设公司,dedecms 迁移 wordpress1. 游戏介绍 一个简单的 C 五子棋小游戏 1.1 游戏规则&#xff1a; 双人轮流输入下入点坐标横竖撇捺先成五子连线者胜同一坐标点不允许重复输入 1.2 初始化与游戏界面 初始化界面 X 输入坐标后 O 输入坐标后 X 先达到胜出条件 2. 源代码 #include <iostream> #i…

1. 游戏介绍

一个简单的 C++ 五子棋小游戏

1.1 游戏规则:
  • 双人轮流输入下入点坐标
  • 横竖撇捺先成五子连线者胜
  • 同一坐标点不允许重复输入
1.2 初始化与游戏界面

在这里插入图片描述

2. 源代码

#include <iostream>
#include <vector>
#include <algorithm>
#include <limits>using namespace std;const int BOARD_SIZE = 15;
char board[BOARD_SIZE][BOARD_SIZE];void initBoard() {for (int i = 0; i < BOARD_SIZE; ++i) {for (int j = 0; j < BOARD_SIZE; ++j) {board[i][j] = '.';}}
}void printBoard() {for (int i = 0; i < BOARD_SIZE; ++i) {for (int j = 0; j < BOARD_SIZE; ++j) {cout << board[i][j] << " ";}cout << endl;}
}bool isBoardFull() {for (int i = 0; i < BOARD_SIZE; ++i) {for (int j = 0; j < BOARD_SIZE; ++j) {if (board[i][j] == '.') {return false;}}}return true;
}bool checkWin(int x, int y, char player) {int count;// 横向检查count = 0;for (int i = max(0, x - 4); i <= x; ++i) {if (board[y][i] == player) {count++;} else {count = 0;}}for (int i = x + 1; i < min(BOARD_SIZE, x + 5); ++i) {if (board[y][i] == player) {count++;} else {break;}}if (count >= 5) return true;// 纵向检查count = 0;for (int i = max(0, y - 4); i <= y; ++i) {if (board[i][x] == player) {count++;} else {count = 0;}}for (int i = y + 1; i < min(BOARD_SIZE, y + 5); ++i) {if (board[i][x] == player) {count++;} else {break;}}if (count >= 5) return true;// 斜向(从左上到右下)检查count = 0;for (int i = max(-4, -x); i <= 0; ++i) {if (x + i >= 0 && x + i < BOARD_SIZE && y + i >= 0 && y + i < BOARD_SIZE && board[y + i][x + i] == player) {count++;} else {count = 0;}}for (int i = 1; i <= min(4, BOARD_SIZE - 1 - x); ++i) {if (x + i >= 0 && x + i < BOARD_SIZE && y + i >= 0 && y + i < BOARD_SIZE && board[y + i][x + i] == player) {count++;} else {break;}}if (count >= 5) return true;// 斜向(从右上到左下)检查count = 0;for (int i = max(-4, -x); i <= 0; ++i) {if (x + i >= 0 && x + i < BOARD_SIZE && y - i >= 0 && y - i < BOARD_SIZE && board[y - i][x + i] == player) {count++;} else {count = 0;}}for (int i = 1; i <= min(4, BOARD_SIZE - 1 - x); ++i) {if (x + i >= 0 && x + i < BOARD_SIZE && y - i >= 0 && y - i < BOARD_SIZE && board[y - i][x + i] == player) {count++;} else {break;}}if (count >= 5) return true;return false;
}int main() {initBoard();bool isPlayerX = true;bool gameOver = false;while (!gameOver) {printBoard();int x, y;cout << (isPlayerX ? "Player X" : "Player O") << ", enter your move (row column): ";cin >> y >> x;if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || board[y][x] != '.') {cout << "Invalid move. Try again." << endl;continue;}board[y][x] = isPlayerX ? 'X' : 'O';if (checkWin(x, y, board[y][x])) {printBoard();cout << (isPlayerX ? "Player X wins!" : "Player O wins!") << endl;gameOver = true;} else if (isBoardFull()) {printBoard();cout << "It's a draw!" << endl;gameOver = true;} else {isPlayerX = !isPlayerX;}}return 0;
}

3. 主要代码释解

这段代码是一个简单的五子棋游戏的实现,下面是对主要函数和异常错误处理机制的详解:

  1. initBoard()
    • 功能:初始化棋盘,将所有位置设置为’.',表示空白。
    • 实现:通过双重循环遍历二维数组board,并将每个元素设置为’.'。
  2. printBoard()
    • 功能:打印当前棋盘的状态。
    • 实现:通过双重循环遍历二维数组board,并打印每个元素。
  3. isBoardFull()
    • 功能:检查棋盘是否已满。
    • 实现:通过双重循环遍历二维数组board,如果所有位置都不是’.',则返回true,表示棋盘已满。
  4. checkWin(int x, int y, char player)
    • 功能:检查给定玩家是否在(x, y)位置获胜。
    • 实现:检查横向、纵向、两个对角线方向是否有连续的 5 个相同的棋子。如果找到,则返回true,表示该玩家获胜。
  5. main()
    • 功能:游戏的主循环,处理玩家的输入,更新棋盘状态,并判断游戏是否结束。
    • 实现
      • 初始化棋盘。
      • 在一个循环中交替让两个玩家输入他们的移动。
      • 检查移动是否有效(即在棋盘范围内且位置为空)。
      • 更新棋盘,并检查是否有玩家获胜或棋盘已满。

4. 异常和错误处理机制

  1. 输入有效性检查
    • main()函数中,玩家输入移动后,代码检查移动是否在棋盘范围内,以及对应位置是否为空。
    • 如果移动无效(即xy超出范围,或者对应位置不是’.'),则打印错误消息,并通过continue跳过当前循环的剩余部分,提示玩家重新输入。
  2. 棋盘满时结束游戏
    • 在玩家每次移动后,调用isBoardFull()检查棋盘是否已满。
    • 如果棋盘已满,则打印平局消息,并通过设置gameOvertrue结束游戏。
  3. 检查获胜条件
    • 在玩家每次移动后,调用checkWin()检查该玩家是否获胜。
    • 如果玩家获胜,则打印获胜消息,并通过设置gameOvertrue结束游戏。

5. 可改进点

  • 异常处理:代码中没有使用 C++ 的异常处理机制,例如try-catch块。在某些情况下,如果输入不是整数,cin会进入错误状态,这可能导致无限循环。可以通过检查cin的状态并清除错误标志来处理这种情况。
  • 边界条件检查:在checkWin()函数中,对斜向检查的边界条件处理可以进一步优化,以避免不必要的条件判断。
  • 代码重用checkWin()函数中的横向、纵向和斜向检查有大量重复代码,可以通过提取重复代码到单独的函数中来简化。

这个游戏实现简单,但包含了基本的游戏逻辑和错误处理机制,适合作为学习C++和游戏编程的入门项目。

http://www.ritt.cn/news/15109.html

相关文章:

  • 可以做动漫网站的源码源码网络优化培训骗局
  • 手机网站模板 htmlwindows优化大师的功能
  • 买网站的域名茶叶seo网站推广与优化方案
  • 建立企业网站多少钱惠州seo推广公司
  • 嘉兴市做外贸网站网络优化公司排名
  • 佛山市专注网站建设平台什么是seo关键词
  • 常州外贸网站制作寻找客户资源的网站
  • 济南网站建设jnwuyi怎么制作网站链接
  • wordpress 站内搜索 慢怎么建网站免费的
  • 郑州做网站的公司哪家好全国最新疫情实时状况地图
  • vue 做pc网站可以吗搜索引擎哪个好用
  • 房地产新闻头条最新消息网站优化推广排名
  • 帮公司做网站赚钱吗营销软文
  • 口碑推广网站seo排名优化方法
  • 用html5做的网站代码网络平台营销
  • wordpress站内seo营销推广的形式包括
  • 长沙做网站咨询公司策划营销
  • 外国企业网站模板免费下载培训学校网站
  • 做网站先做前台还是后台青岛seo关键词优化排名
  • 技术支持 祥云平台 英文网站网络营销推广的渠道有哪些
  • 网站建设兼职平台网站的优化从哪里进行
  • 电子商务网站建设与实践上机指导教程培训报名
  • 广州单管核酸采样点seo是什么职业
  • 长春做网站建设的公司怎样通过网络销售自己的产品
  • 电商类网站咋做职业培训机构排名前十
  • 网站建设哪家go好企业网站有哪些类型
  • 网络托管公司有哪些衡水网站优化推广
  • wp建站优化软文推广文章
  • 海南建设培训网站java培训班学费一般多少
  • 做网站用什么虚拟服务器谷歌商店官网