我正在使用php和ajax开发回合制多人游戏。这些功能允许玩家使用用户信息登录游戏,并选择游戏模式,允许他们与AI或对手对战。每个用户都可以从列表中选择一个字符,并且此功能已经完成。我想创建一个搜索功能,以便一个玩家可以搜索和战斗另一个玩家,类似于国际象棋。但是,目前我希望玩家输入其他用户用户名以进行搜索。我已经搜索了开源以找到创建搜索函数的方法,但是我找到的当前函数破坏了我的代码。这是我当前的模式代码:
// Define Mode
if (isset($_GET['mode'])) {
$mode = $secure->clean($_GET['mode']);
} else {
$mode = '';
}
if ($mode == 'selection') {
$page_title .=' > Character Selection';
$page_titles .= ' Character Selection - Power Bond';
}
else if ($mode == 'search') {
if (isset($_GET['type'])) {
$type = $secure->clean($_GET['type']);
} else {
$type = '';
}
if ($type == 'private') {
if (isset($_POST['pbsubmit'])) {
$name = $secure->clean($_POST['name']);
}
}
}
现在这是我的阿贾克斯。我找到的功能是用于检查匹配以查找用户名。这个功能打破了我的游戏。
//Check the match.
if (isset($_POST['f']) && $_POST['f'] == 'checkMatch') {
$checkMatch = $db->query("SELECT * FROM accounts WHERE `id` = '".$account['id']."'");
while ($info = mysql_fetch_array($checkMatch)) {
$status = $info['status'];
$gameid = $info['gameid'];
}
$getGame = $db->fetch("SELECT * FROM Games WHERE `gameid` = '$gameid'");
$status = $info['status'];
$gameid = $info['gameid'];
if(!$getGame = 'NULL') {
$data = 'testaeta';
} else {
$data = '<h1> Who do you want to battle against? </h1>
<br />
<form action="" method="post" id="form-pb" name="pb" target="_self">
USERNAME:<input name="name" type="text" size="40" maxlength="40" />
<input name="pbsubmit" type="submit" value="Search"/>
</form>
<a class="goback" href="#">Cancel</a>';
}
echo $data;
}`
这是我的Javascripit:
`var match = null;
function popUp(what){
if(!what) errorMessage('Error: params', 'params', 'none');
switch(what){
case 'search':
preLoad('Loading please wait . . .');
$('#main_container').prepend('<div id="popup"><div class="opacity"></div><div class="search"></div></div>');
$('.search').load('./?page=game&mode=search&type=private', function(){
$('#preloader').fadeOut('slow',function(){
$('#preloader').remove();
});
});
break;
case 'match':
$.ajax({
url : _path + "/core/ajax.php",
type : 'POST',
data : { f: 'checkMatch'},
dataType : 'text',
success : function(data) {
if(data){
$('#main_container').prepend(data);
match = setInterval(function(){
if(!$('.search').length){
$('#main_container').prepend('<div id="popup"><div class="opacity"></div><div class="search"></div></div>');
}
$('.search').load('./?page=game&mode=search&type=private', function(){
var meta = $('#stopMe').attr('content');
if(meta){
meta = meta.split("URL="), meta = meta[1];
window.location = meta;
}
});
},1000);
}
}
});
break;
case 'submit':
$.post('./?page=game&mode=search&type=private', $("#form-pb").serialize(), function(data){
var $response=$(data);
var error = $response.filter('h3').text();
$('.search').html(data);
if(!error){
match = setInterval(function(){
if(!$('.search').length){
$('#main_container').prepend('<div id="popup"><div class="opacity"></div><div class="search"></div></div>');
}
$('.search').load('./?page=game&mode=search&type=private', function(){
var meta = $('#stopMe').attr('content'); var meta = $('#stopMe').attr('content');
if(meta){
meta = meta.split("URL="), meta = meta[1];
window.location = meta;
}
});
},1000);
}
});
break;
}
}
'除了mysql之外,这些是我的主要关注点,允许它工作。有没有人对我如何解决这个问题有解决方案?另外,如果可能的话,我想要一个开源示例。
无需搜索已经编码的搜索解决方案,通常这非常特定于您的应用程序并且并不复杂。
寻找一个自动完成工具(jQuery提供它),一种获取安全数据的方法(获取或POST,但检查它)和搜索方法:喜欢%...%(简单)或MATCH(...)反对(...(更完整)
似乎是一个匹配系统。您可以在 mysql 中创建一个表,并将其命名为活动战斗。然后,它获取用户A的信息并将其与用户B进行匹配,将他们置于战斗中。我想你也可以为战斗行动做一个表格。该表显示了用户在战斗中执行的操作。