Quantcast
Channel: Сообщество PHP DevelStudio - среда разработки программ
Viewing all articles
Browse latest Browse all 6336

[Классы для разработки игр] Танчики

$
0
0
2DTankA - Классы для разработки игр "Танчики".
Всем привет. Это мой первый публичный проект. Я представляю вам 2DTankA. С помощью этих классов вы сможете легко и быстро выпустить игру Танчики на DevelStudio. Проект развивающийся, так что не судите строго, будут выходить разные обновления с разными плюшками.

Выложу последние (на данный момент версии):
TankGame v.1.0.51
TankMove v.2.1051.5
TankMusic v.2.1051.2
TankControl v.2.1051.0
Образец папки data для TankGame v.1.0.51

А чтобы вы могли скачать и старые версии я выложу ссылку на папку:
Архив версий

Приступим:
Сперва нужно переименовать файлы, наподобие TankMove v.2.105.5.php просто в TankMove.php. Например:
TankMove v.2.105.5.php -> TankMove.php.
TankMusic v.2.105.2.php -> TankMusic.php.
TankControl v.2.105.0.php -> TankControl.php.
А файл TankGame x.x.x.php переименовывать необязательно, т. к. именно его мы будем подключать к проекту, а все остальные файлы он сам подключит.

Итак, что все эти файлы значат:

Всегда нужно обращаться к классу TankGame, а не к другим (т. к. все команды, связывающие классы, именно в нем). Исключение: чтобы сделать танк ботом нужно обращаться к *Класс TankGame*->TCtrl->bot('Имя танка'), а чтобы убрать ИИ с этого танка, то *Класс TankGame*->TCtrl->unbot('Имя танка'), чтобы узнать бот ли он, то *Класс TankGame*->TCtrl->is_bot('Имя танка').

Папка data:

BASE_BLUE, BASE_RED - типы башен и танков.

Как создать свой класс:
Для начала нужно создать папку и назвать ее именем создаваемого класса, после этого нужно добавить _TANK или _TOWER в зависимости от того, для чего вы хотите создать класс.

Как создать класс для танка:

down.png, left.png, right.png, up.png - изображения повернутого в разные стороны танка в формате png.
move.mp3 - звук движения танка по форме.
move.php - скрипт для передвижения танка по форме. Покажу лишь только часть файла, остальное сами поймете:
PHP код:

//////////////////
$timerInt 20// Timer interval (ms). CAUTION!!! Small interval - low performance.
$speed    =  4// Tank speed (pixels per $timerInt ms).
////////////////// 

$timerInt - интервал таймера.
$speed - скорость танка (в пикселях за $timerInt миллисекунд).

info.php - информация о танке.
PHP код:

/////////////////////
$tankHealth 250// Max health.
///////////////////// 

$tankHealth - изначальное здоровье танка.

Как создать класс для башни:


PROJECTILE\down.png, PROJECTILE\left.png, PROJECTILE\right.png, PROJECTILE\up.png - изображения повернутого в разные стороны танка в формате png.
down.png, left.png, right.png, up.png - изображения повернутой в разные стороны башни в формате png.
fire.mp3 - звук выстрела.
fire.php - скрипт движения снаряда. Опять же, покажу только часть:
PHP код:

//////////////////
$gunSpeed 65// Pixels per $timeint ms.
$damage =   55// Damage.
$charge 3000// Recharge time (ms).
$timeint =  50// Timer interval (ms). CAUTION!!! Small interval - low performance.
////////////////// 

$gunSpeed - скорость снаряда (в пикселях за $timeint миллисекунд).
$damage - урон.
$charge - время перезарядки (в миллисекундах). 3000 миллисекунд = 3 секунды.
$timeint - интервал таймера.

info.php - информация о башне.
PHP код:

//- Tank Rotate is UP -///////
$x_up 13;            //(+)//
$y_up 31;            //(-)//
$x_right 13;         //(+)//
$y_right 38;         //(+)//
$x_down 13;          //(+)//
$y_down 38;          //(+)//
$x_left 58;          //(-)//
$y_left 38;          //(+)//
//////////////////////////////
$gx 20;              //(+)//
$gy 16;              //(-)//
//////////////////////////////

//- For TankControl -/////////////////////////////////////////////////////
$projectileSize_W_UP 8;  // A projectile weight. (pixel, rotate - up) //
$viewDistance 1200;      // Tower's view distance. (pixel)            //
////////////////////////////////////////////////////////////////////////// 

$x_up, $y_up, $x_right, $y_right, $x_down, $y_down, $x_left, $y_left - позиция башни относительно позиции танка при разных поворотах башни, повороте танка "up" ((+) в конце означает сложение, (-) - вычитание; в пикселях).
$gx, $gy - позиция снаряда относительно позиции башни при повороте башни "up" ((+) в конце означает сложение, (-) - вычитание; в пикселях).
$projectileSize_W_UP - ширина снаряда при повороте снаряда "up" (в пикселях).
$viewDistance - дальность обзора ботов (в пикселях).

Установку мы закончили, теперь
Как пользоваться ими:

Для начала нужно подключить файл TankGame.php, остальные файлы подключать не нужно, это сделает файл TankGame.php:
PHP код:

include 'TankGame.php'

Теперь нужно создать экземпляр класса:
PHP код:

// Синтаксис new TankGame($dm = false).
// dm - Режим разработчика. Если он включен, то у ботов появятся сканирующие полоски, а также будет включен вывод ошибок.
new TankGame;

// Для обращения к классу TankGame можно использовать глобальную переменную $___TankGame, которая автоматически создается при создании экземпляра.
// Для обращения к классам
// TankMove - $___TankGame->TMove;
// TankMusic - $___TankGame->TMusic;
// TankControl - $___TankGame->TCtrl. 

Теперь нужно создать танк:
PHP код:

global $___TankGame;
//Синтаксис create($name,$form,$tankType,$towerType,$rotateTank,$rotateTower,$x,$y)
// $name - имя танка.
// $form - название формы (название, а не объект)
// $tankType - тип танка (в образце, как я ранее вам показывал есть BASE_BLUE и BASE_RED)
// $towerType - тип башни (в образце, как я ранее вам показывал есть BASE_BLUE и BASE_RED)
// $rotateTank - изначальный поворот танка
// $rotateTower - изначальный поворот башни
// $x, $y - позиция
$___TankGame->create('player','Form1','BASE_BLUE','BASE_BLUE','up','up',200,200); 

Можно не создавать танк, а просто прихимичить уже существующие объекты:
PHP код:

global $___TankGame;
//Синтаксис set($name,$form,$tankType,$towerType,$rotateTank,$rotateTower,$tank,$tower,$movePlayer,$firePlayer)
// $tank - танк (TMImage)
// $tower - башня (TMImage)
// $movePlayer - плеер передвижения (SQUALL)
// $firePlayer - плеер выстрела (SQUALL)
$___TankGame->create('player','Form1','BASE_BLUE','BASE_BLUE','up','up',c('image1'),c('image2'),c('sqPlayer1'),c('sqPlayer2')); 

Теперь перейдем к функциям управления танком:
$name - имя танка. В коде примером этого будет 'player'.
Вся информация о танках будет храниться в глобальном массиве $___TanksList.

Удалить танк:
PHP код:

global $___TankGame;
$___TankGame->delete('player');
// delete($name,$killed = false)
// $name - во всех функциях - имя танка.
// $killed - убит или нет. Пока что ничего не делает, но в будущем... 

Передвижение:
PHP код:

global $___TankGame;
$___TankGame->start_move('player');
// Начать передвижение
// Вызывает функцию ___START_MOVE_DO_NOT_CALL__*Тип танка* 

PHP код:

global $___TankGame;
$___TankGame->stop_move('player');
// Прекратить движение
// Вызывает функцию ___STOP_MOVE_DO_NOT_CALL__*Тип танка* 

Поменять передачу:
PHP код:

global $___TankGame;
$___TankGame->set_transmission('player',true);
// set_transmission($name,$back_transmission = false)
// $back_transmission: true - движение назад, false - вперед 

Проверить танк:
PHP код:

global $___TankGame;
$___TankGame->is_tank('player');
// Выдаст false, если данный танк не существует 

Бот-Функции:

Сделать ботом:
PHP код:

global $___TankGame;
$___TankGame->TCtrl->bot('player'); 

Убрать ИИ с танка:
PHP код:

global $___TankGame;
$___TankGame->TCtrl->unbot('player'); 

Проверка бота:
PHP код:

global $___TankGame;
$___TankGame->TCtrl->is_bot('player');
// Выдаст false, если танк не бот, или он не существует
// Если параметр $name будет пустым (is_bot()), то выдаст массив с ботами 

Скриншот:


Спасибо за внимание. Эти классы будут постоянно обновляться. У нас еще много идей, в скором будущем вы сможете увеличить возможности ваших танчиков. Если вы скачали эти классы, то нажмите "Спасибо".

Поддержать проект:
WebMoney: R832055817950.
QIWI: +79378057969.

Viewing all articles
Browse latest Browse all 6336

Trending Articles