Часть 5. Боги ООП

Богами мы конечно не станем, рано нам. А вот об основах ООП в Blitzmax я вам расскажу.
Из минусов - у нас нету деструкторов и конструкторов, поэтому придется исхитриться.
SuperStrict
Global gW:Int=800, gH:Int=600
Graphics gW,gH
SetClsColor 255,255,255
Type TPlayer
 Field x:Float, y:Float, speed:Float
 
 Function Create:TPlayer(_x:Float,_y:Float)
 player:TPlayer = New TPlayer
 player.x=_x
 player.y=_y
 Return player
 End Function
 
 Method update()
 x:+(KeyDown(KEY_D)-KeyDown(KEY_A))*speed
 y:+(KeyDown(KEY_S)-KeyDown(KEY_W))*speed
 If KeyDown(KEY_LSHIFT) 
 speed=6
 Else
 speed=4
 EndIf
 End Method
 
 Method draw()
 SetColor 0,0,0
 DrawOval x-18,y-18,36,36
 SetColor 122,122,255
 DrawOval x-16,y-16,32,32
 SetColor 255,255,255
 End Method
 
End Type 
Global player:TPlayer=TPlayer.Create(gW/2,gH/2)

While Not KeyDown(KEY_ESCAPE)
player.update()
player.draw()
Flip(1)
Cls()
Wend
Вот нынешний код нашей игры. Смысл данного изменения - показать вам ООП, если же вас не устраивает данная парадигма, можете оставить старый код. "Type" - аналог класса из си подобных языков. Поскольку конструктора у нас нету, мы напишем функцию, которая возвращает нам объект типа TPlayer. В нашем типе есть 3 поля - x,y,speed; 2 метода - draw(), update().
Метод вызывается через объект(в нашем случае player), функция - через тип. Как пример "player.update()" - вызываем метод update() для нашего player; "TPlayer.Create()" - вызываем функцию Create() из типа. 

Комментариев нет:

Отправить комментарий