Linux实战:五子棋

news2025/2/25 12:54:31

一、五子棋原理

采用二维数组保存棋盘信息,棋盘上面的任何一个位置,里面可以放置三类信息。

  • 用户1的落子(黑子)
  • 用户2的落子(白子)

下棋就是在二维数组中找对应的空位置,进行落子落完子之后下来就要考虑该落子位置是否有”五子连珠“,进而进行输赢判定,每一次走棋,多会有四种情况

  • 用户1赢
  • 用户2赢
  • 平局
  • 未出结果

二、第一步. main构建游戏起始逻辑

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void Menu() //游戏菜单
{
	printf("############################\n");
	printf("## 0. Exit 1. Play ##\n");
	printf("############################\n");
	printf("Please Select# ");
}
int main()
{
	int quit = 0;
	int select = 0;
	while (!quit) {
		Menu();
		scanf("%d", &select);
		switch (select) { //根据用户选择,执行合适的游戏逻辑代码
		case 0:
			quit = 1;
			break;
		case 1:
			Game();
			break;
		defalut:
			printf("Please Select Again!\n");
			break;
		}
	}
}

三、第二步. 构建游戏入口Game()函数

#define ROW 20 //数组行数,可以按照需求调整
#define COL 20 //数组列数,可以按照需求调整
#define PLAYER1 1 //玩家1编号,默认棋盘数据是0,玩家1落子,该位置被改成2
#define PLAYER2 2 //玩家2编号,默认棋盘数据是0,玩家1落子,该位置被改成2
#define NEXT 0 //游戏继续
#define PLAYER1_WIN 1 //玩家1赢了
#define PLAYER2_WIN 2 //玩家2赢了
#define DRAW 3 //平局
void Game()
{
	int board[ROW][COL]; //采用ROW * COL型的二维数组,来进行游戏信息的保存
	memset(board, '\0', sizeof(board)); //默认棋盘数据都是0
	int result = NEXT;
	do {
		ShowBoard(board); //显示棋盘
		PlayerMove(board, PLAYER1); //PLAYER1先走,也可以随机让一个人先走
		result = IsOver(board); //判定游戏是否结束
		if (NEXT != result) {
			break;
		}
		ShowBoard(board);
		PlayerMove(board, PLAYER2);
		result = IsOver(board);
		if (NEXT != result) {
			break;
		}
	} while (1);
	ShowBoard(board);
	switch (result) {
	case PLAYER1_WIN:
		printf("Player1 win!\n");
		break;
	case PLAYER2_WIN:
		printf("Player2 win!\n");
		break;
	case DRAW:
		printf("Player1 darw Player2!\n");
		break;
	}
}

四、第三步. 编写

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何让python在手机上运行,python在手机上怎么运行

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python程序如何在手机上运行&#xff0c;如何让python在手机上运行&#xff0c;现在让我们一起来看看吧&#xff01; 在计算机语言的运用过程中PythonS60手机是经常被使用的计算机语言&#xff0c;以下的文章是介绍Pyth…

华为OD机试真题 JavaScript 实现【明明的随机数】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试&#xff0c;发现新题目&#x…

Python超实用!批量重命名文件/文件夹,只需1行代码

大家好&#xff0c;这里是程序员晚枫&#xff0c;之前在小破站给大家分享了一个视频&#xff1a;批量重命名文件。 最近在程序员晚枫的读者群里&#xff0c;发现很多朋友对这个功能很感兴趣&#xff0c;尤其是对下一步的优化&#xff1a;批量重命名文件夹。 这周我利用下班时…

Java 解析Excel单元格的富文本

1. 总体介绍 该方法是解析 xlsx 单元格中的富文本&#xff0c;注意不是 xls&#xff0c;xls 的 api 不一样&#xff0c;试了很久没成功。只实现了解析 斜体字、上下标&#xff0c;其它的实现方式应该类似。 2. 具体实现 2.1 代码 package util;import java.io.FileInputStr…

嵌入式一开始该怎么学?学习单片机

学习单片机&#xff1a; 模电数电肯定必须的&#xff0c;玩单片机大概率这两门课都学过&#xff0c;学过微机原理更好。 直接看野火的文档&#xff0c;芯片手册&#xff0c;外设手册。 学单片机不要纠结于某个型号&#xff0c;我认为stm32就OK&#xff0c;主要是原理和感觉。…

【ZYNQ】Linux驱动之梦开始的地方

软件版本&#xff1a;Vivado2021.1 操作系统&#xff1a;WIN10 64bit、Ubuntu18.04 硬件平台&#xff1a;ZYNQ UltraScale 文章目录 1.1系统框图1.2介绍1.2.1寄存器查询手册1.2.2物理地址与虚拟地址1.2.3MIO介绍1.2.4PS的LED 引脚介绍 1.3搭建工程1.4程序分析1.4.1驱动程序分析…

edgeConnector新版兼容ARM-为用户提供更多部署方案

Softing工业自动化的edgeConnector产品新版3.50兼容ARM处理器——大大扩展了edgeConnector产品的应用范围。 &#xff08;edgeConnector新版兼容ARM——为用户提供更多部署方案&#xff09; Softing edgeConnector产品系列是基于Docker的软件应用&#xff0c;可访问SIMATIC S7、…

QT 在label上透明绘图

一、新建TransparentDemo工程 二、在界面上添加label&#xff0c;修改样式表&#xff0c;将底色置为红色&#xff0c;作为北京 三、新建一个TransparentLabel类&#xff0c;继承自QLabel 此时&#xff0c;工程包括文件 五、在transparentlabel.h中添加 头文件 #include …

静态分析全解析:助力高质量软件开发,降低成本风险

按时发布高质量版本、需要满足编码和合规标准&#xff0c;而且决不能出现错误……静态分析为那些面临巨大压力的队伍提供了帮助。 这就是为什么开发团队都在使用静态分析/源代码分析工具。本篇文章将讨论静态分析、使用静态代码分析器的优势&#xff0c;以及静态分析的局限性。…

MySQL语法

Mysql通用语法 SQL可多行书写&#xff0c;分号结尾SQL语句可以使用空格进行缩进&#xff0c;增加可读性MYSQL&#xff0c;不区分大小写&#xff0c;但关键字推荐使用大写注释&#xff1a; 单行注释&#xff1a;--注释内容 或#注释内容 多行注释&#xff1a;/*注释内容*/ SQ…

声音从何而来?如何保护自己免受聊天工具中欺诈性语音邮件的侵害?

&#x1f5e3; 并不是每个人都喜欢在信使上收到语音邮件。 如果它们也是骗子发来的&#xff0c;那就更令人不快了。 让我们来看看攻击者都会使用哪些手段吧 社交工程 骗子可以使用语音信息而不是电话来散布虚假信息&#xff0c;例如&#xff0c;以银行的名义散布有关账户问…

windows下的txt文档,传到ubuntu后,每行后面出现^M,怎么处理?

问题背景&#xff1a;windows下pycharm生成的txt文档&#xff0c;传到ubuntu后&#xff0c;每行后面出现^M 用vim打开显示 使用cat -A filename显示如下 参考https://www.lmlphp.com/user/16697/article/item/579325/给出的几种方法 方法一、dos2unix filename。服务器没装…

《网络是怎样连接的》(二.2)

(6条消息) 《网络是怎样连接的》&#xff08;二.1&#xff09;_qq_38480311的博客-CSDN博客 本文主要取材于 《网络是怎样连接的》 第二章 2.5 2.6章节。 目录 简述&#xff1a; 本文的主要内容是 以太网的收发操作 和 UDP协议的收发操作。 IP与以太网的包收发操作 包是什…

百分点科技参编信通院《数据中台实践指南(1.0版)》

日前&#xff0c;在大数据产业发展大会上&#xff0c;百分点科技参与编写的《数据中台实践指南&#xff08;1.0版&#xff09;》正式发布&#xff0c;该指南由中国信息通信研究院大数据技术标准推进委员会指导和组织&#xff0c;百分点科技、阿里云、中国移动、中国联通、交通银…

如何为新一代可持续应用设计电机编码器

从定速电机转向提供位置和电流反馈的变速电机&#xff0c;不仅可以实现工艺改进&#xff0c;还能节省大量能源。本文介绍了电机编码器&#xff08;位置和速度&#xff09;、器件类型和技术以及应用案例。此外还解答了一些关键问题&#xff0c;例如对特定系统最重要的编码器性能…

Denso Create Programming Contest 2023 (AtCoder Beginner Contest 309) F题解

文章目录 [Box in Box](https://atcoder.jp/contests/abc309/tasks/abc309_f)问题建模问题分析1.分析操作2.如何比较长方体判断是否有满足条件的长方体存在3.方法1使用树状数组来维护1~对应二维属性值区间内的最小三维属性值代码 4.方法2使用线段树来维护1~对应二维属性值区间内…

2021年全国硕士研究生入学统一考试管理类专业学位联考写作试题——解析版

四、写作&#xff1a;第56~57小题&#xff0c;共65分。其中论证有效性分析30分&#xff0c;论说文35分。请答在答题纸相应的位置上。 56.论证有效性分析&#xff1a;分析下述论证中存在的缺陷与漏洞&#xff0c;选择若干要点&#xff0c;写一篇600字左右的文章&#xff0c;对该…

基于Java+SpringBoot+Vue前后端分离电商项目

晚间lucky为友友们送福利啦~&#x1f381; Tips&#xff1a;有需要毕业设计指导的童鞋一定要认真看哦&#xff0c;文末有彩蛋。 一.项目介绍 该电商项目是一个简单、入门级的电商项目&#xff0c;是基于JavaSpringBootVue前后端分离项目。前端采用两套独立的系统分别完成项目…

驱动开发(中断)

头文件&#xff1a; #ifndef __LED_H__ #define __LED_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED1_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014 #define PHY_LED2_RCC 0X50000A28#def…

java学习路程之篇六、进阶知识、常用API、Arrays工具类、冒泡排序、选择排序、二分查找、正则表达式

文章目录 1、Arrays工具类2、冒泡排序3、选择排序4、二分查找5、正则表达式 1、Arrays工具类 2、冒泡排序 3、选择排序 4、二分查找 5、正则表达式