簡體   English   中英

PHP游戲會話無法正常工作

[英]PHP Game session not working

我需要一個PHP會話來存儲變量$ CurrentPos,以用於確定播放器的位置,但是無論出於何種原因,它都不起作用。 可能是因為我實現的代碼錯誤,但我無法弄清楚。

<?php
session_start();
include_once 'index.php';
$World = simplexml_load_file("gameworld.xml");
$_SESSION["CurrentPos"] = 0 ;
$CurrentPos = $_SESSION["CurrentPos"];
print "<br>";
printplace();
function printplace() {
    GLOBAL $World, $CurrentPos;
    $Room = $World->ROOM[$CurrentPos];
    $Name = $Room->NAME;
    $Desc = wordwrap((string)$Room->DESC);
    print "$Name<br>";
    print str_repeat('-', strlen($Name));
    print "<br>$Desc<br>";
    if ((string)$Room->NORTH != '-') {
        $index = (int)$Room->NORTH;
        print "North: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$Room->SOUTH != '-') {
        $index = (int)$Room->SOUTH;
        print "South: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$World->ROOM[$CurrentPos]->WEST != '-') {
        $index = (int)$Room->WEST;
        print "West: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$World->ROOM[$CurrentPos]->EAST != '-') {
        $index = (int)$Room->EAST;
        print "East: {$World->ROOM[$index]->NAME}<br>";
    }
    print "<br>";
}

$input = explode(' ', $input);
print "<br>";
foreach ($input as $command) {
    switch ($command) {
        case 'north':
            if ((string)$World->ROOM[$CurrentPos]->NORTH != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->NORTH;
                printplace() ;
            } else {
                print "You cannot go north!<br>";
            }
            break;
        case 'south':
            if ((string)$World->ROOM[$CurrentPos]->SOUTH != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->SOUTH;
                printplace() ;
            } else {
                print "You cannot go south!<br>";
            }
            break;
        case 'west':
            if ((string)$World->ROOM[$CurrentPos]->WEST != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->WEST;
                printplace() ;
            } else {
                print "You cannot go west!<br>";
            }
            break;
        case 'east':
            if ((string)$World->ROOM[$CurrentPos]->EAST != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->EAST;
                printplace() ;
            } else {
                print "You cannot go east!<br>";
            }
            break;
        case 'look':
            printplace() ;
            break;
        default:
            print "not a valid command... <br>";
            break;
    }
}
print "<br>Thanks for playing!<br>";
?>

出於某種原因,我的會話變量實際上並不起作用-查看我的游戲以了解我的意思(我真的不知道如何解釋這一點,我是PHP新手:P)。

任何幫助表示贊賞。

您需要將會話設置為開關盒內部的當前位置。 每行之后(例如):

$CurrentPos = (int)$World->ROOM[$CurrentPos]->EAST;

添加此行:

$_SESSION['CurrentPos'] = $CurrentPos;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM