所以我有一个游戏的想法,我想为一小群在线朋友开发,我实际上对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"
?>
这有点长的评论,所以我会尽力提供帮助。
理想情况下,如果您尝试实现一个基于文本的游戏,其中用户输入命令,或者他们输入关卡代码,您应该考虑将它们分成两个不同的字段 - 类似于$_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 级等等,它可能有助于为您分离逻辑。