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"
?>

1 ответ

Решение

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

В идеале, если вы пытаетесь реализовать текстовую игру, в которой пользователи вводят команды или вводят код уровня, вам следует подумать о том, чтобы разделить их на два разных поля - что-то вроде $_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-го уровня и так далее, это может помочь вам немного отделить логику.

Другие вопросы по тегам