forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Flight (http://forum.boolean.name/showthread.php?t=16307)

undertaker 08.02.2012 18:27

Flight
 
Эта игра будет из себя представлять что-то на подобие gta1-2. Делается она в в blitz 3D(но сама игра 2D). Линии квестов ещё не существует. Проекту очень нужны програмисты и художники.
Управление WASD и стрелочки.

вот код игры
Код:

Graphics 1366,768,32,1

SetBuffer BackBuffer()

Global x=100
Global y=100
Global speed=3
Global zdorov=100
Global speedc=5
Global cursor=LoadImage("cursor.bmp")
Global polosa=LoadImage("polosa.bmp")
Global Endd=LoadImage("end.bmp")
Global player=LoadImage("1.bmp")
Global ground=LoadImage ("ground1.bmp")
Global house1=LoadImage ("house1.bmp")
Global bot=LoadImage("bot.bmp")
Global car=LoadImage("car1.bmp")
Global cy=Rand(1366)

MaskImage player,0,0,10

TileImage ground,0,0,0

Function updateplayer()
DrawImage player,x,y
MidHandle player
DrawImage player,x,y
DrawImage ground,0,0
DrawImage house1,300,400
DrawImage car,555,cy

f=LoadFont ("courier",40,False,False,False)

MaskImage cursor,255,255,255

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

DrawImage player,x,y



 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
y=y-speed
DrawImage player,x,y
EndIf

If KeyDown(208) Or KeyDown(31)
y=y+speed
DrawImage player,x,y
EndIf


If KeyDown(203) Or KeyDown(30)
x=x-speed
DrawImage player,x,y
EndIf


If KeyDown(205) Or KeyDown(32)
x=x+speed
DrawImage player,x,y
EndIf





SetFont f
Color 255,0,0
Text 10,10,"health = "+ zdorov


;If x=332 Or x=300 Or y=400 Or y=432 Then speed=0
If ImagesCollide(player,x,y,0,car,555,cy,0) Then zdorov=zdorov-4
If zdorov<0 Then DrawImage endd,0,0

 




End Function
While Not KeyDown(1)
updateplayer()
Flip
Cls


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



 





Wend

End

Очень бы хотелось сделать векторное передвижение. Кто может, помогите(желательно на примере этой программы).

Spy4433 08.02.2012 18:39

Ответ: Flight
 
player_angle=atan2(mousex()-playerx,mousey()-playery)
playerx=playerx+cos(player_angle)
playery=playery+sin(player_angle)

вот вроде без ошибок должно быть дальше думаю сам докуришь
и кстати рисовать плеера я думаю надо только один раз
Код:

Graphics 1366,768,32,1

SetBuffer BackBuffer()

Global x=100
Global y=100
Global speed=3
Global zdorov=100
Global speedc=5
Global cursor=LoadImage("cursor.bmp")
Global polosa=LoadImage("polosa.bmp")
Global Endd=LoadImage("end.bmp")
Global player=LoadImage("1.bmp")
Global ground=LoadImage ("ground1.bmp")
Global house1=LoadImage ("house1.bmp")
Global bot=LoadImage("bot.bmp")
Global car=LoadImage("car1.bmp")
Global cy=Rand(1366)

MaskImage player,0,0,10
TileImage ground,0,0,0

Function updateplayer()
DrawImage player,x,y
MidHandle player
DrawImage player,x,y
DrawImage ground,0,0
DrawImage house1,300,400
DrawImage car,555,cy
f=LoadFont ("courier",40,False,False,False)
MaskImage cursor,255,255,255
px=x+speed*deltax
py=y+speed*deltay
DrawImage player,x,y
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
y=y-speed
DrawImage player,x,y
EndIf
If KeyDown(208) Or KeyDown(31)
y=y+speed
DrawImage player,x,y
EndIf
If KeyDown(203) Or KeyDown(30)
x=x-speed
DrawImage player,x,y
EndIf
If KeyDown(205) Or KeyDown(32)
x=x+speed
DrawImage player,x,y
EndIf
SetFont f
Color 255,0,0
Text 10,10,"health = "+ zdorov
;If x=332 Or x=300 Or y=400 Or y=432 Then speed=0
If ImagesCollide(player,x,y,0,car,555,cy,0) Then zdorov=zdorov-4
If zdorov<0 Then DrawImage endd,0,0
End Function
While Not KeyDown(1)
updateplayer()
Flip
Cls
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

Wend
End

красным выделено то что не нужно т.к есть то ,что выделено зеленым

undertaker 08.02.2012 18:59

Я раньше не создавал тему

А как векторное перемещение сделать?(на примере)

Nikich 08.02.2012 19:49

Ответ: Flight
 
код от Spy4433 не имеет смысла. Человек за мышкой двигаться не должен.

Spy4433 08.02.2012 20:21

Ответ: Flight
 
ну код от spy4433 имеет смысл т.к направление задается по углу
осталось только пошевелить "МОЗГОМ",а как будешь задавать этот угл неважно от мыши или от клавиш, а может от джостика


я так полагаю в итоге должно получится управление как в crimsonland?


Код:

if keyhit(UP) then
speedy#=-1
endif

playery#=playery#+speedy#
speedy=speedy*0.99


Nikich 08.02.2012 20:42

Ответ: Flight
 
в итоге должно получится совсем не так. Нажал вверх, идет вверх, нажал влево, идет влево. Так что угл вообще никого не волнует. Ему векторное перемещение сделать надо.

undertaker 08.02.2012 21:24

Ответ: Flight
 
А как сделать так, чтобы гг поворачивался за курсором, но шел на wasd?

Spy4433 08.02.2012 21:26

Ответ: Flight
 
картинку крутить но это тормзно!
можно сделать так
dim player(359)
for t=0 to 259
player(t)=loadimage("player.bmp")
rotateimage player(t),t
next

drawimage player(playerangl),playerx,playery

undertaker 08.02.2012 21:33

Ответ: Flight
 
Тогда будет просто одна картинка ворочаться? И как это прицепить к курсору?

Spy4433 08.02.2012 21:34

Ответ: Flight
 
что бы узнать угл я писал выше

player_angle=atan2(mousex()-playerx,mousey()-playery)

Nikich 08.02.2012 21:47

Ответ: Flight
 
Способ логичный, но плохо подходит к применению. Тут вся фишка в MaskImage. Дело в том, что она и так не очень хорошо маскирует цвета в сложных фигурах, а если еще и повернута картинка на 1 градус, то и вовсе кошмар будет. Я сам так делал, правда с у меня на 45 градусов, и вокруг главного героя была незакрашеная территория. Я это пофиксил тем, что маску поставил похожу на задний фон, но тебе это вряд ли подойдет.
Но тебе это еще рано, ты бы векторное перемещение сделал, для начала. И даешь людям демку с блэкджеком и шлюхами!

undertaker 08.02.2012 22:22

Ответ: Flight
 
В общем я завтра попробую сделать демку. С нормальным перемещением.

Nikich 08.02.2012 23:03

Ответ: Flight
 
А шлюхи и блэкджек уже есть?
И можно ли код в оффтоп поставить? Уж больно он места много занимает, мотать не удобно страницу.

Randomize 08.02.2012 23:28

Ответ: Flight
 
Так, ребята, этому в проектах не место.

undertaker 08.02.2012 23:43

Ответ: Flight
 
Почему?

Reks888 09.02.2012 00:16

Ответ: Flight
 
Слишком рано запостил.
Обычно проэкты на таких ранних стадиях дохнут как мухи. В профилактичеких целях не рекомендуется создавать тему которая в 85% случаев будет потом пустовать из-за того что проэкт заброшен.

Randomize 09.02.2012 00:34

Ответ: Flight
 
В проектах лежит то, во что можно играть (ну как минимум есть что запустить/погонять).

undertaker 09.02.2012 19:32

Ответ: Flight
 
Graphics 0,0,32,1

SetBuffer BackBuffer()

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


Global dmgC#
Global x=100
Global y=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 ground=LoadImage ("ground1.bmp")
Global house1=LoadImage ("house1.bmp")
Global bot=LoadImage("bot.bmp")
Global car=LoadImage("car1.bmp")
Global cy=Rand(1366)

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()

DrawImage player,x,y
MidHandle player
DrawImage player,x,y
DrawImage ground,0,0
DrawImage house1,300,400
DrawImage car,555,cy



f=LoadFont ("courier",40,False,False,False)

MaskImage cursor,255,255,255

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

DrawImage player,x,y



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()

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


If KeyDown(200) Or KeyDown(17) Then
y=y-speed
EndIf

If KeyDown(208) Or KeyDown(31)
y=y+speed
EndIf


If KeyDown(203) Or KeyDown(30)
x=x-speed
EndIf


If KeyDown(205) Or KeyDown(32)
x=x+speed
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()
Flip
Cls


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







Wend

End

Nuprahtor 09.02.2012 19:38

Ответ: Flight
 
Не у всех есть Blitz3D чтобы просмотреть игру. А даже если и есть, то, я более чем уверен, у них не будет ресурсов, на которые ссылается код.

undertaker 09.02.2012 20:45

Ответ: Flight
 
Вложений: 1
вот первая версия игры. Только есть одна вещь, которая портит вид игры. Это то, что у ГГ справа непонятная полоска, и я не знаю, как ее убрать=(
помогите кто сможет

Nikich 09.02.2012 21:21

Ответ: Flight
 
Интересно, а как горит код?

Colossus 09.02.2012 21:27

Ответ: Flight
 
Перепиши на бумагу свой Vivo - подожги и увидишь как горит код

Nikich 09.02.2012 21:30

Ответ: Flight
 

Мой говно-код даже гореть с багами будет:)

Randomize 10.02.2012 08:45

Ответ: Flight
 
Разведённый срач удалён. Жалобная книга для несогласных вы знаете где.

Автору темы:
Продолжай, экспериментируй, копи опыт и главное не обращай внимания на тех, кто пытается самоутвердиться принижая тебя. Тот опыт который ты сейчас получаешь - бесценен. Успехов в разработке!

По поводу полоски:
1) Попробуй делать MaskImage перед RotateImage
2) TFormFilter поставить 0 перед RotateImage (правда качество изображения будет хуже)

undertaker 10.02.2012 18:46

Ответ: Flight
 
Опять проблема:( Я хочу сделать выстрел
for pyluaY=1 to5000
pulyaX=Tan (player_ungle)*pulyay
drawimage pulya, pulyax, pulyay
next...
И не работает.подскажите, кто знает

FireOwl 10.02.2012 18:55

Ответ: Flight
 
У тебя сделано так, что пока летит пуля, ни фига больше не происходит. Даже флипа нет (flip), т.е. и drawimage впустую вызывается.
Обновление координат пули должно происходить в общем, главном цикле программы.
Вроде:
<главный цикл>
--<обновляем все, что должно обновляться от пуль, до игрока>
--<теперь рисуем все, что должно быть вообще нарисовано в кадре, по порядку>
--<flip - вывели кадр на экран>
<конец главного цикла, один кадр отрисован, возвращаемся к его началу>

P.S. Совет. Русские слова латиницей - ужасно смотрятся в коде, и еще ужаснее читаются. Время на разбирание кода вырастает в разы.
Полезная ссылка: http://translate.google.com/
Пуля по английски: bullet
Угол игрока: player angle

undertaker 10.02.2012 18:59

Ответ: Flight
 
нет. я сюда так написал pulya чтобы нагляднее было, а что касается angle - это моя опечатка))

undertaker 10.02.2012 20:24

Ответ: Flight
 
Очень нужна моделька дома(типо Пятиэтажки) сверху 2д. Размерами 150 на 440

Nikich 10.02.2012 21:16

Ответ: Flight
 

2D модель? Впервые слышу:) Может ты имел ввиду картинку?

undertaker 11.02.2012 00:25

Ответ: Flight
 
Ну да, картинку:)

undertaker 11.02.2012 00:39

Ответ: Flight
 
Я хочу сделать, чтобы гг стрелял в сторону курсора, только ничего не получается:( подскажите, кто знает,заранее благодарен

Randomize 11.02.2012 00:52

Ответ: Flight
 
Цитата:

Сообщение от undertaker (Сообщение 219156)
Я хочу сделать, чтобы гг стрелял в сторону курсора, только ничего не получается:( подскажите, кто знает,заранее благодарен

1) Узнаём угол поворота от игрока до курсора
Код:

Local fang# = ATan2(MouseY() - player_y, MouseX() - player_x)
Где player_x и player_y координаты игрока.

2) Зная угол мы можем создавать пули
Абстрактно пули у нас такие:
Код:

Type TBullet
  Field x#, y#, angle#
End Type

angle# - угол поворота пули

Создавать новую будем так:
Код:

Local b.TBullet = New TBullet
b.x = player_x
b.y = player_y
b.angle = fang ; Это там раньше у нас угол который мы получали

3) Отлично! Пуля создана теперь надо её "оживить"
Код:

Function TBullet_Update()
  For b.TBullet = Eachin TBullet
      b\x = b\x + Cos( b\angle ) * 2 ;- поменяй, это скорость пули
      b\y = b\y + Sin( b\angle ) * 2 ;- это тоже :)

      ; Проверяем если пуля улетела за экран то удаляем
      If b\x<0 Or b\x>GraphicsWidth() Or b\y<0 Or b\y>GraphicsHeight() Then
            Delete b
      End If
  Next
End Function

Function TBullet_Draw()
  For b.TBullet = Eachin TBullet
      Oval(b\x - 3, b\y - 3, 6, 6)
  Next
End Function

Данные ф-ции надо вызывать в главном цикле.
Большая просьба - изучи, подумай как это работает.

* мог что-либо напутать. Писал в браузере. На блице давно ничего не писал.

Nikich 11.02.2012 11:58

Ответ: Flight
 
Да, там наверное не "Eachin", а просто "Each"(на сколько я знаю "Eachin" это в BlitzMax). Но я могу ошибаться, так как сам всегда "Each" пользуюсь.

undertaker 11.02.2012 12:03

Ответ: Flight
 
Чет все равно не особо получается

Nikich 11.02.2012 12:09

Ответ: Flight
 
Код:

if mousedown(1) then
...

Ставил?

undertaker 11.02.2012 13:41

Ответ: Flight
 
Конечно

Nikich 11.02.2012 14:19

Ответ: Flight
 
Кидай весь код.

undertaker 11.02.2012 15:23

Ответ: Flight
 
Graphics 1366,768,32,1

SetBuffer BackBuffer()



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 bullet
Field bulletx
Field bullety
End Type




Global bx=140
Global by=100
Global chn=Rnd(4)
Global w=LoadImage("w.bmp")
Global bullet=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")
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()
Flip
Cls

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
For bullety=1 To 5000
bulletx=Tan(player_angle)*bullety
DrawImage bullet,bulletx,bullety
Next


EndIf Wend

undertaker 11.02.2012 15:24

Ответ: Flight
 
не знаю, куда это присобачить(((помогите

Nikich 11.02.2012 16:27

Ответ: Flight
 
Так ты ведь ничего не вставил. Если кода нету он работать не будет.

undertaker 11.02.2012 16:43

Ответ: Flight
 
Graphics 1366,768,32,1

SetBuffer BackBuffer()



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
by = by + Sin( b\angle ) * 2

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

Function TBullet_Draw()
For b.TBullet = Each TBullet
Oval(bx - 3, 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")
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()
Flip
Cls

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









Local fang# = ATan2(MouseY() - y, MouseX() - x)
Local b.TBullet = New TBullet
bx = x
by = y
angle = fang ;
If MouseDown(1) Then Tbullet_update()
If MouseDown(1) DrawImage tbullet,bx,by

Wend - вот как-то так. но не работает. за ошибки не судите строго, я еще начинающий. помогите пожалуйста

Nikich 11.02.2012 17:20

Ответ: Flight
 
Тут очевидная ошибка. Ты пулю создаёшь просто так. Надо
Код:

Local b.TBullet = New TBullet
 bx = x
 by = y
 angle = fang

после If mousedown(1) then ставить.

undertaker 11.02.2012 17:50

Ответ: Flight
 
If MouseDown(1) Then
Local b.Tbullet=New Tbullet
bx=x
by=y
angle = fang

EndIf Wend

undertaker 11.02.2012 17:52

Ответ: Flight
 
И ничего

Nikich 11.02.2012 17:59

Ответ: Flight
 
Кинь картинки и .bb файл, я посмотрю что не так.

undertaker 11.02.2012 18:33

Ответ: Flight
 
Вложений: 1
вот код игры и вложения

Nikich 11.02.2012 19:22

Ответ: Flight
 
Вот так:
Код:

Graphics 1600,900,1

SetBuffer BackBuffer()



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(angle)*2
      by = by -Sin(angle)*2

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

Function TBullet_Draw()
  For b.TBullet = Each TBullet
      Oval(bx - 3, 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 angle
Global player=LoadImage("1.bmp")
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


If MouseDown(1) Then
b.Tbullet=New Tbullet
bx=x
by=y
angle=player_angle

EndIf
 
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

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



Wend


Program23 11.02.2012 19:39

Ответ: Flight
 
Цитата:

Сообщение от undertaker (Сообщение 219202)
вот код игры и вложения

Если у персонажа все еще отображается белая полоса сбоку,то это из-за того что маска неоднородна.
В архиве нет exe)

Nikich 11.02.2012 19:49

Ответ: Flight
 
Вложений: 1
Вот exe. Думаю, undertaker не против :) .

Spy4433 11.02.2012 19:58

Ответ: 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

И незабудь тыкнуть на Полезно если помог

Nikich 11.02.2012 20:02

Ответ: Flight
 
Вложений: 1
Медленно, бро. Да и тут дельта-тайминг нужен, а не Timer'ы.

Spy4433 11.02.2012 20:24

Ответ: Flight
 
пока и так сойдет :)

Randomize 12.02.2012 02:03

Ответ: Flight
 
Вложений: 1
Накатал пример, который демонстрирует взаимодействие игрока с врагами.
Можно стрелять, ходить, стрелять, умирать :D
Управление: WSAD + MOUSE
Код:

Graphics(800,600,0,2)
SetBuffer(BackBuffer())
SeedRnd(MilliSecs())
SetFont(LoadFont("Tahoma cyr", 16))


; Player position
Global player_x# = GraphicsWidth() * 0.5
Global player_y# = GraphicsHeight() * 0.5
Global player_shotdelay = 350 ; Delay per shot
Global player_shottime = 0
Global player_hp = 100
Global player_maxhp = 100
Global player_score = 0

Global spawner_level = 1
Global spawner_time = 0
Global spawner_delay = 6200


; Loop
While Not KeyHit(1)
       
        ;====== UPDATE PPLAYER =====
        ; Calc view angle
        Local fang# = ATan2(MouseY() - player_y, MouseX() - player_x)
        ; Create bullet while mouse button pressed and shot_time
        If MouseDown(1) And player_shottime < MilliSecs() Then
                TBullet_Create(player_x, player_y, fang)
                player_shottime = MilliSecs() + player_shotdelay
        EndIf
        ; movement
        Local vx = (KeyDown(32) - KeyDown(30))
        Local vy = (KeyDown(31) - KeyDown(17))
        Local mang# = ATan2(vy, vx)
        If (Abs(vx) + Abs(vy)) Then
                player_x = player_x + Cos(mang) * 3
                player_y = player_y + Sin(mang) * 3
        EndIf
       
       
        ;====== Enemy spawner ====== 
        If spawner_time < MilliSecs() Then
                Local i, sx%, sy%
                For i = 0 To spawner_level
                        sx = (Rand(100)>50) * GraphicsWidth()
                        sy = (Rand(100)>50) * GraphicsHeight()
                    TEnemy_Create(sx, sy, 1 + Rand(spawner_level))
                Next
               
                spawner_time = MilliSecs() + spawner_delay
                spawner_level = spawner_level + 1
        EndIf


        TBullet_Update() ; update all bullets
    TEnemy_Update() ; update all enemies
         

        TBullet_Draw() ; Draw all bullets
        TEnemy_Draw(); Draw all enemies
       
        ;-- Draw player
        If (player_hp > 0) Then       
                Line(player_x, player_y, player_x + Cos(fang) * 30, player_y + Sin(fang) * 30        )
                Color(255,0,0)
                Oval(player_x - 10,player_y - 10, 20, 20)
                Color(255,255,255)
        Else
                Text(GraphicsWidth()*0.5, GraphicsHeight()*0.5, "YOU SUCK!", True, True)               
        EndIf
       
        Text(5,0, "SCORE: " + player_score+"  " + mang)
        Text(5, 30, "HitPoints: " + player_hp * (player_hp > 0))

        Flip() : Cls()
Wend

EndGraphics
End



Type TBullet
  Field x#, y#, angle#
End Type

Function TBullet_Create(x#, y#, ang#)
        Local this.TBullet = New TBullet
        this\x=x
        this\y=y
        this\angle = ang
End Function

Function TBullet_Update()
  For b.TBullet = Each TBullet
                b\x = b\x + Cos( b\angle ) * 6
                b\y = b\y + Sin( b\angle ) * 6
               
                Local enemy.TEnemy
                For enemy = Each TEnemy
                        Local dist# = Sqr((b\x - enemy\x) ^ 2 + (b\y - enemy\y) ^ 2)
                        If dist < 28 Then
                                enemy\hp = enemy\hp - 1
                                b\x = -1000
                                Exit
                        EndIf
                Next

                If b\x<0 Or b\x>GraphicsWidth() Or b\y<0 Or b\y>GraphicsHeight() Then
            Delete(b)
              EndIf
  Next
End Function

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



Type TEnemy
    Field x#, y#, angle#
        Field hp%
End Type


Function TEnemy_Create(x#, y#, hp)
        Local this.TEnemy = New TEnemy
        this\x = x
        this\y = y
        this\hp = hp
End Function

Function TEnemy_Update()
        Local this.TEnemy
        For this = Each TEnemy
            this\angle = ATan2(player_y - this\y, player_x - this\x)
                this\x = this\x + Cos(this\angle)*2
                this\y = this\y + Sin(this\angle)*2
               
                ; if distance between player and enemy < 40
                If Sqr((this\x - player_x) ^ 2 + (this\y - player_y) ^ 2)<40 Then
                        player_hp = player_hp - 1
                EndIf

               
               
                If this\hp < 1 Then
                        player_score = player_score + 1
                        Delete(this)
                EndIf
        Next
End Function

Function TEnemy_Draw()
        Local this.TEnemy
        For this = Each TEnemy
                Color(60, 104, 24) ; Zombie ;D
            Oval(this\x - 12, this\y - 12, 24, 24)
        Next
        Color(255,255,255)
End Function

Прочти внимательно код - там много приёмов которые тебе пригодятся.

Nikich 12.02.2012 02:13

Ответ: Flight
 
Надо бы его куда-то в другое место поместить. В FAQ может. Он всем пригодится может, не только нубам.

FireOwl 12.02.2012 05:12

Ответ: Flight
 
Зачем так резко? Вспомни свои первые посты, к примеру.
Я думаю, нет ни одного программиста, который сразу стал невообразимо крут, минуя стадию новичка.

Randomize 12.02.2012 05:53

Ответ: Flight
 
Цитата:

Сообщение от FireOwl (Сообщение 219247)
Зачем так резко? Вспомни свои первые посты, к примеру.
Я думаю, нет ни одного программиста, который сразу стал невообразимо крут, минуя стадию новичка.

Это ты кому?

Trazzy 12.02.2012 10:43

Ответ: Flight
 
?Unable to set graphics mode

undertaker 12.02.2012 11:22

Ответ: Flight
 
да, и еще,ник, помнишь, ты мне показывал типо "свою" игру? я нашел точно такую же в интернете и врятли ты сам написал, как ее сделать и код

undertaker 12.02.2012 11:49

Вложений: 1
вот новая версия игры,были добавлены выстрелы.
спасибо за помощь:Randomize,Spy4433:super:

Вот она(новая версия)

Nikich 12.02.2012 14:37

Ответ: Flight
 
Из "своих" игр, у меня только Vivo, но её писал я сам(большую часть, в начале мне очень помогали FireOwl и Nex).
2 FireOwl, я undertaker'a лучше знаю, так что мне позволительно так писать:) Но спорить не буду, все когда-то начинали.
2 undertaker: убери текст под полоской жизни. Плюс, не совсем понятно, что за серые, и более тёмные прямоугольники. Видимо, один из более тёмных это здание, но тогда почему другие - не здания? Либо, это всё здания, но пройти нельзя только через одно.

undertaker 12.02.2012 16:56

Ответ: Flight
 
Эта игра еще на стадии разработки...а что касается здании, я еще ими не занимался

Nikich 12.02.2012 17:30

Ответ: Flight
 
А когда ты собрался исправлять баги, если не сейчас?

undertaker 12.02.2012 21:53

Ответ: Flight
 
Graphics 0,0,32,1

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

b\bx = b\bx- Cos( b\angle ) * 15
b\by = b\by -Sin( b\angle ) * 15
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
DrawImage bullet,b\bx,b\by
Next
End Function
Global bullet=LoadImage("shot.bmp")
Global logo=LoadImage("logo1.bmp")
Global pistol1=LoadImage("pistol1.bmp")
Global ak471=LoadImage("ak-471.bmp")
Global pistolspeed=200000000000000
Global pistol=LoadImage("pistol.bmp")
Global ak47=LoadImage ("ak-47.bmp")
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
MaskImage pistol,255,255,255
MaskImage ak47,255,255,255
MaskImage pistol1,255,255,255
MaskImage ak471,255,255,255

DrawImage car,555,cy

MaskImage cursor,255,255,255
If KeyDown(2) Then pistolspeed=500 DrawImage pistol,110,0
If KeyDown(3) Then pistolspeed=100 DrawImage ak47,110,0

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=GraphicsWidth()
If x>GraphicsWidth() Then x=0
If y<0 Then y=GraphicsHeight()
If y>GraphicsHeight() 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 pistol,110,0
If KeyDown (2) Then DrawImage pistol1,110,0
DrawImage ak47,220,0
If KeyDown (3) Then DrawImage ak471,220,0



If Not ImagesCollide (house1,300,340,0,player,px,py,0) Or ImagesCollide(house2,750,340,0,player,px,py,0) Or ImagesCollide(house2,-200,340,0,player,px,py,0) Or ImagesCollide(house1,750,340,0,player,px,py,0) Or ImagesCollide(house2,1250,340,0,player,px,py,0) Or ImagesCollide(house2,750,-90,0,player,px,py,0) Or ImagesCollide(house2,950,-90,0,player,px,py,0) Then
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)

DrawImage polosa,538,83

If 1=1 Then cy=cy+speedc#
If cy<0 Then cy=GraphicsHeight()
If cy>GraphicsHeight() 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 KeyDown(2) Then pistolspeed=500 DrawImage pistol,110,0
If KeyDown(3) Then pistolspeed=100 DrawImage ak47,110,0

If MouseDown(1) Then
If MilliSecs()>timer_shoot+pistolspeed Then
timer_shoot=MilliSecs()
Local b.Tbullet=New Tbullet

b\bx=x
b\by=y
b\angle =player_angle+Rnd(-1,1)

If ImagesCollide(house1,300,340,0,bullet,b\bx,b\by,0) Then
Delete b

EndIf
EndIf
EndIf
Wend


опять проблема: хотел сделать так, чтобы пули не пролетали сквозь сдания, написал

If ImagesCollide(house1,300,340,0,bullet,b\bx,b\by,0) Then
Delete b

но куда это не "присобачу" не работает(((помогите

Nikich 13.02.2012 00:05

Ответ: Flight
 
Больше скобок! Три очень мало))))))))))))))))))))


Часовой пояс GMT +4, время: 01:41.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot