Показать сообщение отдельно
Старый 16.10.2007, 22:06   #8
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Re: Создаём свой Crimsonland.

ЧАСТЬ 4. Создания типов для игры.


Так. завтрашнего дня я не дождался. Решил сделать 4 часть сегодня. )))

В этой части мы сделаем все необходимые типы для игры:
  1. Герой
  2. Монстр
  3. Пуля
  4. Кровь

Так. Приступим сразу к коду:

[blitz]
Type TPlayer Extends TEntity 'Объявляем тип.
Field X#,Y# 'Положение игрока.
Field Life 'Жизнь.
Field Ang 'Поворот.
Field frame , animnext 'Для анимации.
Field Weapon 'Какое оружие. 0 - автомат. 1 - дробовик
Field Shot 'Когда был произведен предыдузий выстрел.

Method Update() 'Цикл, где будут проходить все действия для
пока здесь ничего не пишем, но сделаем метку.
End Method



Function CreatePlayer:TPlayer( ) 'Функция для создания игрока.
Local Player:TPlayer=New TPlayer 'Создаем игрока.
Player.x = width*0.5 'Делаем, чтобы положение игрока было точно в центре.
Player.y = height*0.5
Player.life = 100 '100 жизней для начала.
Player.AddLast SPlayer 'Добавляем объект в список.
Return Player 'Возвращаем объект.
End Function

End Type
[/blitz]

Type - объявляет тип.
Extends - "привязка". В нашем случае к типу TEntity. Помните, мы такой создали?
Field - знаения для типа.
Function CreatePlayer:TPlayer( ) - Функция для создания объекта - игрока. TPlayer означает, к какому типу относится функция.

Так же у нас для монстра, пули и крови. Только поля аля значения другие и названия. )

Для того, чтобы создать игрока, достаточно ввести TPlayer.CreatePlayer (), но мы это напишем потом.

[blitz]
Type TMonster Extends TEntity 'Объявляем тип.
Field X#,Y# 'Положение объекта.
Field Life 'Жизнь.
Field Ang 'Поворот.
Field frame , animnext 'Для анимации.

Method Update() 'Цикл, где будут проходить все действия для монстра.
пока здесь ничего не пишем, но сделаем метку.
End Method

Function CreateMonster:Tmonster(x#,y#) 'Функция для создания монстра.
Local monster:TMonster=New TMonster 'Создаем игрока.
Monster.x = x
Monster.y = y
Monster.life = 100 '100 жизней для начала.
Monster.AddLast SMonster 'Добавляем объект в список
Return Monster 'Возвращаем объект.
End Function

End Type



[/blitz]

Чтобы создать монстра, надо написать:
TMonster.CreateMonster(х, у)
Х, У - положение монстра. Если мы хотим, чтобы у монстров разные жихни были, или еще что-нибудь, то нужно заместо:
Function CreateMonster:Tmonster(x#,y#)
Monster.life = 100

писать
Function CreateMonster:Tmonster(x#,y#, life)
Monster.life = life


То есть при создании нового монтсра мы будем указывать еще и его количество жизней, но в моем туториаре мы не будем делать этого. )))

[blitz]
Type TBullet Extends TEntity 'Объявляем тип.
Field X#,Y# 'Положение пули.
Field Ang 'Поворот.
Field speed

Method Update() 'Цикл, где будут проходить все действия для пули.
пока здесь ничего не пишем, но сделаем метку.
End Method

Function CreateBullet:TBullet(x#,y#,ang#, speed) 'Функция для создания пули.
Local Bullet:TBullet=New TBullet 'Создаем игрока.
Bullet.x# = x#
Bullet.y# = y#
Bullet.ang = ang
Bullet.speed = speed
Bullet.AddLast SBullet 'Добавляем объект в список
Return Bullet 'Возвращаем объект.
End Function

End Type
[/blitz]

Создаем пулю. Чтобы создать, нужно написать:
TBullet.CreateBullet (x,y,поворот пули, скорость в px)
Правда, делать мы это будем в методе обновлении игрока.

[blitz]
Type TBlood Extends TEntity 'Объявляем тип.
Field X#,Y# 'Положение пули.
Field Ang 'Поворот.
Field Alpha# 'Прозрачность крови.
Field AlphaM# 'Как быстро будет кровь становится прозрачнее

Method Update() 'Цикл, где будут проходить все действия для крови.
пока здесь ничего не пишем, но сделаем метку.
Function CreateBlood:TBlood(x#,y#,m#) 'Функция для создания крови.
Local Blood:TBlood=New TBlood 'Создаем игрока.
Blood.x = x
Blood.y = y
Blood.alpham = m
Blood.alpha = 1
Blood.ang = Rand (360)
Blood.AddLast SBlood 'Добавляем объект в список
Return Blood 'Возвращаем объект.
End Function

End Type
[/blitz]

Типы все похожи ,не правда ли? То же самое и с кровью. Только мы добавили несколько новых значений. Значение alpham, alpha.
Ang у нас будет каждый раз разное. Чтобы кровь была не похоже друг на друга, каждый раз рисуем ее в случайном повороте.

Alpha - при зарисовке будет указыватся, на сколько прозрачной будет кровь. Так же будет как "счетчик". Постепенно это значение будет уменьшатся на alpham, и когда alpha будет меньше или равна 0 ,то удаляем кровь.

Хе. Вы почти создали основу , "каркас" вашей игры. Осталось не так уж и много...

Правда посмотреть пока не на что...
(Offline)
 
Ответить с цитированием