Показать сообщение отдельно
Старый 07.12.2006, 13:11   #1
mudriy
Нуждающийся
 
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений
(для 0 пользователей)
необходим совет

Вот код:
Главный цикл:
Repeat
 If KeyDown(203) ;поворот <-
  pa#=pa#+1
 End If
 If KeyDown(205) ;поворот ->
  pa#=pa#-1
 End If
 If KeyDown(200) ;вперед
  xa1#=xa#
  za1#=za#
  xa#=xa#+g#*Cos(pa#+90)
  za#=za#+g#*Sin(pa#+90)
  If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31) 
   xa#=xa1#
   za#=za1#
  EndIf
 End If
 If KeyDown(208) ;назад
  xa1#=xa#
  za1#=za#
  xa#=xa#-g#*Cos(pa#+90)
  za#=za#-g#*Sin(pa#+90)
  If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31)
   xa#=xa1#
   za#=za1#
  EndIf
 End If
 If KeyDown(18) ;стрейф ->
  xa1#=xa#
  za1#=za#
  xa#=xa#+g#*Cos(pa#)
  za#=za#+g#*Sin(pa#)
  If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31) 
   xa#=xa1#
   za#=za1#
  EndIf
 End If
 If KeyDown(17) ;стрейф <- 
  xa1#=xa#
  za1#=za#
  xa#=xa#-g#*Cos(pa#)
  za#=za#-g#*Sin(pa#)
  If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31)
   xa#=xa1#
   za#=za1#
  EndIf
 End If
 If KeyHit(1) ;выход
  Exit
 End If
 If n>=1
   polet_igrok()
  ;Animate q,1,n/2,0,0
 EndIf
 If KeyHit(57) ;выстрел 
  If n=0 Then vistrel_igrok(xa#,za#,pa#)
 End If
 RotateEntity q,0,pa#+180,0
 PositionEntity q,xa#,0,za#
 RotateEntity c,90,pa#,0
 PositionEntity c,xa#, 10,za# ; вид сверху
 UpdateWorld 
 RenderWorld
 Flip
Forever
Процедуры:
Type vi
Field x#,y#,p#
End Type
Global n=0
Global st1=CreateSphere(5)
HideEntity st1
EntityColor st1,255,255,255
ScaleEntity st1,0.15,0.15,0.15
Function vistrel_igrok(vix#,viy#,vip#)
 st.vi=New vi
 st\x#=vix#
 st\y#=viy#
 st\p#=vip#
 PositionEntity st1,st\x#,1,st\y#
 ShowEntity st1
 n=1
End Function
Function polet_igrok()
 For st.vi=Each vi
  If n=20 
   Delete st
   HideEntity st1
   n=0
  Else
   n=n+1
   st\x#=st\x#+5*g#*Cos(st\p#+90)
   st\y#=st\y#+5*g#*Sin(st\p#+90)
   PositionEntity st1,st\x#,1,st\y#
  EndIf 
 Next 
End Function
не понимаю, почему при нажатии вперед+пов_влево(+стрейф_любой) или назад+...+... - выстрела не происходит (if -> false(?!)) ... если кто знает, объясните пожалуйста... вперед+вправо(+ любой_стрейф) - работают прекрасно...
(Offline)
 
Ответить с цитированием