Воскресенье, 06 Октября 2024, 17:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
AssasinДата: Пятница, 23 Октября 2009, 10:10 | Сообщение # 701 | Тема: Урок по созданию браузерной игры № 3
web-coder
Сейчас нет на сайте
Ты настраивал все как здесь написано? http://gcup.ru/forum/48-1963-1
Если да, то тогда установи JRE 6 Update 16
AssasinДата: Четверг, 22 Октября 2009, 16:41 | Сообщение # 702 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
Красиво и еще раз красиво, только что то солдат на астматика похож happy Чего так часто дышит? happy
AssasinДата: Вторник, 20 Октября 2009, 20:51 | Сообщение # 703 | Тема: Урок по созданию браузерной игры № 3
web-coder
Сейчас нет на сайте
Можно и так happy
AssasinДата: Вторник, 20 Октября 2009, 19:08 | Сообщение # 704 | Тема: HiAsm и игры на нём!
web-coder
Сейчас нет на сайте
На нем можно сделать абсолютно все, если есть определенные знания.
AssasinДата: Понедельник, 19 Октября 2009, 20:04 | Сообщение # 705 | Тема: Урок по созданию браузерной игры № 4
web-coder
Сейчас нет на сайте
Вот и 4 урок наступил, в нем поговорим о игровом окне, а именно где, какие компоненты будут размещены. Вот перечень этих компонентов:
- Игровое меню
- Чат
- Характеристики персонажа
- Инвентарь
- Игровое поле
- Журнал квестов

Но в самом игровом окне будет отображаться только чат, игровое меню и игровое поле. Остальное будет отображаться в виде отдельных окошек, которые появляються при нажатии на соответствующий пункт в игровом меню. Размещаться компоненты будут таким образом:
Вверху по центру — игровое меню, внизу будет чат, а все остальное пространство будет отведено под игровое поле. Теперь приступим к написанию нашего игрового окна. Это будет файл, который будет подключать в себя остальные файлы, такие как чат, игровое меню, и т.д.
Можете создать новый проект, но я советую в нашем проекте CreateChar создавать все остальное. Для этого открываем наш проект и справа в окошке Project на папке src нажимаем ПКМ->Add->New MXML File... (картинка) и назовем его GameWindow.mxml
Приступаем к написанию кода:
Code

<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" width="800" height="600" xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:SWFLoader source="chat.swf" x="0" y="450" width="800" height="150"/>
    <mx:SWFLoader source="menu.swf" x="330" y="0" width="170" height="50"/>
    <mx:SWFLoader source="GameField.swf" x="0" y="0" width="800" height="450"/>
</mx:Application>

Появился новый тег SWFLoader, он загружает другие флешки и отображает их в нашем окне. Для того что б скомпилировать данный код нам нужно нажать Ctrl + F8.
С игровым окном справились, теперь пришло время к технической реализации чата.

В чате будет реализовано смайлики, отправка сообщения публично и отправка сообщения по нику. Это будет происходить следующим образом:
Игрок вводит сообщение в строку ввода и жмет кнопку «Отправить» (или Enter), эта строка отправляеться в php скрипт, который записывает ее в нашу БД, а другой скрипт считывает данные с БД и выводит на экран. При отправке сообщения обновляеться экран чата, также он обновляеться каждые 30 секунд. Можно вставлять смайлики, при нажатии на книпку, открываеться небольшое окошко в котором можно выбрать смайлик, который сразу записываеться в строку ввода, в виде кода, а с помощью одной функции этот код преобразуеться в картинку. Сообщения будут выглядеть слкдующим образом:

Code
[11:11] RPGman(i): Проверка чата
[11:11] Jack(i): Все отлично работает

В квадратных скобках — время, затем идет ник персонажа, в круглых скобках ссылка, которая открывает новое окно в котором описываеться информация о персонаже. И после двоеточия само сообщение. Также будет выводиться строка сколько юзеров online.

Вот и 4 урок подошел к концу, самый короткий из остальных happy Так сказать передышка для меня, но впереди еще много работы, так что отдохнуть не помешает happy

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

AssasinДата: Воскресенье, 18 Октября 2009, 18:50 | Сообщение # 706 | Тема: Урок по созданию браузерной игры № 3
web-coder
Сейчас нет на сайте
Он отсылает текст, который мы введем в поле "Имени чара" в php скрипт reg_comp.php, который обрабатывает полученные данные и записывает имя чара, если такое уже существует, то выводит соответствующую ошибку. Также отправляет какой аватар выбран.
Полный код нашего Main.mxml:
Code

<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml">
         <mx:Script><![CDATA[
       import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для
       import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон
            
       private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола
       private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола
       private var i:int = 0; //числовая переменная равна 0
       [Bindable] //сам еще не знаю для чего нужна это строка, но без нее выдает ошибку
       private var gr:String = "1"; //текстовая переменная равна 1
       [Bindable]
       private var patch:String; //текстовая переменная
       /* Функция создания чара, отправляет данные которые ввел пользователь */
       private function onCreateChar():void {
        createRequest.send();
       }
       /* Функция выбора RadioButton мужского пола */
       private function iMen():void {
        avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку
        gr = "1"; //переменная равна 1
        simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1"
       }
       /* Функция выбора RadioButton женского пола */
       private function iWomen():void {
        avatar.load(pic_arr_w[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку
        gr = "2"; //переменная равна 1
        simpleLabel.text = "2-1"; //тег <mx:Text> который имеет имя simpleLabel равен "2-1"
       }
       /* Функция нажатия кнопки "Пред." */
       private function onLeft():void {
        if (men.selected == true){ //если выбран пол "Мужской", то
         avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i"
         i--; //переменная уменьшаеться на 1
         if (i == -1) { //если переменная "i" равна -1, то
          i = 3; //"i" равна 3
         }
        if (i == 0) { //если "i" равна 0, то
         simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1"
         avatar.load(pic_arr_m[0]); //будет отображать первый аватар
         patch = "img/man1-1.swf"; //путь к аватару
        }
        if (i == 1) {
         simpleLabel.text = "1-2";
         avatar.load(pic_arr_m[1]);
         patch = "img/man1-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "1-3";
         avatar.load(pic_arr_m[2]);
         patch = "img/man1-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "1-4";
         avatar.load(pic_arr_m[3]);
         patch = "img/man1-4.swf";
        }
        }
         if (women.selected == true) { //если выбран пол "Женский", то
          avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i"
          i--; //переменная уменьшаеться на 1
          if (i == -1) { //если переменная "i" равна -1, то
           i = 3; //"i" равна 3
          }
        if (i == 0) {
         simpleLabel.text = "2-1";
         avatar.load(pic_arr_w[0]);
         patch = "img/woman2-1.swf";
        }
        if (i == 1) {
         simpleLabel.text = "2-2";
         avatar.load(pic_arr_w[1]);
         patch = "img/woman2-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "2-3";
         avatar.load(pic_arr_w[2]);
         patch = "img/woman2-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "2-4";
         avatar.load(pic_arr_w[3]);
         patch = "img/woman2-4.swf";
        }        
         }
       }
       /* Функция нажатия кнопки "След." */
       private function onRight():void {
        if (men.selected == true){ //если выбран пол "Мужской", то
         avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i"
         i++; //переменная увеличиваеться на 1
         if (i == 4) { //если переменная "i" равна 4, то
          i = 0; //"i" равна 0
         }
        if (i == 0) {
         simpleLabel.text = "1-1";
         avatar.load(pic_arr_m[0]);
         patch = "img/man1-1.swf";
        }
        if (i == 1) {
         simpleLabel.text = "1-2";
         avatar.load(pic_arr_m[1]);
         patch = "img/man1-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "1-3";
         avatar.load(pic_arr_m[2]);
         patch = "img/man1-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "1-4";
         avatar.load(pic_arr_m[3]);
         patch = "img/man1-4.swf";
        }
        }
        if (women.selected == true) { //если выбран пол "Женский", то
         avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i"
         i++; //переменная увеличиваеться на 1
         if (i == 4) { //если переменная "i" равна 4, то
          i = 0; //"i" равна 0
         }
         if (i == 0) {
         simpleLabel.text = "2-1";
         avatar.load(pic_arr_w[0]);
         patch = "img/woman2-1.swf";
        }
        if (i == 1) {
         simpleLabel.text = "2-2";
         avatar.load(pic_arr_w[1]);
         patch = "img/woman2-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "2-3";
         avatar.load(pic_arr_w[2]);
         patch = "img/woman2-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "2-4";
         avatar.load(pic_arr_w[3]);
         patch = "img/woman2-4.swf";
        }       
        }      
       }
            
       /* Функция определения результата */
       private function onResult(e:ResultEvent):void {
         if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то
          //var link:URLRequest = new URLRequest("http://localhost/game.php"); //создаем ссылку
          //navigateToURL(link, "_self"); //переадресовываем по ссылке
         } else { //в другом случае, если результат не существует, то
          switch (int(String(e.result))) { //считываем данные
           case -1 : //если данные равны "-1", то выводим всплывающее окно
            Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!");
            break;
           case -2 : //если данные равны "-2", то выводим всплывающее окно
            Alert.show("Такое имя уже существует", "Ошибка!");
            break;
           case -3 : //если данные равны "-3", то выводим всплывающее окно
            Alert.show("Вы не ввели имя", "Ошибка!");
            break;
           case -4: //если данные равны "-4", то выводим всплывающее окно
            Alert.show("Недопустимые символы в имени", "Ошибка!");
            break;
          }
         }
       }
      ]]></mx:Script>
         <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php">
             <mx:request>
                 <mx:nameChar>{nameChar.text}</mx:nameChar>
                 <mx:avaIm>{simpleLabel.text}</mx:avaIm>
                 <mx:gr>{gr.toString()}</mx:gr>
        <mx:patch>{patch.toString()}</mx:patch>
             </mx:request>
         </mx:HTTPService>
         <mx:Label id="simpleLabel" x="168" y="64" width="36" height="18"/>
         <mx:Button label="Далее" click="onCreateChar()" x="140" y="252" width="100" height="22"/>
         <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22"/>
         <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/>
         <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" x="19" y="41" width="73" height="22"/>
         <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" x="19" y="67" width="74" height="22"/>
         <mx:Label text="Имя" x="176" y="198" width="36" height="18"/>
         <mx:Button label="Пред." click="onLeft()" x="78" y="141" width="100" height="22"/>
         <mx:Button label="След." click="onRight()" x="200" y="141" width="100" height="22"/>
</mx:Application>

После того как мы написали нашу флешку, пришло время ее создать, для этого жмем синий трехугольник на панели инструментов (картинка) и ждем когда FD скомпилирует нам нашу флешку. После этого заливаем нашу флешку к нам на сервер в папку htdocs. Также копируем туда эти картинки вместе с папкой:
архив с картинками

Теперь нам нужно отобразить данную флешку в браузере, для этого создаем goreg.php и пишем туда такой код:

Code

<?php
session_start(); //запускаем сессию

include "conf.php"; //инклюдим  conf.php
/* коннектимся к БД */
$data = mysql_connect($base_name, $base_user, $base_pass);
if(!mysql_select_db($db_name,$data)){
          print "<BR>";
          echo mysql_error();
          die();
}
/* Узнаем ip адрес юзера */
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip==$_SESSION['ip']) { //если ip равен ip записаному в сессию, то выводим флешку
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru"      
xml:lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="Браузерная Флеш игра BTG" />      
<meta name="keywords" content="игра, флеш, браузер, BTG, игроки." />      
<link rel="stylesheet" href="style.css" type="text/css" />
<title>Евилопия - бессплатная онлайн Flash игра</title>
</head>
<body>      
<div id="goreg">
      <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="400" height="300" id="reg" align="middle">
      <param name="allowScriptAccess" value="sameDomain" />
      <param name="allowFullScreen" value="false" />
      <param name="movie" value="CreateChar.swf" />
       <param name="quality" value="high" />
       <param name="bgcolor" value="#000000" />
       <embed src="CreateChar.swf" quality="high" bgcolor="#000000" width="400" height="300" name="reg" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
      </object>
</div>
</body>
</html>
<?php
}else{ //в другом случае переадресовываем на главную страницу
echo "<script>location.href='index.php';</script>";
}
?>

Если мы попробуем перейти по адресу http://localhost/goreg.php нас перекинет на главную страницу, так и должно быть, если мы пройдем регистрацию, то окажемся на нашей страничке с флешкой.
Теперь приступим к написанию нашего файла reg_comp.php, который будет обрабатывать данные, которые будут поступать с флешки:
Code

<?php
session_start(); //запускаем сессию

include "conf.php"; //инклюдим  conf.php

$nameChar = trim($_POST['nameChar']); /* переменная равна данным которые пришли от флешки, а именно — имя чара */
$vid = $_POST['avaIm']; /* получаем номер аватарки */
$gander = $_POST['gr']; /* узнаем какой пол выбран */
$patch = $_POST['patch']; /* получаем путь к аватаркам */
/* Проверяем заполнено ли поле имени, если нет, то выводим ошибку */
if ($nameChar == '') {
       echo "-3";
       exit;
}
/* Проверяем что б имя состояло только с английских букв */
if (!preg_match("/^[a-zA-Z]+$/",$nameChar)) {
       echo "-4";
       exit;
}
/* Подключаемся к БД, если не удалось, то выводим ошибку */
$data = mysql_connect($base_name, $base_user, $base_pass);
if(!$data){
          echo "-1";
          exit;
}
/* Проверяем есть ли юзер с данным именем, если есть, то выводим ошибку */
mysql_select_db($db_name);
$query = "SELECT * FROM users WHERE name='".$nameChar."'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
if ($num_results > 0) {
      echo "-2";
      exit;
}
/* Записываем имя чара */
$result = mysql_query("UPDATE users SET name='".$nameChar."' WHERE email='".$_SESSION['user']."'");
/* Записываем данные аватарки в таблицу avatar */
$ava = mysql_query("INSERT INTO avatar (gander, vid, path) VALUES ('".$gander."', '".$vid."', '".$patch."')");
?>

Урок писался неделю, так как я только начал изучение Flex, поэтому долго разбирался. Я б сказал что урок полный, но в нем есть одна неувязочка, которую я до сих пор не могу решить. Эта неувязка состоит в том, что когда пользователь ввел данные, они записались, но его никуда не переадресовывает. Думаю в ближайшие дни исправлю это и тогда урок будет полностью закончен.
Жду вопросов, а также критику и советы happy

Исходник - линк

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

AssasinДата: Воскресенье, 18 Октября 2009, 18:50 | Сообщение # 707 | Тема: Урок по созданию браузерной игры № 3
web-coder
Сейчас нет на сайте
Извините за долгое отсутствие уроков, очень мало свободного времени остаеться, но ничего. Приступаем к нашему третьему уроку. В этом уроке мы сделаем II часть регистрации, а именно — создание персонажа. Я сильно не заморачивался и сделал по простому, вот такой результат у нас получиться (картинка).
И еще одно, так как флешки, которые мы будем создавать, читают только utf-8 кодировку, то нам нужно немного изменить нашу БД.
Code

DROP DATABASE testgame; /* Если данная БД уже создана, то удаляем ее */      
CREATE DATABASE testgame DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; /* Создаем БД со стандартной кодировкой  utf-8(для того что б поддерживался русский язык)*/      
USE testgame; /* используем данную БД */      

/* таблица персонажа */      
CREATE TABLE `users` (      
               id_user    bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */      
               email    CHAR(64), /* текстовый тип (64 символа) */      
               pass  CHAR(32), /* текстовый тип (32 символа) */      
               name  CHAR(32), /* текстовый тип (32 символа) */      
               life  INT DEFAULT 50, /* числовой тип, по умолчанию равен 50 */      
               atk  INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */      
               def  INT DEFAULT 5, /* числовой тип, по умолчанию равен 5 */      
               lov  INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */      
               lvl  INT DEFAULT 1, /* числовой тип, по умолчанию равен 1 */      
               exp  INT DEFAULT 0, /* числовой тип, по умолчанию равен 0 */      
               ip CHAR(15), /* текстовый тип (15 символов) */
              PRIMARY KEY  (`id_user`)  /* Показываем что уникальным номером у нас являеться id_user */      
) ENGINE=MyISAM DEFAULT CHARSET=utf8; /* Обозначаем тип таблицы MyISAM. Таблицы типа MyISAM показывают хорошие результаты при выборках SELECT. Для более подробного изучения читайте Самоучитель по MySQL 5 */      

/* таблица аватара */      
CREATE TABLE `avatar` (      
id_ava  bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */      
gander  INT(2), /* Пол игрока, цыфровой тип(2 цыфра) */      
vid  CHAR(32), /* Вид игрока,  цыфровой тип(2 цыфры)*/      
path  CHAR(32), /* Путь к папке с рисунками персонажа, текстовый тип(32 символа) */      
PRIMARY KEY (`id_ava`) /* Показываем что уникальным номером у нас являеться id_ava */      
) TYPE=MyISAM;             

/* таблица чата */      
CREATE TABLE `chat` (      
id_msg  bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */      
msg  CHAR(255), /* текстовый тип(255 символов) */      
time_msg    CHAR(5), /* текстовый тип(5 символов) */      
wrt_user    CHAR(32), /* текстовый тип(32 символов) */      
who  CHAR(32), /* текстовый тип(32 символов) */      
PRIMARY KEY (`id_msg`) /* Показываем что уникальным номером у нас являеться id_msg */      
) TYPE=MyISAM;             

/* таблица инвентаря */      
CREATE TABLE `inventar` (      
id_inv  bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */      
name_object    CHAR(64),      
atk_up  INT(2),      
def_up  INT(2),      
lov_up  INT(2),      
life_up  INT(4),      
PRIMARY KEY (`id_inv`) /* Показываем что уникальным номером у нас являеться id_msg */      
) TYPE=MyISAM;             

/* таблица квеста */      
CREATE TABLE `quest` (      
id_quest    bigint(20) unsigned NOT NULL auto_increment,      
cont_quest  CHAR(32),      
kill_quest  INT DEFAULT 0,      
PRIMARY KEY (`id_quest`)      
) TYPE=MyISAM;             

/* таблица боя */      
CREATE TABLE `battle` (      
id_btl  bigint(20) unsigned NOT NULL auto_increment,      
end_btl    CHAR(32),      
PRIMARY KEY (`id_btl`)      
) TYPE=MyISAM;             

/* Таблица врагов */      
CREATE TABLE `enemy` (      
id_enm    bigint(20) unsigned NOT NULL auto_increment,      
name_enm    CHAR(32),      
atk_enm    INT,      
life_enm    INT,      
def_enm    INT,      
lov_enm    INT,      
e xp_enm     IN T,      
path_enm    CHAR(32),      
PRIMARY KEY (`id_enm`)      
) TYPE=MyISAM;             

/* Добавляем в таблицу данные о враге */      
INSERT INTO enemy (name_enm,      
atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm)      
VALUES('Призраки','7','40','6','4','10','path/enemy/');

А также во всех php файлах заменить эту строку:

Code

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

на эту:
Code

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

С помощью этой замены мы поменяем кодировку страниц на utf-8. Также в PSPad'e на строке меню нажмите Формат->UTF-8 и эту операцию проделайте с каждым файлом php.
Теперь приступим к созданию нашей регистрации. Мы будем её делать во FlashDevelop. Запускаем его и видим начальное окно, в котором нам предлагают создать AS3, AS2, HAXE проекты. Мы будем работать с AS3, а именно с Flex'ом. Почему с ним? Потому что я начал изучение данной среды разработки и мне она понравилась happy . Выбираем Flex 3 Project, в поле Name вводим имя своего проекта, я назвал CreateChar. В поле Location выбираем где будет находиться наш проект, у меня это C:\Documents and Settings\Администратор\Мои документы. Поле Package не трогаем, ставим галочку внизу, для того что б создать папку для нашего проекта и жмем OK.
Справа, в окошке Project наши файлы с которыми мы будем работать (картинка). Наш главный файл обозначен зеленой стрелочкой вниз. Называеться он Main.mxml, нажмите на него 2 раза ЛКМ. Теперь вы можете писать свой код для этого файла. Как вы видите в нашем фале уже есть строчки кода. Первая определяет кодировку, ее не трогайте. Вторая указывает что это приложение, а не модуль и последняя закрывает тег приложения. Как видите здесь также как и в html существуют теги, и все они начинаються с отрытия скобки < и букв mx. Перейдите во вкладку Design View (картинка) и можете создавать свое приложение перетаскивая компоненты в рабочую область. В папке Controls (картинка) Выберите и разместите в рабочую область такие компоненты:
- Button – 3 шт.
- Image – 1 шт.
- Label – 1 шт.
- RadioButton – 2 шт.
- TextInput – 1 шт.

После того как вы разместили, переходите обратно во вкладку Source View. Видим у нас изменился код, все те компоненты, которые мы добавили отобразились и здесь. Нам остаеться только их правильно разместить и дать имена. Поэтому изменяем координаты компонентов как нам удобно, я изменил так:

Code

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
         <mx:Button label="Далее" click="onCreateChar()" x="140" y="252" width="100" height="22"/>
         <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22"/>
         <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/>
         <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" x="19" y="41" width="73" height="22"/>
         <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" x="19" y="67" width="74" height="22"/>
         <mx:Label text="Имя" x="176" y="198" width="36" height="18"/>
         <mx:Button label="Пред." click="onLeft()" x="78" y="141" width="100" height="22"/>
         <mx:Button label="След." click="onRight()" x="200" y="141" width="100" height="22"/>
</mx:Application>

label – что будет отображаться на кнопке или возле RadioButton
click – функция которая происходит после нажатия на кнопку или RadioButton
id – имя тега
textAlign — размещение текста(слева, по-центру, справа)
source — путь к картинке

С этим справились, теперь нам нужно указать какой по размерам будет наша флешка, для этого заменяем тег:

Code

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

на
Code

<mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml">

Мы задали имя слоя - absolute и указали высоту и ширину нашей будущей флешки. Теперь приступаем к написанию логической части. Вся логика будет заключаться в теге , поэтому после тега:
Code

<mx:Application layout="absolute" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml">

пишем:
Code

         <mx:Script><![CDATA[
       import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для
       import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон
       import flash.net.navigateToURL; //а третий для перехода между страницами
            
       private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола
       private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола
       private var i:int = 0; //числовая переменная равна 0
       [Bindable] //сам еще не знаю для чего нужна это строка, но без нее выдает ошибку
       private var gr:String = "1"; //текстовая переменная равна 1
       [Bindable]
       private var patch:String; //текстовая переменная
       /* Функция создания чара, отправляет данные которые ввел пользователь */
       private function onCreateChar():void {
        createRequest.send();
       }
       /* Функция выбора RadioButton мужского пола */
       private function iMen():void {
        avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку
        gr = "1"; //переменная равна 1
        simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1"
       }
       /* Функция выбора RadioButton женского пола */
       private function iWomen():void {
        avatar.load(pic_arr_w[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку
        gr = "2"; //переменная равна 1
        simpleLabel.text = "2-1"; //тег <mx:Text> который имеет имя simpleLabel равен "2-1"
       }
       /* Функция нажатия кнопки "Пред." */
       private function onLeft():void {
        if (men.selected == true){ //если выбран пол "Мужской", то
         avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i"
         i--; //переменная уменьшаеться на 1
         if (i == -1) { //если переменная "i" равна -1, то
          i = 3; //"i" равна 3
         }
        if (i == 0) { //если "i" равна 0, то
         simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1"
         avatar.load(pic_arr_m[0]); //будет отображать первый аватар
         patch = "img/man1-1.swf"; //путь к аватару
        }
        if (i == 1) {
         simpleLabel.text = "1-2";
         avatar.load(pic_arr_m[1]);
         patch = "img/man1-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "1-3";
         avatar.load(pic_arr_m[2]);
         patch = "img/man1-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "1-4";
         avatar.load(pic_arr_m[3]);
         patch = "img/man1-4.swf";
        }
        }
         if (women.selected == true) { //если выбран пол "Женский", то
          avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i"
          i--; //переменная уменьшаеться на 1
          if (i == -1) { //если переменная "i" равна -1, то
           i = 3; //"i" равна 3
          }
        if (i == 0) {
         simpleLabel.text = "2-1";
         avatar.load(pic_arr_w[0]);
         patch = "img/woman2-1.swf";
        }
        if (i == 1) {
         simpleLabel.text = "2-2";
         avatar.load(pic_arr_w[1]);
         patch = "img/woman2-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "2-3";
         avatar.load(pic_arr_w[2]);
         patch = "img/woman2-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "2-4";
         avatar.load(pic_arr_w[3]);
         patch = "img/woman2-4.swf";
        }        
         }
       }
       /* Функция нажатия кнопки "След." */
       private function onRight():void {
        if (men.selected == true){ //если выбран пол "Мужской", то
         avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i"
         i++; //переменная увеличиваеться на 1
         if (i == 4) { //если переменная "i" равна 4, то
          i = 0; //"i" равна 0
         }
        if (i == 0) {
         simpleLabel.text = "1-1";
         avatar.load(pic_arr_m[0]);
         patch = "img/man1-1.swf";
        }
        if (i == 1) {
         simpleLabel.text = "1-2";
         avatar.load(pic_arr_m[1]);
         patch = "img/man1-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "1-3";
         avatar.load(pic_arr_m[2]);
         patch = "img/man1-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "1-4";
         avatar.load(pic_arr_m[3]);
         patch = "img/man1-4.swf";
        }
        }
        if (women.selected == true) { //если выбран пол "Женский", то
         avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i"
         i++; //переменная увеличиваеться на 1
         if (i == 4) { //если переменная "i" равна 4, то
          i = 0; //"i" равна 0
         }
         if (i == 0) {
         simpleLabel.text = "2-1";
         avatar.load(pic_arr_w[0]);
         patch = "img/woman2-1.swf";
        }
        if (i == 1) {
         simpleLabel.text = "2-2";
         avatar.load(pic_arr_w[1]);
         patch = "img/woman2-2.swf";
        }
        if (i == 2) {
         simpleLabel.text = "2-3";
         avatar.load(pic_arr_w[2]);
         patch = "img/woman2-3.swf";
        }
        if (i == 3) {
         simpleLabel.text = "2-4";
         avatar.load(pic_arr_w[3]);
         patch = "img/woman2-4.swf";
        }       
        }      
       }
            
       /* Функция определения результата */
       private function onResult(e:ResultEvent):void {
         if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то
          //var link:URLRequest = new URLRequest("http://localhost/game.php"); //создаем ссылку
          //navigateToURL(link, "_self"); //переадресовываем по ссылке
         } else { //в другом случае, если результат не существует, то
          switch (int(String(e.result))) { //считываем данные
           case -1 : //если данные равны "-1", то выводим всплывающее окно
            Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!");
            break;
           case -2 : //если данные равны "-2", то выводим всплывающее окно
            Alert.show("Такое имя уже существует", "Ошибка!");
            break;
           case -3 : //если данные равны "-3", то выводим всплывающее окно
            Alert.show("Вы не ввели имя", "Ошибка!");
            break;
           case -4: //если данные равны "-4", то выводим всплывающее окно
            Alert.show("Недопустимые символы в имени", "Ошибка!");
            break;
          }
         }
       }
      ]]></mx:Script>

Я здесь все прокоментировал, думаю вопросов не возникнет, а если возникнут, то прошу — задавайте =)
Теперь нам нужно создать обработчик, который определяет какие данные нужно отослать в php скрипт. Такой обработчик называеться HTTPService. У нас он будет выглядеть так:

Code

         <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php">
             <mx:request>
                 <mx:nameChar>{nameChar.text}</mx:nameChar>
                 <mx:avaIm>{simpleLabel.text}</mx:avaIm>
                 <mx:gr>{gr.toString()}</mx:gr>
      <mx:patch>{patch.toString()}</mx:patch>
             </mx:request>
         </mx:HTTPService>
AssasinДата: Суббота, 17 Октября 2009, 19:32 | Сообщение # 708 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
С анимацией не дружу, но могу попробовать biggrin
--------------
Нет, не получаеться


Сообщение отредактировал Assasin - Суббота, 17 Октября 2009, 19:39
AssasinДата: Суббота, 17 Октября 2009, 19:23 | Сообщение # 709 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
море, море...
http://rpgman.byethost33.com/Tiles2.swf
Quote (Девяностых)
Assasin, С нижнего на верхний тайлик будет сложно подниматься лестницу ставь!

Щас попробуем happy
-------------------------
Quote (Девяностых)
Assasin, С нижнего на верхний тайлик будет сложно подниматься лестницу ставь!

А зачем лестница? ведь там можно перешагнуть и все, ведь не лилипуты будут бегать happy


Сообщение отредактировал Assasin - Суббота, 17 Октября 2009, 19:27
AssasinДата: Суббота, 17 Октября 2009, 19:00 | Сообщение # 710 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
Вот доделал тайлик
http://rpgman.byethost33.com/Tiles.swf
AssasinДата: Суббота, 17 Октября 2009, 18:35 | Сообщение # 711 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
Спасиб)) У меня фантазии не хватает, так что нарисовал не сильно красиво. Щас попробую доделать магму
AssasinДата: Суббота, 17 Октября 2009, 18:15 | Сообщение # 712 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
Вот решил в свободное время нарисовать что нибудь happy


Сообщение отредактировал Assasin - Суббота, 17 Октября 2009, 18:16
AssasinДата: Суббота, 17 Октября 2009, 12:00 | Сообщение # 713 | Тема: Барахолка спрайтов картинок
web-coder
Сейчас нет на сайте
hands Критиковать нечего, как по мне - отлично нарисовано happy
AssasinДата: Среда, 14 Октября 2009, 19:21 | Сообщение # 714 | Тема: Shoot Space - браузерная MMOARPG
web-coder
Сейчас нет на сайте
Master_Chief, Отредактируй ссылку, ты точку в конце лишнюю поставил.
AssasinДата: Вторник, 13 Октября 2009, 18:00 | Сообщение # 715 | Тема: Урок по созданию браузерной игры № 2
web-coder
Сейчас нет на сайте
MrDmitriy65, Можно и так, но вы не правы что не будет переходить на регистрацию. И так и так все будет работать, но за подсказку спасибо happy
AssasinДата: Понедельник, 12 Октября 2009, 14:39 | Сообщение # 716 | Тема: Уроки по созданию браузерной игры
web-coder
Сейчас нет на сайте
kALIFE,
Цитата из книги "Самоучитель MySQL 5":
Quote
Использование ключевого слова ENGINE являеться более предпочтительным, но в отличии от TYPE не может быть использовано в версиях MySQL младше, чем 4.0.18.

Тоесть другими словами можно сказть что никакой разницы нету если ты используешь MySQL 5 версии.

Quote (kALIFE)
и в таблице enemy не понил вот это: /* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/'); вставлять куда то нажимая изменить и вставить этот код или как ? спасиб.

Это в БД ты добавил запись которая отображает, что у нас есть враг и зовут его Призрак с параметрами атаки, защиты и т.д. Этот код вставляеться вместе с остальным в данное поле картинка
AssasinДата: Воскресенье, 11 Октября 2009, 23:17 | Сообщение # 717 | Тема: Подскажите пожалуйста, как сделать стратегию!
web-coder
Сейчас нет на сайте
А ты думал? Тут как и в школе тоже учить нужно.
AssasinДата: Воскресенье, 11 Октября 2009, 14:44 | Сообщение # 718 | Тема: Урок по созданию браузерной игры № 2
web-coder
Сейчас нет на сайте
Урок № 2 Создание формы входа и I этап регистрации


Итак приступаем ко второму уроку. Здесь я опишу как с помощью html создаються формы, и как с помощью php можно записать данные, введенные в эти формы, в БД.
Сначала создадим форму входа, она будет состоять с двух полей ввода для email игрока и пароля. Также на ней будет 2 кнопки, одна кнопка ведет на скрипт регистрации, другая инициализирует игрока и перемещает его в игру. Для начала перейдите в папку htdocs что находиться в каталоге xampp, у меня это C:\xampp\htdocs\ и удалите все что там есть.
Итак приступим к написанию скрипта, создайте с помощью PSPad новый документ и назовите его index.php, сохраните этот документ в папке htdocs, которая находиться в каталоге xampp. У меня это C:\xampp\htdocs\
После того как сохранили вставьте код приведенный ниже, а лучше перепишите, так вы лучше поймете и запомните.
Code

<!-- Любая грамотно свёрстанная страница должна в самом начале содержать так называемый DOCTYPE. Нужен он для всевозможных устройств вывода информации и браузеров в том числе. -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Ну, раз тут появилось слово lang и ru, то понятно, что это указание на язык документа. Не путать с кодировкой! Её мы укажем позднее.  -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru"           
xml:lang="ru">
<!-- B нём содержится всякая служебная информация: название страницы (то, что входит в титл), кодировка, ключевые слова для поисковых роботов, описание страницы и т.п. -->
<head>
<!-- Указываем кодировку windows-1251 -->
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<!-- Именно эта строка первой покажется в результатах поиска яндекса или рамблера, если они ещё нас найдут.  BTG – сокращенно от Browser Test Game, я решил назвать так игру-->
<meta name="description" content="Браузерная Флеш игра BTG" />           
<!-- ключевые слова для поисковиков. -->
<meta name="keywords" content="игра, флеш, браузер, BTG, игроки." />           
<!-- ссылка на наш лист стилей CSS, который мы создадим чуть позже. -->
<link rel="stylesheet" href="style.css" type="text/css" />           
<!-- Выводит вверху нашего браузера -->
<title>BTG – браузерная онлайн Flash игра</title>
<!-- Закрываем наш тег. Обязательно нужно закрывать теги! И в правильном порядке, как показано здесь, сначала <head><title></title></head> -->
</head>
<!-- “Тело” нашей странички -->
<body>
<!-- Используем верстку страницы с помощью div'ов, они служать для распределения контента на странице, так как у нас будет одна форма входа, соответственно будет один div, он будет иметь имя(id) login, это нужно для того что б после мы могли изменять разные характеристики в этом блоке, такие как: цвет букв, цвет фона, шрифт и т.д.  -->
<div id='entry'>
<!-- Создаем форму с помощью тега form, задаем ей метод post(нужен для передачи данных введенных пользователем в поля) Определяем что после нажатия кнопки Войти, перенаправляем на скрипт login.php который обрабатывает введенные данные -->
<form action='login.php' method='post'>
<!-- Создаем поле ввода с помощью тега input, указываем что будет отображаться текст с помощью тега type.Задаем класс inup, он как и div служит для отображения графической части. Далее задаем небольшой скриптик в котором происходит следующее: Если в поле ничего не введено, то на нем будет отображаться надпись E-mail, если пользователь хочет что то ввести, то надпись пропадает. И последнее задаем имя поля email, нужно для нашего скрипта login.php -->
<input class="inup" type="text" onblur="if (value == '') {value='E-mail'}" onfocus="if (value == 'E-mail') {value =''}" value="E-mail" name="email"><br>
<!-- Все тоже что и выше, только отображаеться надпись Пароль, но она отображаеться в виде кружков или звездочек(смотря в каком браузере просматриваеться), так как тип поля мы указали password, и имя поля у нас - pass -->
<input class="inup" type="password" onblur="if (value == '') {value='Пароль'}" onfocus="if (value == 'Пароль') {value =''}" value="Пароль" name="pass"><br>
<!-- Создаем кнопку (submit) с класом btn, так же понадобиться нам для отображения графически, и задаем что б на кнопке было написано Войти, с помощью тега value -->
<input type="submit" class='btn' value="Войти"><br>
<!-- Также создаем кнопку, но на этот раз у нее тип button и называеться она Регистрация. Так же появилась функция onclick с помощью которой пользователь переходит на другую страничку нашей игры, а точнее на регистрацию(файл reg.php) -->
<input type=button class='btn' value=' Регистрация ' onclick='window.location="reg.php"'>
<!-- Закрываем все теги -->
</form>
</div>
</body>
</html>


С формой входа справились, сохраняем ее, открываем браузер и переходим по такому адресу http://localhost/index.php и видим примерно следующее (картинка). Так сказать не очень впечатляет такое расположение элементов. Что б все красиво оформить создаем в PSPad документ CSS(Cascading Style Sheet) и называем его style.css. В этом документе мы будем хранить всю графическую информацию главной страницы сайта и I этапа регистрации. Приступаем к еаписанию кода.
Code

/* Задаем значения для той области документа, которая находиться между тегами <body></body>. background-color это фон нашего сайта, я установил на черный, все остальные значения обозначают что у нас отступы от краев браузера будут равны 0, тоесть их совсем не будет */
body {background-color:#000000;margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;}
/* Задаем значения для той области которая находиться в теге <div> с именем entry(id=entry)
Задаем цвет текста белый, и выравнивание по-центру */
#entry {color:#ffffff;text-align:center;}
/* Здесь описываються значения для наших кнопок. Размер шрифта, цвет текста, сам шрифт, цвет фона и цвет рамки вокруг кнопки  */
.btn {font-size:7.5pt;color:#dfddd3;font-family:Verdana,Arial,Helvetica,sans-serif;background-color:#2b2b18;border:1px double #817A63;}
/* Здесь описываються значения для наших полей ввода. Размер шрифта, цвет текста, сам шрифт, цвет фона и цвет рамки вокруг поля */
.inup {text-align:center;font-size:8pt;color:#dfddd3;font-family:Verdana,Arial,Helvetica,sans-serif;background-color:#151616;border: 1px double #817a63;}


Сохраняем документ и снова переходим по адресу http://localhost/index.php и теперь видим более менее приличную картину (картинка). Вы конечно можете переделать цвет и фон по своему, это будет вам на пользу. Теперь если нажать на кнопку Вход то перейдем по адресу http://localhost/login.php , но нам выдаст ошибку так как такого файла нету, мы его еще не создали. И если нажать на кнопку Регистрация, тоже выдаст ошибку, так как тоже такого файла еще нету.
Файл login.php мы создадим в 3 уроке. Сейчас возьмемся за файл reg.php. Создаем в PSPad'e новый php файл, сохраняем его с именем reg.php в папку где находиться index.php и style.css. Итак, что же у нас будет в файле регистрации? Будет 3 поля, в одном нужно будет ввести email игрока, в другом пароль и в третьем подтверждение пароля. Также у нас будет check-box для согласия с правилами игры. Ну и конечно кнопка Далее. При создании этого файла мы впервые столкнемся с языком php, на котором напишем условие проверки заполнения полей, а также записи данных в БД. Но для начала нам нужно создать файл conf.php, в нем будет храниться информация о нашей БД. Все php скрипты пишуться в таких вот кавычках
Выглядеть это будет так:
Code

<?php
$base_name="localhost"; //имя (стандартно у всех localhost)
$base_user="root"; //юзер (стандартно у всех root)
$base_pass="password"; //пароль (выставить можно зайдя во вкладку Привилегии в phpMyAdmin
$db_name="testgame"; //имя БД
?>


Теперь мы можем приступить к написанию скрипта регистрации:
Code

<?php
session_start(); //стартуем сесию

include "conf.php"; //подключаем файл с параметрами БД

/* Подключаемся к БД, если не получаеться, то выводим ошибку */
$data = mysql_connect($base_name, $base_user, $base_pass);
if(!mysql_select_db($db_name,$data)){
               echo "<BR>";
               echo mysql_error();
               die();
}
//Прверяем на заполнение полей
if ($_POST['next']){ //если нажата кнопка далее, то
$error=0; // переменная равна 0
//Проверка на мыло
if (!$_POST['email']){ $errm = "Вы не ввели e-mail<br>"; $error=1;}
if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;}
$c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'")); {if ($c_e>0) {$errm .= "Данный e-mail уже зарегистрирован в игре"; $error=1;}}
//Проверка на пароль
if(!$_POST ["pass"]) {$errp = "Необходимо указать Ваш пароль<br>"; $error =1;}
if(!preg_match("/^[А-Яа-яЁёa-zA-Z0-9]+$/",$_POST ["pass"])) {$errp .= "Пароль содержит запрещенный символ<br>"; $error =1;}
if (strlen ($_POST ["pass"])<6 || strlen ($_POST ["pass"])>25){ $errp .="Длина пароля от 6 до 25 символов<br>"; $error =1;}
if ($_POST ["pass"]!= $_POST ["pass2"]){ $errp .="Введёные вами пароли не совпадают!"; $error =1;}
//проверка на согласие с правилами
if (!$_POST['rules']) {$errr = "Вы не согласны с правилами?<br>"; $error=1;}
// Нет ошибок, создаём перса
if(!$error)
{
$ip = $_SERVER['REMOTE_ADDR'];//узнаем ip адрес юзера
/* Записываем данные в БД */
mysql_query ("INSERT INTO users (pass, ip, email) values('".md5($_POST ["pass"])."','".$ip."','".addslashes($_POST ["email"])."')") or die("Invalid query: " . mysql_error());
$_SESSION['user'] = $_POST['email']; //записуем email в глобыльную переменную $_SESSION
$_SESSION['ip'] = $ip;//записуем ip в глобыльную переменную $_SESSION
?>
<script>location.href="goreg.php";</script><!-- Переадресовуем на страничку создания чара -->
<?php
}
}
// Выводим ошибочки
function err($text){
return "<tr valign='middle' align='left'><td colspan='2'><span class='error'>$text</td></tr>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru"           
xml:lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="description" content="Браузерная Флеш игра BTG" />           
<meta name="keywords" content="игра, флеш, браузер, BTG, игроки." />           
<link rel="stylesheet" href="style.css" type="text/css" />
<title>BTG – браузерная онлайн Flash игра</title>
</head>
<body>
<div id="reg">
<form action="" method="post">
<!-- Создаем таблицу с помощью тега table и размещяем по-центру -->
<table align="center">
<!-- Создаем строку с помощью тега tr и разбиваем ее на 2 ячейки с помощью тега td -->
<tr><td align="left" width="200">E-mail:</td><td><input type="text" value="<?php echo $_POST['email'] ?>" name="email" class="inup"></td></tr>
<?php echo err($errm); ?>
<tr><td align="left" width="200">Пароль:</td><td><input type="password"  value="" name="pass" class="inup"></td></tr>
<?php echo err($errp); ?>
<tr><td align="left" width="200">Повторите пароль:</td><td><input type="password"  value="" name="pass2" class="inup"></td></tr>
<!-- Закрываем таблицу -->
</table>
<!-- Создаем checkbox с именем rukes  -->
<span><input type="checkbox" class="inup" name="rules"></span> Я обязуюсь соблюдать <A href="lib/law.php" target=_blank><B>Законы игры Test Game</B></A></p>
<?php echo err($errr); ?>
<input type="submit" name="next" value="Дальше" class="btn">
</form>
</div>
</body>
</html>


Теперь обьясняю. После нажатии кнопки Далее происходит проверка скрипта, если все поля введены, то переадресовываем на следующую страницу в которой будет создавать своего персонажа, но это в 3 уроке.
Если поля или какое то поле пустое, то выводиться ошибка.
Так же у нас появился новый параметр — ip. Мы его не обозначили в нашей БД. Так что заходим в phpMyAdmin, Переходим по нашей БД testgame, жмем на таблицу users и добавляем ip, по скринам думаю разберетесь:
картинка
картинка
картинка
Теперь нам нужно подправить файл style.css, так как в нашем скрипте добавился еще один класс reg. Добавим следующий код:
Code

#reg {color:#ffffff;text-align:center;}
.error {FONT-SIZE:8pt;FONT-FAMILY:verdana;COLOR:red;}
A:link {COLOR:#F9F7EA;TEXT-DECORATION:none;font-weight:normal;}
A:visited {COLOR:#F9F7EA;TEXT-DECORATION:none;font-weight:normal;}
A:active {COLOR:#77684D;TEXT-DECORATION:none;font-weight:normal;}
A:hover {COLOR: #7E7765;TEXT-DECORATION:underline}


A:link, A:visited, A:active, A:hover — описывают состояние ссылки при наведении на нее мишки, при нажатии, при покидании области ссылки и в неактивном состоянии.

Вот и второй урок подошел к концу, если возникли вопросу, прошу задавайте, буду рад ответить.

При копировании материала ссылка на источник обязательна!
AssasinДата: Суббота, 10 Октября 2009, 18:49 | Сообщение # 719 | Тема: Уроки создание браузерной онлайновой игры на blitz 3d
web-coder
Сейчас нет на сайте
Quote (melkij)
Здравствуйте пожалуйста можете прислать уроки от blitz-school на мой mail melkijforever2@mail.ru буду очень вам презнателен.На всех ссылках побывал уроки удалены борцами за авторские права

А тут посмотреть??? <_<


Сообщение отредактировал Assasin - Суббота, 10 Октября 2009, 18:50
AssasinДата: Суббота, 10 Октября 2009, 16:35 | Сообщение # 720 | Тема: Apache
web-coder
Сейчас нет на сайте
А как ты проверяешь внешний ип?
Поиск:

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