Понедельник, 23 Декабря 2024, 21:45

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Новые уроки по создание броузерной игры – 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” и изменил некоторые старые параметры.

Ну вот вроде бы, как и всё, урок получился коротким. Всем удачи я пошёл пить чай smile
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, мне не удобен хедер, либо у меня руки из жопы что бы его использовать либо он у меня и вправду не работает, когда я его использую у меня куча ошибок возникает. biggrin


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
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, я знать, у меня тоже такое чувство было, я потом сделаю бонус урок по оптимизаций всего этого дела. smile

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
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, я о другом. biggrin

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
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
заслуженный участник
Сейчас нет на сайте
Уроки ПО созданиЕ брОузерной игры? biggrin Без обид, чувак ты крут;)

Модели оружия для CS:S
last2424Дата: Четверг, 14 Августа 2014, 19:30 | Сообщение # 15
30 мл. блоков
Сейчас нет на сайте
Завтра, послезавтра следующий урок, там начнём делать уже что то интересное, поработаем с аяксом, возможно сделаем отключение курицелапой(если ко мне не приедет озарение), без всяких лишних обновлений, расскажу нубам про аякс, расскажу нубам про работу сервера и клиента, всё что можно в этом уроке то и расскажу.

P.S. на счёт отключения, знаю половину начнёт говорить про таймеры, но таймеры эта такая страшная пристрашная штука, в общем кто захотел тот понял. biggrin
P.P.S а возможно отключения вообще уберу, ведь то что я написал это больше смахивает на кривой кик за афк, нежели на отключение, в данный момент из-за "гениальности" браузеро-разрабов я не могу использовать спокойно некоторые функций которые должны нормально работать, но из-за разрабов они нехрена не работают(я говорю про onunload и onbeforeload). Хотя одну вещь которая думаю может помочь мне в этой проблеме(хотя до сих пор не уверен что она сработает) smile


Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)

Сообщение отредактировал last2424 - Четверг, 14 Августа 2014, 19:42
SaiteiДата: Четверг, 14 Августа 2014, 19:51 | Сообщение # 16
старожил
Сейчас нет на сайте
last2424, Аякс... Аякс... А я ведь говорил! biggrin
last2424Дата: Четверг, 14 Августа 2014, 20:03 | Сообщение # 17
30 мл. блоков
Сейчас нет на сайте
Saitei, Да не...(я ничего такого не имел ввиду, если вы подумали о другом, вам следует подумать о своём поведений) ты не говорил. biggrin

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
  • Страница 1 из 1
  • 1
Поиск:

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