У меня есть текстовая обучающая игра, основанная на 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. Вы сможете увидеть настоящие ошибки там.
переехать
<?php $input = $_POST["input"]; ?>
над включением - хотя есть и другие проблемы здесь