Kreiselsimulation

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ironstorm

Erstklassiger Contest-Veranstalter

Betreff: Kreiselsimulation

BeitragFr, Nov 19, 2004 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi @ all!
Ich habe ein Prob. mit einem Versuch! Ich wollte mal einen Kreisel in 2d Simulieren! Jetzt hab ich es so gemacht das man den Kreisel dreht und per Pfeiltasten bewegen kann. Doch jetzt wollt ich mal es so machen das der Kreisel auf dauer geschwindigkeit verliert und sich langsamer dreht und am ende umfliegt. Doch wie mache ich das, das der Kreisel langsamer wird? Ich bekomme das nicht hin. Um mir bei meinem Prob. zu helfen braucht ihr keinen Code! Ihr könnt einfach x belibige Variablen nehmen.Bitte helft mir ! THX im vorraus
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium
 

Dreamora

BeitragFr, Nov 19, 2004 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach einen Bremsfaktor einbauen.

Heisst:
; Faktor < 1.0
RotationsSpeed = RotationsSpeed * Faktor
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Timo

BeitragFr, Nov 19, 2004 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
du brauchst auf jeden Fall eine Variable für die Geschwindigkeit. Außerdem am besten für jeden Winkel ein Bild und das in einem Array speichern. Dann nur noch eine Variable für die Aktuelle Richtung. Das sieht dann ungefähr so aus:

Code: [AUSKLAPPEN]

geschwindigkeit# = 500
repeat
  richtung = ( richtung + geschwindigkeit# ) mod 360 ; ab 360 gehts ja wieder von vorne los...
  geschwindigkeit# = geschwindigkeit# * 0.99
until keyhit(1)

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragSa, Nov 20, 2004 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hey danke Timo! Aber wie mache ich jetzt das der Kreisel nach einiger Zeit immer langsammer wird?
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium
 

Timo

BeitragSa, Nov 20, 2004 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
wie schon gesagt:
Code: [AUSKLAPPEN]
geschwindigkeit# = geschwindigkeit# * 0.99


wenn es schneller gehen soll, das er langsamer wird kannst du auch schreiben: geschwindigkeit# * 0.88 oder so... eine 1 würde bedeuten, die geschwindigkeit bleibt gleich. eine Zahl über eins würde es beschleunigen. eine zahl unter 1 verlangsamt das ganze. 0 würde das ganze sofort anhalten.
 

ke^kx

BeitragSa, Nov 20, 2004 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ja auch diese 0.99 immer kleiner werden lassen und dafür mit 1.2 anfangen. Ist nur so'ne Idee.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM

Hubsi

BeitragSa, Nov 20, 2004 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Jiriki hat Folgendes geschrieben:
Du kannst ja auch diese 0.99 immer kleiner werden lassen und dafür mit 1.2 anfangen. Ist nur so'ne Idee.

Jiriki
Das würde den Kreisel erst beschleunigen und dann unnatürlich langsamer werden lassen Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

ke^kx

BeitragSa, Nov 20, 2004 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, beschleunigen ist doch gut, wenn man das als Start sieht. Aber wieso wird es dadurch unnatürlich langsamer? Der Kreisel wird doch umso schneller langsam, wenn er sich nur noch langsam dreht, oder etwa nicht?
Aber eigentlich hab ich keine Ahnung, war nur so dahergeredet^^

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Timo

BeitragSa, Nov 20, 2004 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
nein nicht ganz, wenn man zum Beispiel den Faktor 0.95 hat, ist das eine negative beschleunigung oder eine bremswirkung. je nach dem, ob's näher bei 0 oder bei 1 ist, ist diese Bremsung stärker oder schwächer. Was du jetzt machst, ist quasi eine "beschleunigte beschleunigung". So könnte kein Auto bremsen. Beschleunigung gibt man in m/(s*s) an. das heißt wie viel geschwindigkeit + sekunde drauf kommt ( also 5 m/s schneller pro sekunde z.b.) bei dir würde genau das ebenfalls immer schneller werden. naja man könnte ja mal ein Programm zur veranschaulichung schreiben Smile
 

ke^kx

BeitragSa, Nov 20, 2004 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, wenn du es mir so erklärst ist es logisch.

Sorry für die falsche Info,
Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Timo

BeitragSa, Nov 20, 2004 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ist ja nicht schlimm Wink

hier noch mal nen code zur verdeutlichung:

Code: [AUSKLAPPEN]
graphics 800,600,32,2
setbuffer backbuffer()

;Fahrzeug 1
Global a1# = 1.0 ;Beschleunigung in a angegeben
global x1# = 0.0 ;Position des Wagens
Global y1  = 260 ;Position des Wagens
Global v1# = 3.5 ;Geschwindigkeit in Pixel/Frame

;Fahrzeug 2
Global a2# = 1.0 ;Beschleunigung in a angegeben
global x2# = 0.0 ;Position des Wagens
Global y2  = 300 ;Position des Wagens
Global v2# = 3.5 ;Geschwindigkeit in Pixel/Frame

color 255,255,255

repeat
  cls
  rect 400,0,1,600

  v1# = v1# * a1#
  x1# = x1# + v1#
 
  v2# = v2# * a2#
  x2# = x2# + v2#
 
  if x1 > 400 then a1# = 0.98
  if x2 > 400 then a2# = a2# * 0.99

  rect x1,y1,20,5
  rect x2,y2,20,5
 
  Text 500,y1-20,"normale Bremswirkung"
  Text 500,y2-20,"beschleunigte Bremswirkung"
  flip
 
  if v1# + v2# < 0.1 then
    v1# = 3.5
    v2# = 3.5
    x1# = 0.0
    x2# = 0.0
    a1# = 1.0
    a2# = 1.0
  endif
   
   
until keyhit(1)
end

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragSa, Nov 20, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leuts! Ich hab des jetzt hinbekommen! Aber jetzt wollte ich das man ein kleines Duell machen kann. Also folgendes Problem. Wie mache ich des mit der KI? Ich weiß net wie ich die Bewegungen hinbekomme. Ich meine ich kann ihn ja nicht die ganze zeit nach Links oder recht wandern lassen. Der gegner muss ja mit den Spieler seine Bewegungen interagieren! Aber wie?
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium
 

ke^kx

BeitragSa, Nov 20, 2004 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach einfach erstmal eine KI, die sich immer in Richtung Spieler bewegt, das reicht meistens schon bei sowas.

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Timo

BeitragSo, Nov 21, 2004 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
mach vielleicht noch eine Zufallsabweichung rein:

Code: [AUSKLAPPEN]
kiX = kiX + Rand(0,1)
kiY = kiY + Rand(0,1)

eXceptION

BeitragSo, Nov 21, 2004 10:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If (AItime <> 0) Then ;oder auf spieler reagieren (!)
  AItime = AItime - 1
Else
  Select Rand(0, 3)
    Case 0
      AIstate = asPattern
      AItime = 1000
    Case 1
      AIstate = asRandom
      AItime = Rand(200, 600)
    Case 2
      AIstate = asFlee
      AItime = Rand(100, 800)
    Case 3
      AIstate = asAttack
      AItime = Rand(300, 500)
  End Select
End If

Rest selber coden! :S
Norweger...

Spreche aber verdammt gut 8086

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group