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.pswp.cn/news/533134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533134.shtml
英文地址,請注明出處:http://en.pswp.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;阿笨想必肯定會給大家帶來…