php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负

//Tic-Tac-Toe

$n = 5;//五阶棋盘

$res = array();

function check($arr)

{

$n = $GLOBALS['n'];

$res = $GLOBALS['res'];

//已经下过这一步,返回false;没有,赋值

if (isset($res[$arr[1]][$arr[2]])) {

return false;

} else {

$res[$arr[1]][$arr[2]] = $arr[0];

}

//如果某一步下在对角线上,额外进行一次对角线判断(前提:阶数为奇数)

if ($n % 2 == 1) {

if ($arr[1] == $arr[2]) {

for ($i = 0; $i < $n - 1; $i++) {

if (!(isset($res[$i][$i]) && isset($res[$i + 1][$i + 1])) || $res[$i][$i] != $res[$i + 1][$i + 1]) {

break;

} elseif ($n - 2 == $i) {

var_dump($arr[0] . '--- Win!');

$GLOBALS['res'] = $res;

return true;

}

}

} elseif ($arr[1] + $arr[2] + 1 == $n) {

for ($i = 0; $i < $n - 1; $i++) {

if (!(isset($res[$i][$n - 1 - $i]) && isset($res[$i + 1][$n - 2 - $i])) || $res[$i][$n - 1 - $i] != $res[$i + 1][$n - 2 - $i]) {

break;

} elseif ($n - 2 == $i) {

var_dump($arr[0] . '--- Win!');

$GLOBALS['res'] = $res;

return true;

}

}

}

}

for ($i = 0; $i < $n - 1; $i++) {

//横列判断(是否赋值 or 是否相等),不符合则进行纵列判断

if (!(isset($res[$arr[1]][$i]) && isset($res[$arr[1]][$i+1])) || $res[$arr[1][$i]] != $res[$arr[1][$i+1]]) {

//进行纵列判断(是否赋值 or 是否相等),不符合则跳出两层循环

for ($j = 0; $j < $n -1; $j++) {

if (!(isset($res[$j][$arr[2]]) && isset($res[$j+1][$arr[2]])) || $res[$j][$arr[2]] != $res[$j+1][$arr[2]]) {

break 2;

} elseif ($n - 2 == $j) {

var_dump($arr[0] . '--- Win!');

$GLOBALS['res'] = $res;

return true;

}

}

break;

} elseif ($n - 2 == $i) {

var_dump($arr[0] . '--- Win!');

$GLOBALS['res'] = $res;

return true;

}

}

$GLOBALS['res'] = $res;

}

模拟两位用户下棋并最终打印结果:

check(['a', 0, 3]);

check(['b', 2, 4]);

check(['a', 1, 3]);

check(['b', 1, 2]);

check(['a', 2, 3]);

check(['b', 2, 0]);

check(['a', 3, 3]);

check(['b', 3, 1]);

check(['a', 4, 3]);

var_dump($res);

输出:

ex0.php:49:string 'a--- Win!' (length=9)

ex0.php:73:

array (size=5)

0 =>

array (size=1)

3 => string 'a' (length=1)

2 =>

array (size=3)

4 => string 'b' (length=1)

3 => string 'a' (length=1)

0 => string 'b' (length=1)

1 =>

array (size=2)

3 => string 'a' (length=1)

2 => string 'b' (length=1)

3 =>

array (size=2)

3 => string 'a' (length=1)

1 => string 'b' (length=1)

4 =>

array (size=1)

3 => string 'a' (length=1)

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

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

相关文章

js与html编码不同,js与html中unicode编码的使用

【转】javascript和html中unicode编码和字符转义的详解不是十分理解unicode和html转义的情况下,可能会误用,所以下面会对它们再做比较容易理解的解释: 1.html中的转义:在html中如果遇到转义字符(如“ ”),不管你的页面字符编码是utf-8 ...javascript和html中unicode编码和字符转…

g标签 怎么设置svg_SVG g元素

SVG 元素SVG 元素用于将SVG形状分组在一起。分组后&#xff0c;您可以像变形单个形状一样变换整个形状。与 不能单独成为转换目标的嵌套 元素相比&#xff0c;这是一个优势。您还可以设置分组元素的样式&#xff0c;并像对待单个元素一样重复使用它们。元素g是用来组合对象的容…

html和css哪个优先,CSS3 | 样式和优先级

css3一般介绍&#xff1a;CSS注释&#xff1a;/*CSS*/CSS长度单位&#xff1a;1.px(像素)2.em(倍数&#xff0c;一般用于文字)一、HTML嵌套CSS3样式&#xff1a;1.外部(推荐)例如HTML文件为index.html将样式放入另一文件中&#xff0c;index.css以上两个文件放入同一文件夹下2.…

java上传视频到七牛云_Java进阶学习:将文件上传到七牛云中

Java进阶学习&#xff1a;将文件上传到七牛云中通过本文&#xff0c;我们将讲述如何利用七牛云官方SDK&#xff0c;将我们的本地文件传输到其存储空间中去。JavaSDK&#xff1a;https://developer.qiniu.com/kodo/sdk/1239/java#server-upload官方SDK&#xff1a;https://devel…

计算机网络讨论4,计算机网络实验四

实验四IEEE 802.3协议分析和以太网一、实验目的1、分析802.3协议2、熟悉以太网帧的格式二、实验环境与因特网连接的计算机网络系统&#xff1b;主机操作系统为windows&#xff1b;Ethereal、IE 等软件。三、实验步骤(注&#xff1a;本次实验先完成前面的“1 俘获并分析以太网帧…

rust新版组队指令_Rust最新控制台命令2017

物品名称物品代码电池battery.small骨头碎片bone.fragments空的豆罐头can.beans.empty空的金枪鱼罐头can.tuna.empty摄像头cctv.camera木炭charcoal煤coal石油crude.oil炸药explosives动物脂肪fat.animal火药gunpowder高级金属矿hq.metal.ore金属碎片metal.fragments金属矿meta…

python实现mini-batch_Mini-Batch 、Momentum、Adam算法的实现

def random_mini_batches(X,Y,mini_batch_size64,seed0):"""从(X&#xff0c;Y)中创建一个随机的mini-batch列表参数&#xff1a;X - 输入数据&#xff0c;维度为(输入节点数量&#xff0c;样本的数量)Y - 对应的是X的标签&#xff0c;【1 | 0】(蓝|红)&#xf…

html5+shim脚本,HTML5探秘:用requestAnimationFrame优化Web动画

requestAnimationFrame是什么&#xff1f;在浏览器动画程序中&#xff0c;我们通常使用一个定时器来循环每隔几毫秒移动目标物体一次&#xff0c;来让它动起来。如今有一个好消息&#xff0c;浏览器开发商们决定&#xff1a;“嗨&#xff0c;为什么我们不在浏览器里提供这样一个…

计算机科学与技术的专业论述,关于计算机科学专业的论文题目 计算机科学专业论文题目怎样定...

【100道】关于关于计算机科学专业的论文题目汇总,作为大学生的毕业生应该明白了计算机科学专业论文题目怎样定,选一个好的题目后续的计算机科学专业论文写作起来会更轻松&#xff01;一、比较好写的计算机科学专业论文题目:1、计算机科学与技术专业应用型人才培养改革调研分析—…

ming window 交叉编译_opencv3编译pc端及交叉编译arm端

环境&#xff1a; opensuse opencv3.4.1 交叉编译器arm-openwrt-linux 作者&#xff1a;帅得不敢出门https://github.com/opencv/opencv/tree/3.4.1选择右边的"clone or download"按钮进行下载&#xff0c;选择下载zip我下的是opencv-3.4.1.zip, 3.4.1的版本号…

锁定计算机 背景图片,win7系统电脑更换锁屏壁纸的方法

当win7系统电脑在一段时间不动的话就进入锁屏状态&#xff0c;然而很多用户觉得默认的锁屏壁纸不好看&#xff0c;就想要更换自己喜欢的锁屏壁纸&#xff0c;那么win7怎么更换锁屏壁纸呢&#xff1f;下面给大家讲解一下win7系统电脑更换锁屏壁纸的方法。1、同时按下窗口键winR组…

两阶段最小二乘法原理_R语言代写工具变量与两阶段最小二乘法

我们要估计的模型是yabxcdeyabxcde&#xff0c;其中是解释变量&#xff0c;&#xff0c;和是我们想要估计的系数。是控制变量&#xff0c;是治疗变量。我们特别关注我们的治疗效果对。生成数据首先&#xff0c;让我们生成数据。假设 的工具变量和之间的相关矩阵如下&#xff1a…

计算机二级循环队列知识点,考点!计算机二级考试公共基础知识冲刺复习笔记:栈、队列和循环队列...

小编所收集到的相关计算机二级考试公共基础知识冲刺复习笔记&#xff1a;栈、队列和循环队列的资料 大家要认真阅读哦&#xff01;1、栈(Stack)又称堆栈。(1)栈是一种运算受限的线性表&#xff0c;其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶&#xff0c;…

lua 字符串包含_Programming in Lualua学习第11期 Lua模块与包

微信公众号&#xff1a;GameToolDev关注可了解更多的游戏工具开发教程。问题或建议&#xff0c;请公众号留言;从Lua 5.1开始&#xff0c;我们可以使用require和module函数来获取和创建Lua中的模块。从使用者的角度来看&#xff0c;一个模块就是一个程序库&#xff0c;可以通过r…

学计算机优盘多少内存够用,u盘建议买多大内存的

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。u盘建议买多大内存主要看用途&#xff0c;一般容量为&#xff1a;1G、2G、4G、8G、16G、32G、64G、128G、256G、512G、1T&#xff0c;具体来说&#xff1a;1、如果是用来存放视频的&…

.net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表

VBA 是一种很久远的编程语言&#xff0c;但并不过时。在满足以下两个条件时&#xff0c;借助 VBA 可以极大的提升生产率&#xff0c;降低出错率&#xff1a;你的电脑上不允许自主安装软件&#xff1b; 你需要执行的工作中大部分的步骤都是固定且重复的。项目背景近期接到一个工…

本地摄像头应用到远程计算机,远程摄像头设置

可以的&#xff0c;智能家用监控摄像头&#xff0c;只要你手机有网&#xff0c;千里之外打开手机都可以查看视频&#xff0c;而且智能摄像头主要用于看家看孩子看老人照看猫猫狗狗等宠物的。智能摄像头&#xff0c;与市面上普通的事件录制不一样&#xff0c;它可以实现7*24小时…

axure实现复选框全选_jq简单的全选、反选和全不选效果

jquery是很实用和方便的前端效果库&#xff0c;可以让我减少很多的操作和节省很多的时间。今天&#xff0c;我们来说一下jq的全选、全不选和反选效果&#xff0c;本篇讲的是最简单简洁的jq全选、全不选和反选的例子。如果还有什么其他的功能要求可自己根据所学到的基础来扩展一…

计算机设备管理器驱动,设备管理器安装驱动程序的详细教程

系统出现问题&#xff0c;很多人都会选择重装系统。但系统重装后&#xff0c;我们所做的第一件事&#xff0c;就是安装驱动。有的驱动程序有安装包&#xff0c;直接安装就行了。但是有的驱动是只有驱动程序文件&#xff0c;而没有执行程序&#xff0c;这时候就需要通过设备管理…

ef执行原生sql语句_EF Core中执行原生SQL语句

一、课程介绍之所以今天录制这个系列文章的主要原因是&#xff0c;想在快速帮助到大家上手在ASP.NET Core WebAPI中结合EF Core来操作我们的数据库。EF Core的基础文章和基础课程实在是太多了&#xff0c;那么阿笨既然也来录制这个系列课堂&#xff0c;阿笨想必肯定会给大家带来…