数组高级应用之实现井字棋游戏

数组应用二

今天来给大家讲讲数组另外一种基本应用排序和如何使用数组实现井字棋游戏。

一、排序

利用数组可以使我们比较方便的进行排序,下面介绍两种常见的排序算法,选择排序和冒泡排序。

选择排序:以从小到大为例,通过与相邻的数据进行比较,若这个数比前面的数小,我们则把这个数的地址暂存为最小值,第一轮比较完后,我们就可以确定最小值,然后我们开始第二轮的比较,可以确定第二小的数,以此类推,我们就可以把数据从小到大排序出来。

e4d54068ea0b4549bb21f86fea2b4546.png

 dff42ec997db42f99a3852abaf9cab17.png

 对%4d能有个更深印象

5e1b006983994a518efa6751d60e7fcb.png

 如果想知道每轮数据的变化,我们还可以加多一个for循环用于输出。

冒泡排序:以从小到大为例,通过与相邻数据进行比较,若这个数比前面的数小,则进行交换,直到和最后一个数比较完毕,结束第一轮,然后开始第二轮比较,直到数据排序为从小到大。

ba210f960a7a404a8f0e2147b7f14fa6.png

 

二、井字棋游戏

我们可以先用一个一维数组来表示棋盘状态,每个元素代表一个格子的状态(比如空、X、O等)。玩家下棋时,通过修改数组元素来更新棋盘状态,然后根据规则判断胜负。先看代码:

a66d0f4bd4404b9b959c2ececd635a02.png

99b115b51dcf4f6cb7dcaa0c1954e375.png 

在这个代码中,我们先在main函数之前定义了玩家,一个棋盘和一个win函数(用来判断玩家是否赢得游戏),再看main里面的代码,我们可以通过do…while循环来让玩家可以在游戏未结束前持续输入,在do里我们先调用print_board函数来打印出棋盘,然后对player使用条件操作符,当player为1时,表达式的值不为0,即为真,所以当前输出1(即玩家1),当player为2时,表达式的值为0,即为假,所以输出为2(即玩家2),以此类推,当player++时,我们就可以实现玩家的循环输入。

f3346c0444624afebee696f4ff7f501a.png

 

[不好意思,图片有一点被遮住了,完整代码为:

if (choice < 1 || choice > 9 || board[choice - 1] == 'X' || board[choice - 1] == 'O')

 {printf("无效的选择,请重新输入。\n");

   continue;}]

下面这个条件操作符用来判断如果是玩家1的选择,则输出"X",否则输出"O"。最后调用check_win函数判断哪一方的玩家赢得游戏。

5145e4f65886409b9ad6dcf81fcec7da.png

 

 好啦,今天的分享就到这里了。再次声明:作者水平有限,如有失偏颇,还请各位不吝赐教!

 

相关推荐

  1. 使用Python创建游戏

    2024-04-11 23:48:02       40 阅读
  2. C++EasyX

    2024-04-11 23:48:02       63 阅读
  3. 使用verilog实现游戏设计及其testbench

    2024-04-11 23:48:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 23:48:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 23:48:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 23:48:02       87 阅读
  4. Python语言-面向对象

    2024-04-11 23:48:02       96 阅读

热门阅读

  1. day04-MQ

    day04-MQ

    2024-04-11 23:48:02      28 阅读
  2. 二叉树链式存储详解

    2024-04-11 23:48:02       39 阅读
  3. c++手机通讯录管理系统280

    2024-04-11 23:48:02       39 阅读
  4. [树莓派]树莓派Raspbian系统安装tesseract-ocr实现OCR

    2024-04-11 23:48:02       37 阅读
  5. 基于STM32四轴飞行器方案设计 1

    2024-04-11 23:48:02       40 阅读
  6. 每日一题 第八十八期 洛谷 滑动窗口

    2024-04-11 23:48:02       43 阅读
  7. leetcode26--删除有序数组中的重复项

    2024-04-11 23:48:02       31 阅读
  8. IntersectionObserver实现图片懒加载

    2024-04-11 23:48:02       38 阅读
  9. 【前端】CSS常用选择器总结

    2024-04-11 23:48:02       37 阅读