Тема: Flight
Показать сообщение отдельно
Старый 11.02.2012, 19:58   #50
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Flight

вот вроде все норм пашет
добавил таймер стрельбы
добавил таймер для ограничения фпс
пометил ошибки
Graphics 1024,768,32,2

SetBuffer BackBuffer()
FPS=CreateTimer(60); создаем таймер для ограничения фпс это нужно что бы количество кадров\сек был стабильно


Type player 
Field x,px,deltax
Field y,py,deltay
End Type 


Type car 
Field x,px,deltax
Field y,py,deltay
End Type

Type TBullet
   Field bx#, by#, angle#
End Type

Function TBullet_Update()
   For b.TBullet = Each TBullet
		;bx = bx + Cos( b\angle ) * 2 твоя версия ошибку видишь 
       b\bx = b\bx- Cos( b\angle ) * 4 ;тут меняем + на - чтобы пуля летела в нужное направлние 
       b\by = b\by -Sin( b\angle ) * 4 ;тут меняем + на - чтобы пуля летела в нужное направлние 

             If b\bx<0 Or b\bx>GraphicsWidth() Or b\by<0 Or b\by>GraphicsHeight() Then
            Delete b
       End If
   Next
End Function

Function TBullet_Draw()
   For b.TBullet = Each TBullet
       Oval(b\bx - 3, b\by - 3, 6, 6)
   Next
End Function


Global bx=140
Global by=100
Global chn=Rnd(4)
Global w=LoadImage("w.bmp")
Global Tbullet=LoadImage("shot.bpm")
Global dmgC#
Global y=100
Global x=100
Global speed#=3
Global zdorov#=100
Global speedc#=5
Global hp100=LoadImage("hp100.bmp")
Global hp80=LoadImage("hp80.bmp")
Global hp60=LoadImage("hp60.bmp")
Global hp40=LoadImage("hp40.bmp")
Global hp20=LoadImage("hp20.bmp")
Global cursor=LoadImage("cursor.bmp")
Global polosa=LoadImage("polosa.bmp")
Global Endd=LoadImage("end.bmp")
Global player=LoadImage("1.bmp")
Global player_angle ;добавим в глобал что бы при стрельбе получить угол плеера
TFormFilter enable=0
RotateImage player,90
MidHandle player
Global ground=LoadImage ("ground1.bmp")

Global house1=LoadImage ("house1.bmp")
Global house2=LoadImage ("house2.bmp")


Global car=LoadImage("car1.bmp")
Global cy=Rand(1366)
Dim playerg(361)
For t=0 To 361 
playerg(t)=CopyImage(player)
MaskImage playerg(t),0,0,0
RotateImage playerg(t),t
Next

MaskImage hp100,255,255,255
MaskImage hp80,255,255,255
MaskImage hp60,255,255,255
MaskImage hp40,255,255,255
MaskImage hp20,255,255,255

MaskImage player,0,0,10

TileImage ground,0,0,0

Function updateplayer()
player_angle=ATan2(MouseY()-y,MouseX()-x)+180
 
DrawImage ground,0,0
DrawImage w,700,100

DrawImage house1,300,340
DrawImage house2,750,340
DrawImage house2,-200,340
DrawImage house1,750,340
DrawImage house2,1250,340
DrawImage house2,750,-90
DrawImage house2,950,-90
DrawImage house2,15,-90
DrawImage house2,0,-90

DrawImage car,555,cy

MaskImage cursor,255,255,255


px=x+speed*deltax
py=y+speed*deltay

DrawImage playerg(Int(player_angle)),x,y
Text 0,10,player_angle

If x<0 Then x = 1366
If x>1366 Then x = 0
If y<0 Then y = 768
If y>768 Then y = 0

cursorX=MouseX() 
cursorY=MouseY() 
DrawImage cursor,MouseX(),MouseY() 

If KeyDown(200) Or KeyDown(17) Then
deltay=-1

EndIf 

If KeyDown(208) Or KeyDown(31)
deltay=1

EndIf

If KeyDown(203) Or KeyDown(30)

deltax=-1
EndIf

If KeyDown(205) Or KeyDown(32)
deltax=1

EndIf

px=x+speed#*deltax
py=y+speed#*deltay

;DrawImage house1,300,340
;DrawImage house2,750,340
;DrawImage house2,-200,340
;DrawImage house1,750,340
;DrawImage house2,1250,340
;DrawImage house2,750,-90
;DrawImage house2,950,-90
;DrawImage house2,15,-90
;DrawImage house2,0,-90


If Not ImagesCollide (house1,300,340,0,player,px,py,0) 
x=px
y=py
EndIf 





If ImagesCollide(player,x,y,0,car,555,cy,0) Then zdorov#=zdorov#-2
If zdorov#>80 And zdorov#=<100 Then DrawImage hp100,5,5
If zdorov#>60 And zdorov#=<80 Then DrawImage hp80,5,5
If zdorov#>40 And zdorov#=<60 Then DrawImage hp60,5,5
If zdorov#>20 And zdorov#=<40 Then DrawImage hp40,5,5
If zdorov#>0 And zdorov#=<20 Then DrawImage hp20,5,5
If zdorov#<0 Then DrawImage endd,0,0



End Function 
While Not KeyDown(1)
updateplayer()
TBullet_Update()
TBullet_Draw()
Flip 
Cls
WaitTimer(FPS) ;ограничение FPS

DrawImage polosa,538,83

If 1=1 Then cy=cy+speedc#
If cy<0 Then cy = 768
If cy>768 Then cy = 0
If ImagesCollide(polosa,538,86,0,car,555,cy,0) Then speedc#=1
If Not ImagesCollide(polosa,538,86,0,car,555,cy,0) Then speedc#=5



If MouseDown(1) Then 
If MilliSecs()>timer_shoot+200 Then
timer_shoot=MilliSecs()
Local b.Tbullet=New Tbullet
;bx=x и снова ошибка 
b\bx=x
b\by=y
b\angle =player_angle+Rnd(-5,5)
EndIf 
EndIf Wend
И незабудь тыкнуть на Полезно если помог
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием