PHP Game не распознает ввод из формы, не запускает оператор switch-case

1

У меня есть текстовая обучающая игра, основанная на HackingWithPHP, над которой я работаю, и мой код просто не будет принимать входные данные из формы, которую я имею для команд. Это, вероятно, требует ввода, это просто, что PHP, который у меня есть, не распознает его. Другая проблема заключается в том, что оператор switch ($command) { который у меня есть, кажется, не работает. Он просто пропускает все это. Я не могу понять, что происходит. Любая помощь будет принята с благодарностью. Код: index.php (у меня это как.php файл, поэтому переменная $ input может быть передана из этого файла в game.php)

<html>
<head>
    <title>Urban Adventure</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div class="container">
        <div class="main">
            <?php
                include_once 'game.php';
            ?>
            <FORM NAME ="form1" METHOD ="POST" ACTION = "">
                <INPUT TYPE = "TEXT" VALUE ="" name="input" style="width: 600; position: absolute; bottom: 0; z-index: 2;">
            </FORM>
        </div>
        <?php
            $input = $_POST["input"];
        ?>
    </div>
</body>
</html>

game.php:

<?php
    include_once 'index.php';
    print($input);
    $World = simplexml_load_file("gameworld.xml");
    $CurrentPos = 0;
    $Done = 0;
    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>";
?>

Что происходит, так это то, что вход не работает, оператор switch-case не работает, и print "<br>Thanks for playing!<br>"; выполняется перед оператором switch-case. Извините, если я не могу описать это правильно. Вы можете проверить реальную вещь здесь: urbanadventure.dumpong.tk. Вы сможете увидеть настоящие ошибки там.

  • 0
    Вы не назначаете переменную $ input до тех пор, пока не будет включен весь game.php
  • 0
    можешь уточнить? Я не совсем понимаю, извините. Вы говорите, что я не должен назначать $ input, пока не будет включен весь game.php? Если так, как я могу это сделать (разве я уже не включил это? Извините, я новичок), или вы говорите, что моя проблема в том, что вы не присваиваете переменную $ input до тех пор, пока все game.php не включено?
Показать ещё 3 комментария
Теги:
forms
switch-statement
input

1 ответ

0

переехать

<?php $input = $_POST["input"]; ?>

над включением - хотя есть и другие проблемы здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню