ЧАСТЬ 4. Создания типов для игры.
Так. завтрашнего дня я не дождался. Решил сделать 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 ,то удаляем кровь.
Хе. Вы почти создали основу , "каркас" вашей игры. Осталось не так уж и много...
Правда посмотреть пока не на что...