Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 08.02.2012, 18:27   #1
undertaker
Нуждающийся
 
Регистрация: 05.02.2012
Сообщений: 57
Написано 2 полезных сообщений
(для 4 пользователей)
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
Очень бы хотелось сделать векторное передвижение. Кто может, помогите(желательно на примере этой программы).

Последний раз редактировалось SBJoker, 08.02.2012 в 19:52.
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 18:39   #2
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: 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
красным выделено то что не нужно т.к есть то ,что выделено зеленым
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 18:59   #3
undertaker
Нуждающийся
 
Регистрация: 05.02.2012
Сообщений: 57
Написано 2 полезных сообщений
(для 4 пользователей)
Я раньше не создавал тему

А как векторное перемещение сделать?(на примере)
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 19:49   #4
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Flight

код от Spy4433 не имеет смысла. Человек за мышкой двигаться не должен.
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 20:21   #5
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Flight

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


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


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

playery#=playery#+speedy#
speedy=speedy*0.99
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 20:42   #6
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Flight

в итоге должно получится совсем не так. Нажал вверх, идет вверх, нажал влево, идет влево. Так что угл вообще никого не волнует. Ему векторное перемещение сделать надо.
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 21:24   #7
undertaker
Нуждающийся
 
Регистрация: 05.02.2012
Сообщений: 57
Написано 2 полезных сообщений
(для 4 пользователей)
Ответ: Flight

А как сделать так, чтобы гг поворачивался за курсором, но шел на wasd?
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 21:26   #8
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Flight

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

drawimage player(playerangl),playerx,playery
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 21:33   #9
undertaker
Нуждающийся
 
Регистрация: 05.02.2012
Сообщений: 57
Написано 2 полезных сообщений
(для 4 пользователей)
Ответ: Flight

Тогда будет просто одна картинка ворочаться? И как это прицепить к курсору?
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 21:34   #10
Spy4433
ПроЭктировщик
 
Аватар для Spy4433
 
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений
(для 63 пользователей)
Ответ: Flight

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

player_angle=atan2(mousex()-playerx,mousey()-playery)
__________________
форум эт вещь... и почему я раньше им не пользовался?

AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 21:47   #11
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Flight

Способ логичный, но плохо подходит к применению. Тут вся фишка в MaskImage. Дело в том, что она и так не очень хорошо маскирует цвета в сложных фигурах, а если еще и повернута картинка на 1 градус, то и вовсе кошмар будет. Я сам так делал, правда с у меня на 45 градусов, и вокруг главного героя была незакрашеная территория. Я это пофиксил тем, что маску поставил похожу на задний фон, но тебе это вряд ли подойдет.
Но тебе это еще рано, ты бы векторное перемещение сделал, для начала. И даешь людям демку с блэкджеком и шлюхами!
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 22:22   #12
undertaker
Нуждающийся
 
Регистрация: 05.02.2012
Сообщений: 57
Написано 2 полезных сообщений
(для 4 пользователей)
Ответ: Flight

В общем я завтра попробую сделать демку. С нормальным перемещением.
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 23:03   #13
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Flight

А шлюхи и блэкджек уже есть?
И можно ли код в оффтоп поставить? Уж больно он места много занимает, мотать не удобно страницу.
(Offline)
 
Ответить с цитированием
Старый 08.02.2012, 23:28   #14
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,362
Написано 2,474 полезных сообщений
(для 6,860 пользователей)
Ответ: Flight

Так, ребята, этому в проектах не место.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Colossus (09.02.2012), Hurrit (09.02.2012), Nikich (08.02.2012)
Старый 08.02.2012, 23:43   #15
undertaker
Нуждающийся
 
Регистрация: 05.02.2012
Сообщений: 57
Написано 2 полезных сообщений
(для 4 пользователей)
Ответ: Flight

Почему?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com