
В этом курсе уроков я пошагово рассмотрю создание простенького кликкера с максимальной онлайн составляющей(админ панель,возможность управления с сайта,блок новостей,и.т.д.). Подробнее розписал по спойлерам.
Для начала работы нам понадобиться
-Notepad++ или любой другой текстовый редактор(т.к. мы будем работать с исходным кодом php);
-Зарегестрированый хостинг(абсолютно любой с php+mysql,более подробная информация есть в других уроках.Не буду описывать еще раз.);
-Базовые знания C2(данный урок рассчитан на более менее продвинутых пользователей);
Так же перед началом работы рекомендую подробно ознакомится с уроками endermAH.
-Notepad++ или любой другой текстовый редактор(т.к. мы будем работать с исходным кодом php);
-Зарегестрированый хостинг(абсолютно любой с php+mysql,более подробная информация есть в других уроках.Не буду описывать еще раз.);
-Базовые знания C2(данный урок рассчитан на более менее продвинутых пользователей);
Так же перед началом работы рекомендую подробно ознакомится с уроками endermAH.

Онлайн демо
[iframe=http://imperror.esy.es/c2/clicker/game/index.html][/iframe]
[iframe=http://imperror.esy.es/c2/clicker/game/index.html][/iframe]
Поскольку наша игра будет онлайн понятное дело нам понадобиться логин и регистрация,которые уже подробно описаны в других уроках,по этому я просто приложу бланк над которым мы будем работать.
Скачиваем,открываем. Первым делом идем на слой Game и создаем главный спрайт(например монетку),и три текста(1-й отвечает за количество "монеток" а 2-й за "Баксы" а третий будет логом игры),также добавим две кнопки отвечающие за вход в меню и за сохранение. Теперь создадим системные объекты : Touch(для обработки нажатий),Array(для хранения данных)с параметрами 10,1,1(размер с запасом для будущих манипуляций).
Выйдет как-то так

Теперь перейдем в слой событий.
Первое событие которое мы создадим - обработку клика по нашей монетке

Условие события думаю всем понятно.Первое действие - спавн объекта частиц в точке касания(для украшения).Второе же действие - предписание значению в массиве системного выражения floor-округление к целому меньшему((random(0,5))по Х=1 Y=1 Z=1 но в коде указан 0 т.к. в Construct 2 используется счет с нуля(как и в многих Я.П.). Думаю с этим событием все ясно.Теперь приступим к созданию UI.

Синхронизируем значения текста и значений в массиве 0,0,0 - монетки 1,0,0 - баксы.
Далее создадим новый слой для суб-меню который в будущем свяжем с PHP,MySql

Привязываем переход на него к кнопке "Меню"
Теперь начинается самое интересное

Создаем обработчик нажатия на кнопку "Сохранить" и привязываем к нему запрос на скрипт save.php(смотри спойлер PHP)
Рассмотрим по подробнее сам запрос

Параметры:
Tag-параметр отвечающий за "тэг" обработчика,то есть "имя" нашего задания
URL-адрес на скрипт
Data-основное поле,в данном случае поле обработчика POST
Method- в нашем случае используем POST(передача php),также существует не один обработчик(GET и другие,возможно рассмотрю в других уроках)
Выражения:
Array.AsJSON - перекодировка массива в единую строку,для последуйщего удобного хранения.(очень пригодиться для использования массива вместо переменных в больших играх)
Теперь нам надо создать обработку выполнения запроса "Save" ,здесь нам и понадобиться его название

На этом работа на слое Game окончена.
Также рекомендую создать на слое promo две кнопки,одну - назад и другую с посыланием в Браузер на нашу веб-админ панель.На этом работа с клиентской частью закончена.

Clicker.capx
- (12.79 КБ) Скачиваний: 335
- Бланк для работы(Регистрация+Логин)

Скачиваем,открываем. Первым делом идем на слой Game и создаем главный спрайт(например монетку),и три текста(1-й отвечает за количество "монеток" а 2-й за "Баксы" а третий будет логом игры),также добавим две кнопки отвечающие за вход в меню и за сохранение. Теперь создадим системные объекты : Touch(для обработки нажатий),Array(для хранения данных)с параметрами 10,1,1(размер с запасом для будущих манипуляций).
Выйдет как-то так

Теперь перейдем в слой событий.
Первое событие которое мы создадим - обработку клика по нашей монетке

Условие события думаю всем понятно.Первое действие - спавн объекта частиц в точке касания(для украшения).Второе же действие - предписание значению в массиве системного выражения floor-округление к целому меньшему((random(0,5))по Х=1 Y=1 Z=1 но в коде указан 0 т.к. в Construct 2 используется счет с нуля(как и в многих Я.П.). Думаю с этим событием все ясно.Теперь приступим к созданию UI.

Синхронизируем значения текста и значений в массиве 0,0,0 - монетки 1,0,0 - баксы.
Далее создадим новый слой для суб-меню который в будущем свяжем с PHP,MySql

Привязываем переход на него к кнопке "Меню"
Теперь начинается самое интересное


Создаем обработчик нажатия на кнопку "Сохранить" и привязываем к нему запрос на скрипт save.php(смотри спойлер PHP)
Рассмотрим по подробнее сам запрос

Параметры:
Tag-параметр отвечающий за "тэг" обработчика,то есть "имя" нашего задания
URL-адрес на скрипт
Data-основное поле,в данном случае поле обработчика POST
Method- в нашем случае используем POST(передача php),также существует не один обработчик(GET и другие,возможно рассмотрю в других уроках)
Выражения:
Array.AsJSON - перекодировка массива в единую строку,для последуйщего удобного хранения.(очень пригодиться для использования массива вместо переменных в больших играх)
Теперь нам надо создать обработку выполнения запроса "Save" ,здесь нам и понадобиться его название

На этом работа на слое Game окончена.
Также рекомендую создать на слое promo две кнопки,одну - назад и другую с посыланием в Браузер на нашу веб-админ панель.На этом работа с клиентской частью закончена.

Для начала данной части работы нам понадобится создать на нашем хостинге базу данных с такой структурой

В колонке username будем хранить имя пользователя
В колонке password будем хранить пароль пользователя(в будущем допишу к уроку инструкцию по md5 шифровке)
В колонке data мы будем хранить строчку JSON(наш закодированый массив)
Теперь перейдем к написанию наших PHP скриптов

В колонке username будем хранить имя пользователя
В колонке password будем хранить пароль пользователя(в будущем допишу к уроку инструкцию по md5 шифровке)
В колонке data мы будем хранить строчку JSON(наш закодированый массив)
Теперь перейдем к написанию наших PHP скриптов
Если не интересно читать - исходный код прикреплен в конце спойлера
Подробное рассмотрение кода:

Разрешаем кросс-доменные запросы и назначаем системным переменным свои значения
имя хоста,пользователь,бд,пароль.

Осуществляем подключение к БД создаем системную переменную-обработчик.
mysql_connect - Подключение к MySql серверу
mysql_select_db - Выбор БД на Mysql сервере
or - оператор или (отличается от else тем что возможен только для двух вариантов)
die - набор текста на экран
Так же прошу обратить внимание на то что в конце каждой команды стоит символ ";"

Теперь рассмотрим блоки If - в данном случае применяем для проверки данных
$_POST['переменная'] - способ получения переменной из другого источника с помощью метода "POST"
Теперь рассмотрим функции метода Mysql_query(php функции работы с MySQL)

SELECT- выбрать
* - все колонки
FROM - из
registration - имя таблицы
WHERE - где колонка username равна переменной полученой из POST
if(mysql_num_rows($q1)==0) - если количество строк равно 0 то выводим что аккаунта не существует
else (упомянутый выше - or ,в переводе на русский "если не"
UPDATE - обновить значения
SET - установить значение
Так же не забывайте что php код надо закрывать


Подробное рассмотрение кода:

Разрешаем кросс-доменные запросы и назначаем системным переменным свои значения
имя хоста,пользователь,бд,пароль.

Осуществляем подключение к БД создаем системную переменную-обработчик.
mysql_connect - Подключение к MySql серверу
mysql_select_db - Выбор БД на Mysql сервере
or - оператор или (отличается от else тем что возможен только для двух вариантов)
die - набор текста на экран
Так же прошу обратить внимание на то что в конце каждой команды стоит символ ";"

Теперь рассмотрим блоки If - в данном случае применяем для проверки данных
$_POST['переменная'] - способ получения переменной из другого источника с помощью метода "POST"
Теперь рассмотрим функции метода Mysql_query(php функции работы с MySQL)

SELECT- выбрать
* - все колонки
FROM - из
registration - имя таблицы
WHERE - где колонка username равна переменной полученой из POST
if(mysql_num_rows($q1)==0) - если количество строк равно 0 то выводим что аккаунта не существует
else (упомянутый выше - or ,в переводе на русский "если не"
UPDATE - обновить значения
SET - установить значение
Так же не забывайте что php код надо закрывать


- Код: Выделить всё
<?php
header ('Access-Control-Allow-Origin: *');
$mysql_host = "mysql.hostinger.com.ua";
$mysql_database = "u199033043_click";
$mysql_user = "u199033043_adm";
$mysql_password = "********************";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибочка вышла...");
mysql_select_db($mysql_database, $link) or die ("Ой...");
if($_POST['username'] == "")
echo 'Аккаунта не существует!';
else
$username = $_POST['username'];
if($_POST['data'] == "")
echo 'Системная ошибка!';
else
$data = $_POST['data'];
$q1 = mysql_query("SELECT * FROM registration WHERE username='".$username."'");
if(mysql_num_rows($q1)==0)
{
echo 'Аккаунта не существует!';
}
else
{
mysql_query("UPDATE registration SET data='".$data."' WHERE username='".$username."'");
echo 'Успешно сохранено';
}
?>
В этом скрипте объяснить осталось пожалуй только одну ф-цию

mysql_result($q2, 0) - вывод первой(заметьте что счет в php тоже с нуля) строки обработчика $q2 (строкой выше)

mysql_result($q2, 0) - вывод первой(заметьте что счет в php тоже с нуля) строки обработчика $q2 (строкой выше)
- Код: Выделить всё
<?php
header ('Access-Control-Allow-Origin: *');
$mysql_host = "mysql.hostinger.com.ua";
$mysql_database = "u199033043_click";
$mysql_user = "u199033043_adm";
$mysql_password = "*********";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибочка вышла...");
mysql_select_db($mysql_database, $link) or die ("Ой...");
if($_POST['username'] == "")
{
echo 'Аккаунта не существует!';
}
else
{
$username = $_POST['username'];
$q1 = mysql_query("SELECT * FROM registration WHERE username='".$username."'");
if(mysql_num_rows($q1)==0)
{
echo 'Аккаунта не существует!';
}
else
{
$q2 = mysql_query("SELECT data FROM registration WHERE username='".$username."'");
echo mysql_result($q2, 0);
}
}
?>
Подробно описан в уроке "Вход"
Исходный код :
Исходный код :
- Код: Выделить всё
<?php
header ('Access-Control-Allow-Origin: *');//Разрешили кроссдоменные запросы
$mysql_host = "mysql.hostinger.com.ua";
$mysql_database = "u199033043_click";
$mysql_user = "u199033043_adm";
$mysql_password = "**********";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибочка вышла...");
mysql_select_db($mysql_database, $link) or die ("Ой...");//Подключились к базе
$username = $_POST['username'];
$password = $_POST['password'];
$q1 = mysql_query("SELECT password FROM registration WHERE username='".$username."'");//Присваиваем идентификатор переменной
if(mysql_num_rows($q1) == 0)//проверяем: есть ли такой пользователь
{
echo "Нет такого пользователя!";//Тут всё ясно
}
else
{
$real = mysql_result($q1, 0);//Извлекаем сам пароль (если есть такой пользователь!!!)
if ($real === $password)//Сравниваем полученный парль (ставим регистрозависимое ===)
{
echo "Всё верно!";//Тут понятно
}
else
{
echo "Такой пары ник-пароль не обнаружено!";//Тут так же понятно ))
}
}
?>
Подробно описан в уроке "Регистрация"
Исх.Код
Исх.Код
- Код: Выделить всё
<?php
header ('Access-Control-Allow-Origin: *');//Разрешили кроссдоменные запросы
$mysql_host = "mysql.hostinger.com.ua";
$mysql_database = "u199033043_click";
$mysql_user = "u199033043_adm";
$mysql_password = "**********";
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибочка вышла...");
mysql_select_db($mysql_database, $link) or die ("Ой...");//Подключились к базе
if($_POST['username'] == "")
echo 'Введите имя пользователя!';
else
$username = $_POST['username'];
if($_POST['password'] == "")
echo 'Введите пароль!';
else
$password = $_POST['password'];
if(isset($username) && isset($password))//Тут я всё-таки использоват isset :)
{
$q1 = mysql_query("SELECT * FROM registration WHERE username='".$username."'");//Извлекаем все строки с указанным именем пользователя
if(mysql_num_rows($q1)==0)//Если количество строк с таким именем пользователя = 0 ,то добавляем юзера и отвечаем спасибо за регистрацию
{
mysql_query("INSERT INTO registration (username, password ) VALUES ('".$username."' , '".$password."')");
echo 'Спасибо за регистрацию';
}
else// А если есть такой юзер сожелеем об этом :)
{
echo 'К сожалению, такое имя пользователя уже занято';
}
}
?>
Надеюсь вам понравилось

Буду рад конструктивной критике и советам

