Боевая система в Php & MYSQL

0

Я работаю над такой игрой, как Mafia Wars, и я пытаюсь заставить боевую систему работать, но я все время теряю попытку выработать того, кто выиграет бой, и ему все еще нужно знать, близко ли статистика есть случайная последовательность выигрыша.

 $strength = $my_strength;
 $otherplayerinfo = mysql_query("SELECT * FROM accounts WHERE id='$player_id'");
 $playerinfo = mysql_fetch_array($otherplayerinfo);
 $players_strength = $playerinfo['stre'];
 $players_speed = $playerinfo['speed'];
 $players_def = $playerinfo['def'];

 if($players_strength > $strength){
 $strength_point_player = 1;
 $strength_point_your = 0;
 }else{
 $strength_point_your = 1;
 $strength_point_player = 0;
 }

Я пытался создать точечную систему, но я все еще не мог этого сделать.

  • 0
    А какой у тебя вопрос?
Теги:

3 ответа

2
Лучший ответ

Вам нужно разработать формулу/алгоритм, чтобы определить, кто победит. Я бы предложил подумать об этом и сначала написать его на простом языке или псевдокоде, а затем перевести его в PHP.

Это может быть что-то вроде

"Сравните каждую силу игроков, скорость и обороны. Рассчитать общий превосходство, вычитая защиты от других сил и умножение на скорость /10. Если в целом оценка в пределах 5%, выбрать победителя в случайное"

например. Или, возможно,

"Сравните каждую статистику, чтобы узнать, больше, равно или в пределах 5% от другая статистика игрока. Счет равен 1, если superior, 0, если достаточно близко, -1, если ниже. Если 0, победитель случайный. В противном случае побеждает более высокий балл".

Оттуда вы можете перевести его на логику на свой язык программирования.

  • 0
    хорошо сказано. Сделайте это как Runescape или еще много чего с доспехами, щитом, сопротивлением и прочим. Это был бы веселый проект :)
2

Я пытался создать точечную систему, но я все еще не мог этого сделать.

Я настоятельно рекомендую вам разобраться, что должен делать механик игры. Как только вы сможете описать, как битва должна работать в нескольких предложениях, вы можете получить более подробную информацию о том, как ее реализовать.

1

Во-первых, mysql_fetch_array возвращает только строки. Поэтому обязательно укажите каждое поле в (int), когда вы назначаете их локальным переменным на всякий случай. Это приводит к тому, что сравнения ведут себя так, как ожидалось, и легче выбрать в коде именно то, что должно происходить.

Во-вторых, вам нужен else if($players_strength === $strength) {/* do something random */}. В противном случае победа в битве всегда будет идти к вам, если статистика будет одинаковой или большей.

В-третьих, нет необходимости подсчитывать сравнения между всеми статистиками, если они просто сравнивают, если одна сторона больше, чем другая в каждом статусе. Просто суммируйте все статистические данные на каждой стороне игрока, затем сделайте окончательное сравнение обоих итогов. В противном случае, если у вас есть специальные сравнения для каждого отдельного стата и будет выполняться подсчет статистических сравнений, вам нужно будет увеличить флаги для выигрышей, а не просто добавлять их к 1 или 0 снова и снова:

$strength_point_your += 1;
$strength_point_player += 0;  // you don't even need this line, just for show
  • Это просто очень простые решения, кстати. Там вы можете многое сделать, чтобы уточнить свой код, но сосредоточьтесь на том, чтобы запустить его с самого начала.
  • 1
    Примечание: mysql_fetch_array () может возвращать значение NULL вместо строки.
  • 0
    @Wrikken правильный, но значения полей будут просто приводиться к 0 в этих случаях. Более того, эта функция может просто возвращать false , поэтому для обработки этого случая необходимо добавить целый новый набор кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню