Показать сообщение отдельно
Старый 30.12.2012, 16:41   #201
Черный крыс
 
Сообщений: n/a
Ответ: Вопрос-Ответ (для новичков BlitzMax)

Ну например нам нужно двигать точку, которая имеет скорость и направление.

Создаем 2 вектора :

1 - это сама точка ( вектор его координат )
2 - это вектор скорости и направления.

КОД:

Graphics 1024, 768

Local pos:Float2 = New Float2.Create(512, 384)
Local speed:Float = 1.0
Local dir:Float2 = New Float2.ForAngle(90)

Local drawDir:Float2 = dir.Copy()

While Not KeyHit(KEY_ESCAPE)

	If KeyDown(KEY_A)
		speed:+0.01
		speed = Min(speed, 5.0)
	End If

	If KeyDown(KEY_Z)
		speed:-0.01
		speed = Max(speed, 0.0)
	End If
	
	If KeyDown(KEY_UP)
		pos = pos.Add(dir.MulS(speed))
	End If
	
	If KeyDown(KEY_DOWN)
		pos = pos.Sub(dir.MulS(speed))
	End If
	
	If KeyDown(KEY_LEFT)
		dir = dir.Rotate(New Float2.ForAngle(- 1.0 * Max((speed / 2.0), 1.0)))
	End If
	
	If KeyDown(KEY_RIGHT)
		dir = dir.Rotate(New Float2.ForAngle(1.0 * Max((speed / 2.0), 1.0)))
	End If
	
	Cls()
	
	SetBlend(ALPHABLEND)
	SetAlpha(1.0)
	SetColor(255, 255, 255)
	
	DrawText("Speed = " + String(speed) + " (press A/Z)", 10, 10)
	
	DrawOval(pos.x - 8, pos.y - 8, 17, 17)
	
	drawDir = dir.Copy().MulS(15.0)
	
	SetColor(255, 64, 64)
	DrawLine(pos.x, pos.y, pos.x + drawDir.x, pos.y + DrawDir.y)
	
	Flip(1)
Wend

End
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (30.12.2012)