【发布时间】:2014-12-12 02:45:04
【问题描述】:
所以我有一个想法,我想为一小群在线朋友开发一款游戏,实际上我对 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"
?>
【问题讨论】:
-
你不止一次写了很多东西,你可以做
case 'a': case 'b': case 'c': // do stuff; break;这样的事情。 -
但是...你能告诉我们更多关于你希望代码如何表现的信息吗?现在,您正在向脚本发布名为“文本”的内容,但是您的逻辑意味着它将首先通过“身份验证级别”位发送它们并设置其身份验证级别,但随后它将自动测试“身份验证级别”并授予他们对特定位的授权。这不太合理。比如
$_POST['text']为空,它会给他们auth_level=1,那么它会立即给他们auth_level=2 -
@AdamW 哦,不,我明白你对默认值的意思。对不起,那是草率的复制/粘贴。将默认值更改为 case f。如果没有匹配,它会默认退出开关并转到代码中的最后一个 else 语句,还是应该为每个语句定义一个默认值?
-
见我下面的评论,但如果没有定义默认值,它不会做任何事情。如果您需要特定操作(想到
exit()),写一个是明智的,但这对您来说没什么大不了的。
标签: php switch-statement conditional-statements