switch switch — PHP переключатели для текстовой игры

Итак, у меня есть идея для игры, которую я хочу разработать для небольшой группы онлайн-друзей, и я на самом деле довольно глубоко разбираюсь в html и css, а также в некоторых javascript / jquery. Я хочу получить совет, если этот образец базового фреймворка будет достаточно функциональным, чтобы я мог продолжить эту идею, или мне нужно что-то значительно изменить. Я новичок в PHP, но я знаю, что мне нужен серверный язык, чтобы сделать игру более динамичной и не дать им просматривать код для получения ответов …

Так жизнеспособна ли текстовая игра, использующая эту простую структуру в качестве отправной точки, или я должен использовать что-то совершенно другое?

РЕДАКТИРОВАТЬ: игра является прогрессивной, поэтому им не нужен доступ к предыдущим уровням, как только они достигают следующего. Результаты проверки будут переданы через Ajax / Jquery на смоделированную консоль, чтобы они могли просматривать ее в режиме реального времени.

<?php
session_start();

//Text sent through jquery and ajax, checked for a passcode to access a higher level directly since I'm using sessions

switch($_POST['text']){
case a:
$_SESSION['auth_level'] = 2;
break;
case b:
$_SESSION['auth_level'] = 3;
break;
case c:
$_SESSION['auth_level'] = 4;
break;
case d:
$_SESSION['auth_level'] = 5;
break;
case e:
$_SESSION['auth_level'] = 6;
break;
default:
$_SESSION['auth_level'] = 1;
break;
};

//Giving them conditional access to commands based on their authorization level

if($_SESSION['auth_level'] = 1) {
switch($_POST['text']){
case a:
echo "";
break;
case b:
echo "";
break;
case c:
echo "";
break;
case d:
echo "";
break;
case e:
echo "";
break;
case f:
echo "You are now authorized for level 2!";
$_SESSION['auth_level'] = 2;
break;
}

elseif($_SESSION['auth_level'] = 2) {
switch($_POST['text']){
case a:
echo "";
break;
case b:
echo "";
break;
case c:
echo "";
break;
case d:
echo "";
break;
case e:
echo "";
break;
case f:
echo "You are now authorized for level 3!";
$_SESSION['auth_level'] = 3;
break;
}

elseif($_SESSION['auth_level'] = 3) {
switch($_POST['text']){
case a:
echo "";
break;
case b:
echo "";
break;
case c:
echo "";
break;
case d:
echo "";
break;
case e:
echo "";
break;
case f:
echo "You are now authorized for level 4!";
$_SESSION['auth_level'] = 4;
break;
}

//For anything not designated as a command

else {
echo $_POST['text'] . " is not a valid command or access code"?>

0

Решение

Это было немного долго для комментария, поэтому я постараюсь помочь.

В идеале, если вы пытаетесь реализовать текстовую игру, в которой пользователи вводят команды, или они вводят код уровня, вам следует рассмотреть возможность их разделения на два разных поля — что-то вроде $_POST['level_code'] который будет отличаться от их «команды».

session_start();

// If a user doesn't have an auth_level, give them the default
if(!isset($_SESSION['auth_level'])) {
$_SESSION['auth_level'] = 1;
}

// If a user posts a level code, do something with it
if(isset($_POST['level_code']) {
switch ($_POST['level_code']) {
case 'levelcode_a':
// Give your user feedback as well if you want
$_SESSION['auth_level'] = 1;
break;
case 'levelcode_b':
$_SESSION['auth_level'] = 2;
break;
// etc, etc
case 'levelcode_c':
default:
// User didn't send a level code so don't do anything
}
}

if (!isset($_POST['text'])) {
exit("No additional codes were given");
}

// Then do your application logic
switch ($_SESSION['auth_level']) {
case 1:
switch ($_POST['text']) {
case 'a':
// Some game activity
break;
case 'b':
// Some game activity
break;
}
// Enable level 1 actions
break;
case 2:
// Enable level 2 actions
break;
default:
// Don't do anything

}

По сути, это переключение внутри переключателя, если вы просто хотите создать один монолитный скрипт, который обрабатывает всю вашу игровую активность.

Есть и другие модели, но это относительно легко держать голову вокруг. Я бы, скорее всего, сдал второй switchЭто функция, чтобы вы могли построить что-то вроде do_level_1_action(user_input) если они 1-го уровня и так далее, это может помочь немного отделить логику для вас.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]