Новые уроки по создание броузерной игры – 4
| |
last2424 | Дата: Четверг, 07 Августа 2014, 15:42 | Сообщение # 1 |
30 мл. блоков
Сейчас нет на сайте
| Боже мой, 7-8 дней не было уроков и тут вдруг я объявился, мдя… Что же перейдём к делу. В этом уроке мы с вами закончим регистрацию, а именно создание персонажа.
<<< Предыдущий урок
Создайте папку image(там будут лежать наши картинки). И залейте туда картинки из этого архива.
Теперь перейдём к коду, создаёте файлы charcreater.php и charcreater_up.php. Первый файл главный, второй файл отвечает за php код которого много.
Записываем в charcreater.php следующее:
Код <? include 'conf.php'; ?> <!DOCTYPE html> <html> <head> <title>THE BEST GAME</title> <link rel="stylesheet" type="text/css" href="stylereg.css"> </head> <body> <?php include 'charcreater_up.php'; if ($char_class == "") { ?> <center> <form action="" method="get"> <table><tr><td colspan="3"><b>Выберите персонажа</b></td></tr> <tr> <td width=200px><img src="images/warrior.jpg"/></td> <td width=200px><img src="images/archer.jpg"/></td> <td width=200px><img src="images/wizard.jpg"/></td> </tr> <tr> <td width=200px><input type="radio" name="char_class" value="warrior" >Воин</input></td><td width=200px><input type="radio" name="char_class" value="archer">Лучник</input></td><td width=200px><input type="radio" name="char_class" value="wizard">Волшебник</input></td> </tr> <tr><td colspan="3"><input type="submit" value="Далее >>>" /></td></tr> </table> </form> </center> <?php } ?> Как можно видеть это почти обычный html файл, только он вставляет файлы conf.php и charcreater_up.php, а также делает проверку если класс персонажа не выбран, тогда выводим всё что мужду {}, если выбрал тогда выводим то что записано в charcreater_up.php.
Теперь сделаем charcreater_up.php:
Код <?php $chardb = $users->findOne(array('login' => $_SESSION['login_player']));
$lvl = $chardb['lvl']; $xp = $chardb['xp']; $hp = $chardb['hp']; $mn = $chardb['mn']; $strength = $chardb['strength']; $speed = $chardb['speed']; $intelligence = $chardb['intelligence']; $faith = $chardb['faith']; $count_up = $chardb['count_up']; $class = $chardb['charaster_class']; $char_class = $_GET['char_class']; if ($char_class == "warrior"){ echo "Выбран персонаж <b>Воин</b><br/>"; $class = $char_class; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("charaster_class" => $class))); echo "Настройка характеристик:<br/>"; echo '<form action="charcreater.php?char_class=warrior" method="post">'; echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>'; echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>'; echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>'; echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>'; echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>'; echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>'; echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>'; echo "</form>"; if(isSet($_POST['hp']) && $count_up != 0){ $hp+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("hp" => $hp, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior"; </script>'; } if(isSet($_POST['mn']) && $count_up != 0){ $mn+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("mn" => $mn, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior"; </script>'; } if(isSet($_POST['strength']) && $count_up != 0){ $strength+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("strength" => $strength, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior"; </script>'; } if(isSet($_POST['speed']) && $count_up != 0){ $speed+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("speed" => $speed, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior"; </script>'; } if(isSet($_POST['intelligence']) && $count_up != 0){ $intelligence+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("intelligence" => $intelligence, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior"; </script>'; } if(isSet($_POST['faith']) && $count_up != 0){ $faith+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("faith" => $faith, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=warrior"; </script>'; } } if ($char_class == "archer"){ $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("charaster_class" => $char_class))); echo "Выбран персонаж <b>Лучник</b><br/>"; echo "Настройка характеристик:<br/>"; echo "<form action='charcreater.php?char_class=archer' method='post'>"; echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>'; echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>'; echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>'; echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>'; echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>'; echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>'; echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>'; echo "</form>"; if(isSet($_POST['hp']) && $count_up != 0){ $hp+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("hp" => $hp, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer"; </script>'; } if(isSet($_POST['mn']) && $count_up != 0){ $mn+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("mn" => $mn, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer"; </script>'; } if(isSet($_POST['strength']) && $count_up != 0){ $strength+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("strength" => $strength, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer"; </script>'; } if(isSet($_POST['speed']) && $count_up != 0){ $speed+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("speed" => $speed, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer"; </script>'; } if(isSet($_POST['intelligence']) && $count_up != 0){ $intelligence+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("intelligence" => $intelligence, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer"; </script>'; } if(isSet($_POST['faith']) && $count_up != 0){ $faith+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("faith" => $faith, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=archer"; </script>'; } } if ($char_class == "wizard"){ $class = $char_class; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("charaster_class" => $class))); echo "Выбран персонаж <b>Волшебник</b><br/>"; echo "Настройка характеристик:<br/>"; echo "<form action='charcreater.php?char_class=wizard' method='post'>"; echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>'; echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>'; echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>'; echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>'; echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>'; echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>'; echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>'; echo "</form>"; if(isSet($_POST['hp']) && $count_up != 0){ $hp+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("hp" => $hp, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard"; </script>'; } if(isSet($_POST['mn']) && $count_up != 0){ $mn+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("mn" => $mn, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard"; </script>'; } if(isSet($_POST['strength']) && $count_up != 0){ $strength+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("strength" => $strength, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard"; </script>'; } if(isSet($_POST['speed']) && $count_up != 0){ $speed+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("speed" => $speed, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard"; </script>'; } if(isSet($_POST['intelligence']) && $count_up != 0){ $intelligence+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("intelligence" => $intelligence, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard"; </script>'; } if(isSet($_POST['faith']) && $count_up != 0){ $faith+=1; $count_up-=1; $users->update(array('login' => $_SESSION['login_player']), array('$set' => array("faith" => $faith, "count_up" => $count_up))); echo '<script> document.location.href = "http://25.120.133.229/charcreater.php?char_class=wizard"; </script>'; } if($count_up == 0){ echo "<a href='game.php'>Распределить</a>"; }
} ?> Тут всё проще, по сути тут 3 раза почти повторяется один и тот же код, различия в них только между названием классов, а так они почти одинаковы. Код срабатывает только если класс персонажа выбрал, тогда он выводить строчку “Вы выбрали персонажа …” и создаёт, как бы это сказать, ну давайте назовём это окном распределения очков, их даётся игроку 50 и он может выбрать что нам нужно, здоровье, ману, силу, скорость, интеллект или веру.
Ах да, совсем забыл сказать что файл reg.php тоже надо отредактировать.
Код <? include 'conf.php'; //подключаем конфиг $select = $users->findOne(array('login' => $_POST['login'])); if(isSet($_POST['regestration']) && $_POST['password'] == $_POST['repassword'] && preg_match('/[0-9a-zA-Z]/', $_POST['password']) && preg_match('/[0-9a-zA-Z]/', $_POST['login']) && $_POST['login'] != $select['login']){ //если пароли одинаковы и в них вообще чего-нибудь написано $users->insert( //запись в бд array( 'login' => $_POST['login'], //логин пользователя 'password' => $_POST['password'], //пароль пользователя 'email' => $_POST['email'], //эмэйл пользователя //основные характеристики персонажа 'charaster_class' => "", 'lvl' => 1, 'xp' => 0, 'hp' => 100, 'mn' => 100, //второстепенные характеристики персонажа 'strength' => 0, 'speed' => 0, 'intelligence' => 0, 'faith' => 0, 'count_up' => 50 )); $_SESSION['login_player'] = $_POST['login']; echo '<script> document.location.href = "http://25.120.133.229/charcreater.php"; </script>';//и переходим на страницу с созданием персонажа } ?> <!DOCTYPE html> <html> <head> <title>THE BEST GAME</title> <link rel="stylesheet" type="text/css" href="stylereg.css"> </head> <form action="reg.php" method="post"> <body> <input type="text" placeholder="Login" name="login" class="textinputlogin"/> <input type="email" placeholder="Email" name="email" class="textinputemail"/> <input type="password" placeholder="Password" name="password" class="textinputpassword"/> <input type="password" placeholder="Repeat password" name="repassword" class="textinputrepassword"/> <input type="submit" value="Зарегистрироваться" name="regestration" class="button"/> </form> </body> </html>
Немного изменён код, теперь нельзя регистрировать персонажей с одинаковыми никами, добавил параметр “count_up” и изменил некоторые старые параметры.
Ну вот вроде бы, как и всё, урок получился коротким. Всем удачи я пошёл пить чай P.S. меняйте адрес http://25.120.133.229/ на свой.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Четверг, 07 Августа 2014, 15:43 |
|
| |
DeadDay | Дата: Четверг, 07 Августа 2014, 16:03 | Сообщение # 2 |
New game Studio
Сейчас нет на сайте
| 1. Что я увидел. Так это таблицы... last2424, этого не должно быть вообще. Мы с тобой живём в 21 в. и их уже практически не используют при вёрстке. Только таблиц и всё...... За это -..
Используй блочную вёрстку. <div>, тебе в помощь. Если делаешь уроки, учи хорошему тону и остальных.
2. Цитата <script> document.location.href = "http://25.120.133.229/charcreater.php"; </script>';//и переходим на страницу с созданием персонажа
Чем тебе не сутраивает:
Цитата header('Location: index.php?cl=2');
3. Делаю урок, внедряй как можно больше комментов. Как в коде, так у тут.
Лично для себя, нового не увидел ни чего. А для новичков полезная инфа будет. Удачи.
New Games Studio --------------------------------------------------------------------------------------- Проекты: DeadDay - Online --- Мертвый день: Выживание
|
|
| |
last2424 | Дата: Четверг, 07 Августа 2014, 17:53 | Сообщение # 3 |
30 мл. блоков
Сейчас нет на сайте
| DeadDay, html часть делал не я, а мой друган, я и сам бы мог сделать её но он пришёл и сам взял html часть, я только php часть сделал. У него руки из одного места для дивов он их материт во всю, вот и таблицы в коде. Добавлено (07.08.2014, 17:53) --------------------------------------------- DeadDay, мне не удобен хедер, либо у меня руки из жопы что бы его использовать либо он у меня и вправду не работает, когда я его использую у меня куча ошибок возникает.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
DeadDay | Дата: Четверг, 07 Августа 2014, 18:21 | Сообщение # 4 |
New game Studio
Сейчас нет на сайте
| last2424, Ну это ладно. Но всё равно, на будующие, используйте <div>.
Смотря какие ошибки. Возможно у тебя перед header что то выводиться "echo" и ещё что то. А это крайне не допускается. Хорошенько поштудируй про "header", и всё будет ровно..
New Games Studio --------------------------------------------------------------------------------------- Проекты: DeadDay - Online --- Мертвый день: Выживание
|
|
| |
last2424 | Дата: Четверг, 07 Августа 2014, 19:43 | Сообщение # 5 |
30 мл. блоков
Сейчас нет на сайте
| DeadDay, мдя, больше я не буду давать ему верстать. Следующий урок в скором времени не обещаю, я хочу написать вам нормальный сервер который не умирает после первого соеденения.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
Folleah | Дата: Четверг, 07 Августа 2014, 20:07 | Сообщение # 6 |
Архитектор
Сейчас нет на сайте
| Цитата echo "Настройка характеристик:<br/>"; echo '<form action="charcreater.php?char_class=warrior" method="post">'; echo 'Количество очков прокачки: '.$chardb['count_up'].' <br/>'; echo 'Здоровье: '.$hp.'<input type="submit" name="hp" value="+"/><br/>'; echo 'Мана: '.$mn.'<input type="submit" name="mn" value="+"/><br/>'; echo 'Сила: '.$strength.'<input type="submit" name="strength" value="+"/><br/>'; echo 'Скорость: '.$speed.'<input type="submit" name="speed" value="+"/><br/>'; echo 'Интелект: '.$intelligence.'<input type="submit" name="intelligence" value="+"/><br/>'; echo 'Вера: '.$faith.'<input type="submit" name="faith" value="+"/><br/>'; echo "</form>"; И тут мои глаза покрылись кровью.
|
|
| |
last2424 | Дата: Четверг, 07 Августа 2014, 20:28 | Сообщение # 7 |
30 мл. блоков
Сейчас нет на сайте
| Folleah, я знать, у меня тоже такое чувство было, я потом сделаю бонус урок по оптимизаций всего этого дела.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
DeadDay | Дата: Четверг, 07 Августа 2014, 20:45 | Сообщение # 8 |
New game Studio
Сейчас нет на сайте
| и не используй кнопки. делай ссылками, и переменные передавай ими.
New Games Studio --------------------------------------------------------------------------------------- Проекты: DeadDay - Online --- Мертвый день: Выживание
|
|
| |
last2424 | Дата: Понедельник, 11 Августа 2014, 18:35 | Сообщение # 9 |
30 мл. блоков
Сейчас нет на сайте
| А я ожидал срач в теме. Почему не пишите нехрена?
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
DeadDay | Дата: Понедельник, 11 Августа 2014, 20:19 | Сообщение # 10 |
New game Studio
Сейчас нет на сайте
| Да особо то и не о чем срач то разводить. Все просто и эллементарно. Своё мнение я высказал. Оптимизировай код, блочная вёрстка и т.д.
New Games Studio --------------------------------------------------------------------------------------- Проекты: DeadDay - Online --- Мертвый день: Выживание
|
|
| |
last2424 | Дата: Среда, 13 Августа 2014, 14:48 | Сообщение # 11 |
30 мл. блоков
Сейчас нет на сайте
| DeadDay, я о другом.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
Saitei | Дата: Среда, 13 Августа 2014, 14:57 | Сообщение # 12 |
старожил
Сейчас нет на сайте
| Цитата last2424 ( ) DeadDay, я о другом. biggrin
Сообщение отредактировал Saitei - Среда, 13 Августа 2014, 14:57 |
|
| |
al_mt | Дата: Среда, 13 Августа 2014, 16:09 | Сообщение # 13 |
постоянный участник
Сейчас нет на сайте
| А ссылку на делаемую игру есть?
|
|
| |
Eldrine | Дата: Среда, 13 Августа 2014, 16:28 | Сообщение # 14 |
заслуженный участник
Сейчас нет на сайте
| Уроки ПО созданиЕ брОузерной игры? Без обид, чувак ты крут;)
Модели оружия для CS:S
|
|
| |
last2424 | Дата: Четверг, 14 Августа 2014, 19:30 | Сообщение # 15 |
30 мл. блоков
Сейчас нет на сайте
| Завтра, послезавтра следующий урок, там начнём делать уже что то интересное, поработаем с аяксом, возможно сделаем отключение курицелапой(если ко мне не приедет озарение), без всяких лишних обновлений, расскажу нубам про аякс, расскажу нубам про работу сервера и клиента, всё что можно в этом уроке то и расскажу.
P.S. на счёт отключения, знаю половину начнёт говорить про таймеры, но таймеры эта такая страшная пристрашная штука, в общем кто захотел тот понял. P.P.S а возможно отключения вообще уберу, ведь то что я написал это больше смахивает на кривой кик за афк, нежели на отключение, в данный момент из-за "гениальности" браузеро-разрабов я не могу использовать спокойно некоторые функций которые должны нормально работать, но из-за разрабов они нехрена не работают(я говорю про onunload и onbeforeload). Хотя одну вещь которая думаю может помочь мне в этой проблеме(хотя до сих пор не уверен что она сработает)
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Четверг, 14 Августа 2014, 19:42 |
|
| |
Saitei | Дата: Четверг, 14 Августа 2014, 19:51 | Сообщение # 16 |
старожил
Сейчас нет на сайте
| last2424, Аякс... Аякс... А я ведь говорил!
|
|
| |
last2424 | Дата: Четверг, 14 Августа 2014, 20:03 | Сообщение # 17 |
30 мл. блоков
Сейчас нет на сайте
| Saitei, Да не...(я ничего такого не имел ввиду, если вы подумали о другом, вам следует подумать о своём поведений) ты не говорил.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
|
|
| |
|