跳轉到內容

建立您自己的模擬遊戲/混合事物

來自 Wikibooks,開放世界中的開放書籍

在上一課中,我們介紹瞭如何製作表單,檢查按鈕是否被按下,以及根據使用者是否找到寶藏來顯示訊息。現在是時候將我們非常簡單的導航頁面提升到一個新的水平:隨機的寶藏位置。

在我們最終的遊戲中,寶藏的位置將由資料庫中的資料預先確定。但是,當用戶在遊戲中四處移動角色時,我們不會知道寶藏位於哪個位置,因為這些資訊將在他們玩遊戲時載入。

在下一課中,我們將應用一個更高階的概念來確定寶藏是否位於正確的位置。我們不會總是知道寶藏在哪裡,而是每次載入頁面時讓寶藏隨機開始在一個方向。這樣,我們每次都必須檢查寶藏在哪裡,以及玩家是否會掉進坑裡。課程概念

在程式設計中,函式是將更大的任務分解成更小、更易於管理的片段,或者減少重複編寫相同程式碼片段的需要的好方法。在 PHP 中,函式的語法非常簡單

<?php

function myfunction ($parameter1, $parameter2)

{

echo $parameter1 . ” ” . $parameter2;
}

?>

這是一個非常簡單的名為 myfunction 的函式。它接受兩個引數,並在您呼叫它時簡單地將它們回顯到螢幕上。您在 echo 語句中看到的句點是將兩個變數連線在一起並在它們之間新增空格的一種方法。

呼叫函式與建立函式一樣容易。在您想要 myfunction 在螢幕上列印任何內容的地方,您所要做的就是

<?php

echo “Hey there, here is what myfunction has to say: “;

myfunction(“Hello”, “World!”);

?>

如果您執行此程式碼,您將看到:嘿,這就是 myfunction 要說的:Hello World!函式不僅可以列印到螢幕上,還可以返回值,然後您可以將這些值儲存到變數中。讓我們來看看這個函式

<?php

function Mod5 ($number)

{

return $number % 5;
}

?>

此函式接受您提供的任何數字,並對其取模 5。如果您不熟悉模運算子,您只需要知道它返回除法的餘數,而不是將 $number 除以 5 所得的數字。

現在讓我們看看如何使用返回一個值而不是在螢幕上列印它的函式

<?php

//declare our function
function Mod5 ($number)

{
return $number % 5;
}

if ($_POST['number']) //they’ve entered a number
{

echo “Your number is: ” . $_POST['number'] . “<br/>”;

$number = myfunction($_POST['number']); //we store the modulous of what they entered back into the number variable

echo “Your number % 5 is: $number”;
}
else //show them a form to enter a number

{
?>

<form action=”#” method=”post”>

Please Enter a Number: <input type=”text” name=”number”><br/>

<center><input type=”submit” name=”submit” value=”submit” /></center>
</form>
<?php
} //don’t forget to close our ELSE statement
?>

在這個例子中,我們獲取使用者輸入到文字框中的數字,然後將數字連同該數字除以 5 的餘數一起顯示給他們。

PHP 的一大優點是它附帶了大量您可以用來程式設計的預定義函式。您可以透過訪問 php.net 檢視所有函式。我想要在本課中重點介紹的一個函式是 random 函式。

正如您可能猜到的那樣,您並不總是需要了解函式內部的所有細節,只要它始終為您提供您期望的結果即可。random 函式也是如此。我可以詳細說明它是如何獲取您計算機上的當前時間並對其進行大量數學運算的,但這太無聊了!

簡而言之,rand 函式接受 2 個引數。第一個引數是您希望它在執行時生成的最低數字。第二個數字是您希望它在執行時生成的最高數字。因此,如果您想要一個介於 1 和 4 之間的隨機數(包括 1 和 4),則可以這樣做

<?php

echo “My random number is: “ . rand(1, 4);

?>

檢視包含此 php 程式碼的頁面。現在重新整理頁面。您會注意到數字不斷變化。

您還需要了解的另一個函式是 unset() 函式。此函式非常棒,您可以將一個變數或一個物件傳遞給它(別擔心,我們稍後會講到),它會將該函式的值設定為 null。想象一下,拿著一罐餅乾,開啟蓋子,把所有餅乾都倒在地上。這本質上就是 unset() 函式所做的。

恭喜,您現在知道 rand 和 unset 函式是如何工作的了。您在本課中需要這兩個函式!

現在,我們遇到的一個最大問題是如何跟蹤使用者的過去響應。或者如何從一個頁面到另一個頁面跟蹤有關使用者的任何資訊。這就是會話的用武之地。會話是跟蹤使用者從一個頁面到另一個頁面時的資訊的一種方法。最終,我們將使用資料庫中的資訊來跟蹤使用者使用他們的角色進行的大量移動,但我們仍然需要知道使用者從一個頁面到另一個頁面時的身份。現在,我們將使用會話來跟蹤使用者選擇的路線。現在,我們不會再讓使用者在他們掉入坑後繼續選擇路線,而是會給他們一個遊戲結束的訊息,直到他們決定重置遊戲並重新嘗試。

會話非常易於使用。它們的工作原理幾乎與您可以用來訪問有關使用者在頁面上輸入的內容的資訊的 $_POST 和 $_GET 變數完全相同。但是,有一些主要區別

 1. You can set the values of the $_SESSION variable
 2. Session variables remain with the user until you tell them to expire, they don’t change page by page.
 3. Session variables can be set to expire so they don’t last forever, or you can set them so they never expire and DO last forever.

現在使用會話可以使您在程式設計變得更加複雜之前熟悉它們。

如果您以前使用過任何 cookie,那麼會話對您來說將是小菜一碟。會話是 cookie 的一個不錯的替代方案,因為如果瀏覽器停用了 cookie 功能,您仍然可以從一個頁面到另一個頁面跟蹤有關使用者的資訊。如果您對此一無所知,別擔心,它對於本課來說不是必需的。

關於會話,有一點您必須牢記。為了使用會話,您必須在每個 php 頁面的頂部呼叫一個特殊函式,並在您進行任何型別的輸出之前呼叫它!!這一點很重要。如果您嘗試在呼叫 session_start() 函式之前輸出任何內容,您將收到錯誤。

現在讓我們設定一個簡單的會話。建立兩個頁面,一個名為 welcome.php,另一個名為 main.php。welcome.php 是您可能看到的一個歡迎您並詢問您姓名的網頁的示例。main.php 是您在訪問了 welcome.php 頁面後可能看到的頁面的示例。

在 welcome.php 中,我們有以下內容

<?php
session_start(); //the first thing we do is start our sessions

if ($_POST['name']) //they entered their name in the form
{
$_SESSION['name'] = $_POST['name'];

//now we’re going automatically to redirect them our next page
//using a function called header() that’s built into PHP
header(“Location: main.php”);
exit;
}

?>
<form action=”#” method=”post”>

Enter your name for our first session variable! <input type=”text” name=”name” />
<center><input type=”submit” name=”submit” value=”All Done!”></center>
</form>

現在,在 main.php 中,我們將放置以下內容

<?php
session_start(); //we have to start our session again to get the data we saved before

echo “Welcome to the main menu “ . $_SESSION['name'] . “!”;
?>

在 main.php 檔案中,我們提取儲存在 name 會話變數中的資訊,並將其回顯到螢幕上。很不錯!現在我們知道,無論使用者從現在開始訪問哪個頁面,只要我們呼叫 session_start(),我們就能從 $_SESSION['name'] 變數中訪問他們的姓名。

恭喜!您現在應該理解會話的基本概念了。

在本課中,我們學習瞭如何建立自己的函式,並討論了 PHP 如何擁有我們自己的預定義函式,這些函式可以讓我們輕鬆地完成工作。我討論瞭如何製作一個在螢幕上列印內容的函式,以及如何製作一個返回值的函式。返回一個值的函式也可以列印到螢幕上,但您必須在函式呼叫之前加上一個 echo 來執行此操作。

接下來,我們討論了會話。會話是使用者在您的網站上從一個頁面移動到另一個頁面時儲存資料的一種方法。如果沒有會話,我們無法區分誰是誰,因為最終會有很多人載入此遊戲並嘗試玩它。現在,我們將使用會話來跟蹤遊戲是否結束,但最終我們只使用會話來跟蹤使用者在玩遊戲時的身份。

遊戲檔案

[編輯 | 編輯原始碼]

character.php

character2.php(無原始碼)

注意:這些是文字檔案,因此您可以複製/貼上所有原始碼。課程推理

在本課中,character.php 現在讓寶藏從一個隨機位置開始。如果使用者選擇了錯誤的位置,他們會收到遊戲結束的訊息,而無法再次選擇路線。為了再次玩遊戲,使用者必須點選重置按鈕來重新開始遊戲。我介紹了函式、會話和更抽象的檢查。

一旦我們開始從資料庫中提取資訊,我們除了他們的 x、y、z 座標和他們所在的地圖外,在執行時不會知道任何關於角色當前位置的資訊。每次角色嘗試移動到某個地方時,都必須測試有關該位置的專案的相關資訊。透過在隨機位置引入寶藏,我們開始習慣在選擇特定方向時檢查有關我們位置的資訊。

下一章

[編輯 | 編輯原始碼]

閱讀下一章

華夏公益教科書