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)
php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负相关推荐
- 华大计算机面试题,华大基因java初级笔试题.docx
华大基因java初级笔试题 姓名: 电话: PAGE4 / NUMPAGES4 华大基因-Java工程师笔试题基础题目java的基本数据类型有哪些?String是最基本的数据类型吗?Byte shor ...
- C++ 很有趣:编写一个井字游戏 (Tic Tac Toe)
英文原文:C++ is fun: Writing a Tic Tac Toe Game 这个有趣的C++系列打算展示一下使用C++写代码可以和其他主流语言一样高效而有趣.在第二部分,我将向你展示使用C ...
- python井字棋游戏代码_Python实现的井字棋(Tic Tac Toe)游戏示例
Python实现的井字棋(Tic Tac Toe)游戏示例 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Python实现的井字棋(Tic Tac Toe)游戏示 ...
- python游戏代码运行不了_无法使我的tic tac toe游戏在python中正确运行
转不到"玩家1"的原因是你的支票中缺少一个空格.你也没有正确地检查一个玩家何时获胜,这就是为什么你会有这种奇怪的行为.你需要检查每个位置,而不仅仅是最后一个.我还添加了对用户输入的 ...
- 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法代码讲解+资源打包下载】...
一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...
- 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法代码讲解+资源打包下载】
一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...
- python编写井字棋_编写井字游戏
python编写井字棋 Programming computer games may be the most technically challenging (and possibly the bes ...
- 用TensorFlow基于神经网络实现井字棋(含代码)
为了展示如何应用神经网络算法模型,我们将使用神经网络来学习优化井字棋(Tic Tac Toe).明确井字棋是一种决策性游戏,并且走棋步骤优化是确定的. 开始 为了训练神经网络模型,我们有一系列优化的不 ...
- python二维游戏示例_Python实现的井字棋(Tic Tac Toe)游戏示例
本文实例讲述了Python实现的井字棋(Tic Tac Toe)游戏.分享给大家供大家参考,具体如下: 说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码 ...
最新文章
- ubuntu下面搭建SolrCloud集群
- 子类重写父类虚函数_C/C++编程笔记:关于C++的虚函数和多态,你真的了解吗?...
- sed 中如何替换换行符
- 使用C语言进行面向对象的开发--GObject入门[5]
- 剑指Offer - 面试题13. 机器人的运动范围(BFS/DFS)
- android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
- 关于bootstrap的modal弹出层嵌套子Modal所引发的血案(转)
- 作着玩:登录页(纯css,不支持ie9以下)
- TiDB 在摩拜单车的深度实践及应用
- 20165230 2017-2018-2 《Java程序设计》第8周学习总结
- 华为OJ 扑克牌大小
- TBSchedule源码学习笔记-启动过程
- 英语发音规则---ea字母组合发音规律
- 【机器学习线性代数】17 利用SVD进行彩色图片压缩
- JGG | EVenn: 3分钟在线轻松绘制5种Venn图和Venn网络
- 反种族主义算法的偏见与警务简介
- Uber的优劣势分析
- MosFET/FinFET/GAFET ——鳍式晶体管还能走多远
- 动软代码生成器 第一次使用出现附加数据库错误是否添加写入权限
- WGCNA:官方教程学习
热门文章
- spring项目链接RabbitMQ集群
- SpringBoot2.x整合Redis 分布式集群_01
- Intellij Idea 离线安装插件
- P标签如何取消上下间隔
- 系统架构设计师 - 23种设计模式(GOF)
- JavaScript从入门到放弃 - ES6中的对象和类
- deebot扫地机器人怎么清洁_扫地机器人清洁力拼杀,科沃斯机器人DEEBOT N3与小米1S对比评测...
- 静态成员函数与静态成员变量
- Python input 函数 - Python零基础入门教程
- jq之animate() left font