Суббота, 23 Ноября 2024, 22:39

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Уроки по созданию браузерной игры (ККИ)
AssasinДата: Понедельник, 31 Декабря 2012, 19:08 | Сообщение # 1
web-coder
Сейчас нет на сайте
Глава 3. Магазин. Карты и бонусы для игрока

В магазине продаются карты и свитки. С картами ясно, они нужны для боя. А вот свитки нужны для увеличения жизненной энергии игрока. Чем она выше, тем больший шанс продержаться в бою как можно дольше и возможно выиграть.
Код магазина module/shop.php.
Код
<?php
$User = mysql_fetch_array($db->q("SELECT * FROM `user` WHERE `id`='".$_SESSION['user_id']."'"));

if (!empty($_POST['buy'])) { # Покупка
        if (!empty($_POST['map_id'])) { # Покупка карты
         # Фильтрация данных
         $id = preg_replace("/[^0-9]/","",$_POST['map_id']);
         if ($id == '') go2page("game.php");
         # Проверка на существование карты
         $map = $db->q("SELECT * FROM `map` WHERE `id`='".$id."'");
         if (mysql_num_rows($map) == 1) {
          $row_map = mysql_fetch_array($map);
          if ($row_map['cost'] <= $User['money']) { # Если хватает денег, то добавляем игроку карту, отнимаем деньги
           $db->q("INSERT INTO `user_map` (`user_id`,`map_id`,`att`,`abi`,`skill`,`type`) VALUES ('".$_SESSION['user_id']."','".$row_map['id']."','".$row_map['att']."','".$row_map['abi']."','".$row_map['skill']."','1')");
           $db->q("UPDATE `user` SET `money`=`money`-'".$row_map['cost']."' WHERE `id`='".$_SESSION['user_id']."'");
           $User['money'] -= $row_map['cost']; # Изменяем количество монет у игрока, т.к. количество монет мы получили раньше (строка 2), затем изменили их (строка 15), но данные полученные раньше не изменились, поэтому изменяются в данной строке
           echo "<div style='text-align: center;color: green;'>Спасибо за покупку</div>";
          } else {
           echo "<div style='text-align: center;color: red;'>Не хватает денег</div>";
          }
         }
        } elseif (!empty($_POST['item_id'])) { # Покупка "таблетки"
         # Фильтрация данных
         $id = preg_replace("/[^0-9]/","",$_POST['item_id']);
         if ($id == '') go2page("game.php");
         # Проверка на существование "таблетки"
         $map = $db->q("SELECT * FROM `shop` WHERE `id`='".$id."'");
         if (mysql_num_rows($map) == 1) {
          $row_item = mysql_fetch_array($map);
          if ($row_item['cost'] <= $User['money']) { # Если хватает денег, то увеличиваем количество жизненной энергии и отнимаем деньги
                  
           if ($row_item['type'] == 1) {
            $action = json_decode($row_item['action']);
            $extra_sql = '';
            if (!empty($action->life)) {
             $extra_sql = ", `life`=`life`+'".$action->life."', `mlife`=`mlife`+'".$action->life."'";
            }
                   
            $db->q("UPDATE `user` SET `money`=`money`-'".$row_item['cost']."' ".$extra_sql." WHERE `id`='".$_SESSION['user_id']."'");
           }
           $User['money'] -= $row_item['cost'];
           echo "<div style='text-align: center;color: green;'>Спасибо за покупку</div>";
          } else {
           echo "<div style='text-align: center;color: red;'>Не хватает денег</div>";
          }
         }
        }
}
?>
<div style='text-align: center;'>
        <a href="?a=shop">Карты</a> | <a href="?a=shop&type=1">Свитки</a>
</div>
<table><tr>
<?php
if (empty($_GET['type'])) { # Список карт
        $sql = $db->q("SELECT * FROM `map` ORDER BY `id` ASC");
        $i=1;
        while($row = mysql_fetch_array($sql)) {
         echo "<td style='padding:4px;'>
           <table style='width:180px;display:block;border:1px solid black;'>
           <tr>
            <td style='text-align:center;width:180px;' colspan='2'><b>".$row['name']."</b></td>
           </tr>
           <tr>
            <td colspan='2'><div style='width:170px;height:120px;overflow:auto;display:block;border-bottom:1px solid black;'>".$row['desc']."</div></td>
           </tr>
           <tr>
            <td>Атака</td>
            <td>".$row['att']."</td>
           </tr>
           <tr>
            <td>Ловкость</td>
            <td>".$row['abi']."</td>
           </tr>
           <tr>
            <td>Мастерство</td>
            <td>".$row['skill']."</td>
           </tr>
           <tr>
            <td>Цена</td>
            <td>".$row['cost']."</td>
           </tr>";
         if ($User['money'] >= $row['cost']) { # Хватает денег?
          echo "<tr>
            <td style='text-align:center;width:180px;' colspan='2'>
             <form method='post'>
             <input type='hidden' value='".$row['id']."' name='map_id'>
             <input type='submit' value='Купить' name='buy'>
             </form>
            </td>
           </tr>";
         }
         echo "    </table>
          </td>";
         if (($i%5)==0) echo "</tr><tr>"; # По 5 штук в строку
         $i++;
        }
} else { # Список "таблеток"
        $type = preg_replace("/[^0-9]/","",$_GET['type']);
        if ($type == '') go2page("game.php");
        $sql = $db->q("SELECT * FROM `shop` WHERE `ptype`='".$type."' ORDER BY `id` ASC");
        $i=1;
        while($row = mysql_fetch_array($sql)) {
         echo "<td style='padding:4px;'>
           <table style='width:180px;display:block;border:1px solid black;'>
           <tr>
            <td style='text-align:center;width:180px;' colspan='2'><b>".$row['name']."</b></td>
           </tr>
           <tr>
            <td colspan='2'><div style='width:170px;height:120px;overflow:auto;display:block;border-bottom:1px solid black;'>".$row['desc']."</div></td>
           </tr>
           <tr>
            <td>Использовать на</td>
            <td>".($row['type'] == 1 ? 'Игрока' : 'Карту')."</td>
           </tr>
           <tr>
            <td>Цена</td>
            <td>".$row['cost']."</td>
           </tr>";
         if ($User['money'] >= $row['cost']) { # Хватает денег?
          echo "<tr>
            <td style='text-align:center;width:180px;' colspan='2'>
             <form method='post'>
             <input type='hidden' value='".$row['id']."' name='item_id'>
             <input type='submit' value='Использовать' name='buy'>
             </form>
            </td>
           </tr>";
         }
         echo "    </table>
          </td>";
         if (($i%5)==0) echo "</tr><tr>"; # По 5 штук в строку
         $i++;
        }
}
?>
</tr></table>


Как добавлять карты в магазин, Вы уже знаете. А вот как добавить свитки? Для этого откройте файл adm/shop.php.
Код
<?php
include('../inc/db.php'); # Подключается класс БД
if (!empty($_POST['create'])) { # Создание "таблетки"
        $db = new db;
               
        if (!empty($_GET['id'])) { # Если существует id "таблетки", то "таблетка" редактируется
         $sql = $db->q("SELECT * FROM `shop` WHERE `id`='".$_GET['id']."'");
         if (mysql_num_rows($sql) == 1) {
          $_POST['desc'] = str_replace("\n","<br>",$_POST['desc']);
          $hp = array(
           'life'=>'+'.$_POST['life']
          );
          $hp = json_encode($hp);
                 
          $sql = $db->q("UPDATE `shop` SET `name`='".$_POST['name']."',`desc`='".$_POST['desc']."',`action`='".$hp."',`cost`='".$_POST['cost']."' WHERE `id`='".$_GET['id']."'");
          if ($sql) echo '<div style="color:green;">Товар изменен</div>';
          else echo "<div style='color:red;'>Ошибка<br>".mysql_error()."</div>";
         }
        } else { # Если не существует, то создается новая "таблетка"
         $_POST['desc'] = str_replace("\n","<br>",$_POST['desc']);
         $hp = array(
          'life'=>'+'.$_POST['life']
         );
         $hp = json_encode($hp);
                 
         $sql = $db->q("INSERT INTO `shop` (`name`,`desc`,`type`,`ptype`,`action`,`cost`) VALUES ('".$_POST['name']."','".$_POST['desc']."','1','1','".$hp."','".$_POST['cost']."')");
         if ($sql) echo '<div style="color:green;">Товар добавлен <a href="?id='.mysql_insert_id().'">Просмотреть</a></div>';
         else echo "<div style='color:red;'>Ошибка<br>".mysql_error()."</div>";
        }
}

if (!empty($_GET['id'])) { # Просмотр "таблетки"
        $db = new db;
               
        $sql = $db->q("SELECT * FROM `map` WHERE `id`='".$_GET['id']."'");
        if (mysql_num_rows($sql) == 1) {
         $row = mysql_fetch_array($sql);
         $row['desc'] = str_replace("<br>","\n",$row['desc']);
         $name = $row['name'];
         $desc = $row['desc'];
         $hp = json_decode($row['action']);
         $life = $hp->life;
         $cost = $row['cost'];
        } else {
         echo "<div style='color:red;'>Товар не найден</div>";
        }
}
?>
<form method="post">
        <table style="width:400px;">
         <tr><td style="width:110px;">Наименование</td><td><input style="width:100%;" type="text" name="name" value="<?php echo $name; ?>" /></td></tr>
         <tr><td colspan="2"><textarea name="desc" style="width:400px;height:150px;"><?php echo $desc; ?></textarea></td></tr>
                
         <tr><td style="width:110px;">Цена</td><td><input style="width:100%;" type="text" name="cost" value="<?php echo $cost; ?>" /></td></tr>
                
         <tr><td style="width:110px;">Здоровье+</td><td><input style="width:100%;" type="text" name="life" value="<?php echo $life; ?>" /></td></tr>
                
         <tr><td colspan="2"><input type="submit" value="<?php if (empty($name)) { echo 'Создать'; } else { echo 'Изменить'; } ?>" name="create" /></td></tr>
        </table>
</form>


В этом файле можно указать описание, стоимость и сколько жизненной энергии повысится.

Таблица shop

- id - уникальный идентификатор
- name – имя свитка
- desc – описание свитка
- ptype – на какой «полке» находятся свитки (1 – «полка» Свитки, зависит от параметра $_GET[‘type’])
- type – на кого применить: 1 – игрок (дальше полет вашей фантазии)
- action действие свитка (в нашем случаем повышение жизненной энергии)
- cost – стоимость свитка

Создайте карты по адрессу http://tgame.lovalhost/adm/map.php. Теперь можно перейти в магазин и купить созданные карты, затем добавить их в список карт для боя, т.к. в следующей главе будет сам бой!

При копировании материала ссылка на источник обязательна!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг