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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 19.09.2010, 23:52   #1
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
Траектория полета

Наверное, не надо было это выкладывать. Просто делаю игру типа Worms, нужно было разобраться с траекторией полета снаряда.

Функции нужны для расчета траектории падения снаряда.
Type TPath
Field angle#
Field power#,maxpower#
Field plotx#,ploty#
Field plotxold#,plotyold#
End Type


Graphics 640,480,32,2
SetBuffer BackBuffer()

angle# = -45
power# = 5
maxpower# = 10

mypath = Path_Add(angle,power,maxpower,50,200)

While Not KeyDown(1)
	
	Cls
	
		If KeyDown(203) Then angle = angle - 10 ;Left arrow
		If KeyDown(205) Then angle = angle + 10 ;Right arrow
			If angle<-85 Then angle = -85
			If angle>-5 Then angle = -5
	
		If KeyDown(208) Then power = power - 1 ;Down arrow
		If KeyDown(200) Then power = power + 1 ;Up arrow
			If power<1 Then power = 1
			If power>10 Then power = 10

;Drawing path
		Path_SetAngle mypath,angle
		Path_SetPower mypath,power
		
		Color 255,0,0
			tmp_limited=0
			Path_Update 1
		For i = 1 To 75
			Path_Update 1
			Line Path_GetXOld(mypath),Path_GetYOld(mypath),Path_GetX(mypath),Path_GetY(mypath)
			If Path_GetY(mypath)>Path_GetYOld(mypath) And tmp_limited=0 Then
				tmp_limited = 1
				Color 255,255,255
				Line Path_GetXOld(mypath),Path_GetYOld(mypath)-10,Path_GetXOld(mypath),Path_GetYOld(mypath)+10
				Text Path_GetXOld(mypath),Path_GetYOld(mypath)-20,"Vertical limit - "+(Path_GetYOld(mypath)-200),1,1
				Color 255,0,0
			End If
		Next
	Path_SetX mypath,50
	Path_SetY mypath,200

;Drawing interface
		Color 255,255,255
		
		Line 50,200,100,200
		Line 50,200,50,150
		Line 50,200,50+Cos(angle)*50,200+Sin(angle)*50
		Text 75,210,"0",1,1
		Text 40,175,"-90",1,1
		Text 75,225,"Angle is "+angle,1,1
		Text 75,240,"(To change use <- and ->)",1,1
		
		Color 0,0,0
		Rect 550,150,40,100
		Color 128,128,128
		Rect 550,150,40,power*(100/maxpower)
		Color 255,255,255
		Rect 550,150,40,100,0
		Line 500,150,550,150
		Text 525,140,Float(0),1,1
		Line 500,250,550,250
		Text 525,260,maxpower + " - max power",1,1
		If power<maxpower
			Line 500,150+power*(100/maxpower),600,150+power*(100/maxpower)
			Text 525,140+power*(100/maxpower),power,1,1
		End If
		Text 550,285,"Use Up and Down to change",1,1
		
	

	Flip

	WaitKey

Wend

End



Function Path_Add(angle#,power#,maxpower#,x#=0,y#=0)
	Path.TPath = New TPath
	Path\angle = angle
	Path\power = power
	Path\maxpower = maxpower
	Path\plotx = x
	Path\ploty = y
	Return Handle(Path)
End Function

Function Path_Delete(pathindex)
	Path.TPath = Object.TPath(pathindex)
	If Path<>Null Then Delete Path
End Function

	Function Path_SetAngle(pathindex,angle#)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Path\angle = angle
		End If
	End Function

	Function Path_SetPower(pathindex,power#)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Path\power = power
		End If
	End Function

	Function Path_SetMaxPower(pathindex,maxpower#)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Path\maxpower = maxpower
		End If
	End Function

	Function Path_SetX(pathindex,x#)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Path\plotx = x
		End If
	End Function

	Function Path_SetY(pathindex,y#)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Path\ploty = y
		End If
	End Function

	Function Path_GetAngle#(pathindex)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Return Path\angle
		End If
	End Function

	Function Path_GetPower#(pathindex)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Return Path\power
		End If
	End Function

	Function Path_GetMaxPower#(pathindex)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Return Path\maxpower
		End If
	End Function

	Function Path_GetX#(pathindex)
	Path.TPath = Object.TPath(pathindex)
	If Path<>Null
		Return Path\plotx
	End If
	End Function

	Function Path_GetY#(pathindex)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Return Path\ploty
		End If
	End Function

	Function Path_GetXOld#(pathindex)
	Path.TPath = Object.TPath(pathindex)
	If Path<>Null
		Return Path\plotxold
	End If
	End Function

	Function Path_GetYOld#(pathindex)
		Path.TPath = Object.TPath(pathindex)
		If Path<>Null
			Return Path\plotyold
		End If
	End Function

Function Path_Update(timecoef#=1)
	For Path.TPath = Each TPath
		Path\plotxold = Path\plotx
		Path\plotyold = Path\ploty
		
		Path\angle = Path\angle + (Path\maxpower/Path\power)*timecoef
		If Path\angle > 90 Then Path\angle = 90
		
		Path\plotx = Path\plotx+Cos(Path\angle)*Path\power*timecoef
		Path\ploty = Path\ploty+Sin(Path\angle)*Path\power*timecoef
		
	Next
End Function
Упд:
Path_Add(angle#,power#,maxpower#,x#=0,y#=0) где angle - угол поворота, power - сила, maxpower - максимальная сила, x и y соотв. координаты
Добавляет траекторию и возвращает хендл.

Path_Delete(pathindex) где pathindex - хендл траектории
Удаляет траекторию

Path_SetAngle(pathindex,angle#) где pathindex - хендл, а angle - угол поворота
Устанавливает поворот

Path_SetPower(pathindex,power#) где pathindex - хендл, а power - сила
Устанавливает силу

Path_SetMaxPower(pathindex,maxpower#) где pathindex - хендл, а maxpower - макс. сила
Устанавливает макс. силу

Path_SetX(pathindex,x#) где pathindex - хендл, а x - соотв. координата
Устанавливает x координату

Path_SetY(pathindex,x#) где pathindex - хендл, а y - соотв. координата
Устанавливает y координату

Path_GetAngle(pathindex) где pathindex - хендл
Возвращает поворот

Path_GetPower(pathindex) где pathindex - хендл
Возвращает силу

Path_GetMaxPower(pathindex) где pathindex - хендл
Возвращает макс. силу

Path_GetX(pathindex) где pathindex - хендл
Возвращает x координату

Path_GetY(pathindex) где pathindex - хендл
Возвращает y координату

Path_GetXOld(pathindex) где pathindex - хендл
Возвращает доапдейтовую(старую) x координату

Path_GetYOld(pathindex) где pathindex - хендл
Возвращает доапдейтовую(старую) y координату

Path_Update(timecoef#=1) где timecoef - коэфициент скорости времени
Обновление
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
kdm (27.09.2010)
Старый 19.09.2010, 23:57   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Траектория полета

проутпил - пыщьщпыщь я
идиойд@собакойд

дели@умножай / * добавляй@вычитай +-
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 20.09.2010, 00:03   #3
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Траектория полета

хм.. Если уж пост в полезных функциях, то следовало бы ожидать что ты выложишь функу которая на входе получает точку начала движения, точку канчала движения, плюс параметры управляющие траекторией !! Так не ж тут кусок кода твоей игры без объяснений и камментов !! Не считаю полезным копатся в этом коде !!

Пс: в принципе код хорошо читаемый !! Без особого быдлоприкладства !! даешь описание и будет полезно !!
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо IGR за это полезное сообщение:
is.SarCasm (20.09.2010), Mr_F_ (20.09.2010), Randomize (20.09.2010)
Ответ


Опции темы

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

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


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


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