2014-04-04 50 views
-4

我們有一個遊戲,我們用PHP編寫,我們需要它循環遍歷每個玩家並允許他們進行移動。我們遇到的問題是PHP在頁面加載時會循環遍歷forwhile循環,而不是讓每個玩家輪流。PHP循環停止在每一次迭代

其實現在它處於一個無限循環,因爲它從來沒有評估爲真,因爲它不讓他們輪到他們。它應該停止並讓每個玩家moveHere()activePlayer爲每個玩家啓用遊戲板,一旦moveHere正確執行,它會將$turnOver設置爲true。但是,循環不會暫停並無限循環。

看到這個代碼片段:

for ($i=1; $i<=$characterCount; $i++) 
{ 
    activatePlayer($i); 

    while (!$turnOver){ 
     moveHere(); 
    } 
} 
+0

你在說什麼_player_? –

+2

單獨使用php是不可能的。你將需要一個利用javascript,php和ajax的解決方案。 –

+0

while(!$ turnOver)< - yeurk – Su4p

回答

0

「暫停」 PHP是沒有意義的。 PHP是服務器端的,你不能在客戶端(瀏覽器)的執行過程中與PHP頁面交互。

您應該考慮閱讀關於JavaScript和AJAX(以及客戶端/服務器通信)的一些documentation

0

在單獨使用PHP的情況下,您將無法以當前格式實現此目標,您可能需要使用JS,Ajax等。PHP是一種基於服務器的語言,並且無法暫停等待簽名爲客戶端輸入。

但是,如果您將遊戲重構爲使用更友好的PHP格式,則可以實現您正在查找的結果。例如,當一個新的'遊戲'開始時,你將初始化一個遊戲實例並在表格上創建一個記錄(例如遊戲),然後你可以存儲玩家(從玩家表格鏈接?),球員誰是(currentTurn?)和他們的最後一步的日期/時間。使用這些信息和查詢,您可以確定是誰轉身,並允許用戶進行移動。

0

考慮從瀏覽器的角度來設計遊戲,而不是使用一些簡單的JavaScript。

遊戲可以定期向服務器發送一個AJAX請求,以查看它是否是當前玩家的轉向,或者用新數據等刷新屏幕。jQuery對此很流行,但還有其他幾個庫( MooTools,Prototype等)。

PHP在這方面的作用不需要考慮暫停:它只是回覆消息。你必須重新考慮你的遊戲邏輯,以便在你想到的循環範圍之外處理一個單一的轉換。這意味着「遊戲狀態」需要以某種形式保存,可能在數據庫中。

無論每個玩家在玩電腦還是玩家都在互相玩耍,這種方法都適用。計算機記錄並反映遊戲的狀態,如果遊戲也在玩,它也具有執行的邏輯角色。

這種設計並不是微不足道的,即使它只是一個簡單的遊戲 - 它確實需要翻譯思維,從標準的基於循環的編程到基於事件的範例。一旦你掌握了這一點,你可以切換到使用套接字。這些是長時間運行的連接,比AJAX操作快,但它們需要一個特殊的服務器(例如Node.js)。