Ballflugbahn-Programm
Übersicht

![]() |
carlimanBetreff: Ballflugbahn-Programm |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Kann mir vielleicht irgendjemand mal ein Programm für eine Ballflugbahn ins forum tun? Ich würd nähmlich gern ein Ballspiel Programmiern. Ich hab schon auf Wikipedia geguckt, aber da steht nur so ne ganz komplizierte Rechnung. Ich hoffe mir kann jemand Helfen. Carliman |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du im Forum nach "Parabel" oder "Flugbahn" suchst, solltest du fündig werden. Ansonsten lernst du mehr, wenn du es selbst einfach mal ausprobierst. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
konstantin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Strecke, die ein Gegenstand zuruecklegt (wenn man die Gravitationskraft isoliert betrachtet), laesst sich als s = 0,5 * g * t^2 beschreiben, wobei g die Erdbeschleunigung ist. Diese kannst du in deinem Spiel so variieren, dass ein fuer dich passender Wert dabei heraus kommt. | ||
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich sollte man in jeder Formelsammlung fündig werden.
s = Strecke s0 = Anfangsstrecke v0 = Anfangsgeschwindigkeit t = Zeit a = Beschleunigung (Eigentlich brauchst du nur den letzten Summanden) s = s0 + v0*t + 1/2*a*t^2 Das ganze mit Vektoren kombinieren und voila. d.h. x = 1/2 * a * t^2 und y = 1/2 * g * t^2 g ist 9.81 m/s^2 |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die komplizierte Rechnung aus der Wikipedia ist die hinter einem Ballwurf liegende Mathematik. Ich weiß nicht ob Du die Thematik in der Schule schon hattest (ich denke eher nein) aber Du wirst dich mit der Wurfparabel auseinandersetzen müssen wenn Du gute Ergebnisse willst.
Welchen Teil der Formel verstehst Du nicht? Je genauer Du fragst um so genauer kann man dir helfen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Du wirst dich mit der Wurfparabel auseinandersetzen müssen,* wenn Du gute Ergebnisse willst.
Vektoren tun es auch, ich finde es einfacher und flexibler (Wind etc.). Die Bewegung des Balles lässt sich nach Newton in einem Vektor ausdrücken (war bei mir 8. Klasse), dem permanent ein Gravitationsvektor hinzugefügt wird. ZEVS * Komma eingefügt |
||
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Vektoren sind immer cool. Es gilt generell v = a * t und s = v * t. Was du brauchst ist eine Aufspaltung der Bewegung in X- und Y-Richtung, sonst musst du dich mit Sinussen und Cosinussen herumschlagen (und das will niemand..). Hier: BlitzBasic: [AUSKLAPPEN] Const GRAV_Y# = 9.81 Oder noch viel cooler, mit Verlet: BlitzBasic: [AUSKLAPPEN] Const GRAV_Y# = 9.81 FOR VECTRON \o/ |
||
Diese Signatur ist leer. |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich muss hier aber auch mal ein bisschen widersprechen. Und zwar ist es eigentlich gar nicht wichtig, dass es physikalisch möglichst genau berechnet wird. Rein theoretisch kommt es ja nur drauf an, dass der Betrachter denkt, dass es so physikalisch stimmen muss. Was ich damit sagen will, oftmals hilft es mehr sich zu überlegen, wie es aussehen muss, und nicht wie man es physikalisch beschreiben kann. Natürlich sollte man Grundlagen aus der Physik beherrschen. Aber oft reichen auch schon ein paar einfache Sachen aus.
Folgendes Beispiel. Hier werden zwar grundsätzliche physikalische Sachen eingehalten. Aber Physiker würden das als herzlich armselig bezeichnen. Aber es sieht halbwegs überzeugend aus. BlitzBasic: [AUSKLAPPEN] Graphics 600, 480, 32,2 |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hatte dazu auch ein Topic angefangen: https://www.blitzforum.de/foru...hp?t=36490
Ganz am Ende findest Du ein Code, der einen Basketball mit einer gegebenen Masse simuliert. Dabei wirkt anfangs eine Stoßkraft und die Gravitationskraft auf ihn ein. |
||
vertex.dreamfall.at | GitHub |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: s0 = Anfangsstrecke
d.h. x = 1/2 * a * t^2 und y = 1/2 * g * t^2 Anfangsstrecke ??? ^^ Und die Formel fuer x ist falsch. Bei einem Ballwurf gibts keine Beschleunigung in x Richtung. Eventuell wirkt ne Windkraft, das ist aber schon alles. t^2 in x-Richtung ist definitiv falsch. Der schiefe Wurf an sich ist eigentlich gar nicht schwer. Ich versuchs mal so leicht wie moeglich zu erklaeren: GRUNDVERSTAENDNIS: Ein geworfener Koerper fuehrt 3 Bewegungen unabhaengig voneinander aus: 1. Eine geradlinig-gleichfoermige Bewegung in Richtung der positiven x-Achse mit der Geschwindigkeit vx = v0 * cos(Abwurfwinkel) 2. Eine geradlinig-gleichfoermige Bewegung in Richtung der positiven y-Achse (AUFWAERTS) mit der Geschwindigkeit vy(1) = v0 * sin(Abwurfwinkel) 3. Einen freien Fall in Richtung der negativen y-Achse (ABWAERTS). Hier greifen die Gesetze des FREIEN FALLS. vy(2) = -g * t s = -0.5 * g * t * t 2. + 3. kann man vereinfachen zu einer Formel fuer die y-Richtung: vy = vy(1) + vy(2) = v0 * sin (Abwurfwinkel) - g * t DARAUS FOLGT DAS WEG-ZEIT-GESETZ: (Also das was Du fuer dein Programm brauchst) x = vx * t = v0 * cos(Abwurfwinkel) * t y = v0 * sin(Abwurfwinkel) * t - 0.5 * g * t * t Die 2 Formeln fuer Blitz3D lauten dann also wie folgt: Code: [AUSKLAPPEN] x=v0*Cos(winkel)*t
y=v0*Sin(winkel)*t-(0.5*g*t*t) Hier mal ein einfacher Beispielcode: (mit Cursortasten V0 und Winkel veraendern) Code: [AUSKLAPPEN] Graphics 1024,768,0,2
SetBuffer BackBuffer() Local timer%=CreateTimer(100) Local startx#=50.0, starty#=700.0, v0#=90.0, winkel#=45.0, g#=9.81, t#=0.0, x#, y# Local starttime%=MilliSecs(), time% Repeat ; RESET WENN BALL AUSSERHALB BILDSCHIRM If x>1024 Or y>768 Then x=startx : y=starty : starttime=MilliSecs() ; USEREINGABE WINKEL UND ANFANGSGESCHWINDIGKEIT V0 winkel = winkel + (KeyDown(200)-KeyDown(208))*.1 v0=v0 + (KeyDown(205)-KeyDown(203))*.1 If v0<0 Then v0=0 If v0>200 Then v0=200 If winkel < 0 Then winkel = 0 If winkel>90 Then winkel = 90 ; WEG-ZEIT-GESETZ FUER X UND Y x=startx+v0*Cos(winkel)*t y=starty-(v0*Sin(winkel)*t-(0.5*g*t*t)) ; BERECHNE VERGANGENE ZEIT time=MilliSecs() t=(time-starttime)/100.0 ; GRAFIKAUSGABE Text 0,0, "WINKEL : " + winkel Text 0,20,"V0 : " + v0 Text 200,0, "CURSORTASTEN: AENDERUNG WINKEL + V0" Color 255,0,0 Rect 0,700,1024,5,True Color 255,255,255 Oval x,y,10,10,True WaitTimer (timer) Flip 0 Cls Until KeyDown(1) End L8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Anfangsstrecke ??? ^^
Die Strecke, bei der man startet. Zitat: Und die Formel fuer x ist falsch. Bei einem Ballwurf gibts keine Beschleunigung in x Richtung. Eventuell wirkt ne Windkraft, das ist aber schon alles. t^2 in x-Richtung ist definitiv falsch.
Bullshit. Die Formel ist nicht "falsch", a ist einfach 0 wenn es keine Beschleunigung gibt. Das hätte man sich aber auch ableiten können, in dem man einfach mal das * beachtet hätte. Der schiefe Wurf, den du präsentierst, gilt aber nur für Objekte die keine Äusseren Einwirkungen mehr haben, sollten sie es doch haben muss man dann doch wieder Vektoren benutzen. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
bull ^^
Zitat: d.h. x = 1/2 * a * t^2
wenn es keine beschleunigung gibt und a=0 ist dann ist x = 0 laut deiner formel wenn du's anders meinst, ist es definitiv falsch ausgedrueckt. und er kanns so sicher nicht in seinen code umsetzen. Zitat: Programm für eine Ballflugbahn ins forum tun?
Ich würd nähmlich gern ein Ballspiel Programmiern. es geht hier grundlegend um einen ballwurf... und aeussere einfluesse kann man auch ohne vektoren mit einbinden... l8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: wenn es keine beschleunigung gibt und a=0 ist dann ist x = 0 laut deiner formel
Gratulation, genau was ich gesagt habe. Das Problem ist nur, dass man eventuell äussere Einflüsse haben will. Zitat: es geht hier grundlegend um einen ballwurf...
Seltsam, im Zitat von dir stand nirgends "Ballwurf". Zitat: und aeussere einfluesse kann man auch ohne vektoren mit einbinden...
Ja, wenn man unnötig kompliziertes gefrickel mag. Vektoren sind um einiges einfacher, wenn es um Kollisionen etc. geht. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Gratulation, genau was ich gesagt habe. Das Problem ist nur, dass man eventuell äussere Einflüsse haben will. DANKE ![]() Erstens mal, kein Grund sarkastisch zu werden. Aber ok, lass ich mich mal auf Dein Niveau hier herab. Zweitens, er benutzt Deine Formeln, weiss gar nicht um was es geht, nix funktioniert und es kommen keine gescheiten Werte raus. Irgendwelche Formeln googlen und jemandem vor die Fuesse knallen kann jeder. Bloed nur, dass er damit ueberhaupt nix anfangen kann. Siehe sein erstes Post. "...komplizierte Formeln". Ein bischen Erklaerung waere also angebracht gewesen. Zitat: Seltsam, im Zitat von dir stand nirgends "Ballwurf".
Seltsam...tatsaechlich. Was hat das mit meinem Zitat zu tun? In carliman's erstem Post steht: Zitat: Programm für eine Ballflugbahn ins forum tun?
Ich würd nähmlich gern ein Ballspiel Programmiern. Darauf war das bezogen. Ballflugbahn + Ballspiel ---> Ballwurf vielleicht??? Zitat: Ja, wenn man unnötig kompliziertes gefrickel mag. Vektoren sind um einiges einfacher, wenn es um Kollisionen etc. geht.
Wenn man Vektorrechnung kann, ja. Um einiges, ja. Aber was er wollte ist (wer Lesen kann ist ganz klar im Vorteil) ... "EIN PROGRAMM FUER EINE BALLFLUGBAHN" Und das hab ich ihm gegeben. Eine simple Flugbahn ohne irgendwelche Einfluesse. Die ganze Vektorrechnung nuetzt wenig, wenn die Grundlagen des schiefen Wurfs unklar sind. Wenn er die verstanden hat und noch ein paar Einfluesse mehr reinbringen will, sind Vektoren ganz klar die naechste Wahl. Aber da jetzt sowieso von Dir nur wieder ein weiterer Dizz kommt, weil Du ja sowieso alles besser weisst, ist das mein letzter Post zu diesem Topic. Den Code hat er ja nun ^^ L8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Aber da jetzt sowieso von Dir nur wieder ein weiterer Dizz kommt [an Propellator]
Überraschung! Hmm... was ist komplizierter: Zitat: x = vx * t = v0 * cos(Abwurfwinkel) * t
y = v0 * sin(Abwurfwinkel) * t - 0.5 * g * t * t oder Zitat: x = x + vx
?
y = y + vy vy = vy + Gravitation Ich tendiere auf letzteres, wenn PSY hier Probleme hat, seine Sache, wenn er meint carliman hätte welche, ihn lieber erstmal das bestätigen lassen (wie gesagt, das hatte ich in der 8. Klasse). Flexibler ist in jedem Fall die Vektorvariante, schneller (Rechenzeit) auch. Dies sind vielleicht Randaspekte, aber erwähnenswert. ZEVS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde es auch bevorzugen, wenn ihr zivilisiert bleibt... Zumal carliman sich nicht weiter geäußert hat und das Interpretieren seiner Interessen überflüssig ist. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
carliman |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry dass ich nicht zurückgeschrieben hab.
Mir ist das alles noch ein bisschen zu kompliziert. Ich bin erst in der 6. Klasse ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da gibt es auch deutlich einfachere Lösungen...
da kann ich dir helfen, aber beschreibe davor mal genau... ... welche Sichten (von oben, von der Seite, etc...)du benötigst. ... ob es 2D oder 3D sein soll. .... ein Ball, ein Schläger oder viele Spieler (wie Fußball). .... was ist das Ziel deines Programmes. Je mehr du schreibst, desto einfacher kann eine Lösung erstellt werden. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
carliman |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde gerne eine ansicht von der Seite in 2d machen.
Es soll der ball von einem Spieler geschlagen werden. (mehr kann man ja später noch hinzufügen) Ich will Faustball programmieren(das ist so ähnlich wie volleyball also auch mit schlägen). ich hoffe es gibt eine einfache lösung ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, hier kommt nun eine Erklärung in 3 Teilen. Bitte probiere erst Beispiel 1 aus und versuch es zu verstehen, bevor du dir Beispiel 2 reinziehst. Du kannst auch mit dem Wert Gravi# experimentieren. 0.1 fühlt sich dabei so an , wie auf unserer Erde.
1. Der freie Fall Ein Ball wird, wenn man ihn irgendwo in der Luft loslässt durch die Erdadanziehung runtergezogen: BlitzBasic: [AUSKLAPPEN] Graphics 800,600 Die Anziehung Gravi# wirkt dabei nicht direkt auf seine Position BallY#, sondern auf seine Fallgeschwindigkeit SpeedY#. Die Fallgeschwindigkeit SpeedY# wird so ständig größer:BlitzBasic: [AUSKLAPPEN] SpeedY=SpeedY+Gravi Erst diese Fallgeschwindigkeit verändert nun die Position des Balls: BlitzBasic: [AUSKLAPPEN] BallY = BallY+SpeedY 2. Ein Hinderniss Trifft der Ball nun auf eine Hinderniss, z.b. auf den Boden oder auf eine "Spielerhand", so ändert er schlagartig seine Richtung: BlitzBasic: [AUSKLAPPEN] Graphics 800,600 Entscheidend sind diese 3 Zeilen: BlitzBasic: [AUSKLAPPEN] If BallY>BodenY Then Wenn BallY# den BodenY# berührt, wird die SpeedY# umgedreht. Gleichzeitig "verliert" er etwas an Energie. Hier durch die 0.8 dargestellt. Der neue "Startpunkt" für den Ball ist der BodenY# Hinweis: Diese Zeile hat sich etwas geändert, damit der Radius des Balls beim Zeichnen berücksichtigt wird: BlitzBasic: [AUSKLAPPEN] Oval 400, BallY-11,11,11 3. Seitliche Bewegung Nun werden die gleichen Wirkungen auch für die seitliche Bewegung BallX# eingeführt. Statt der Erdanziehung Gravi#, wirkt hier eigentlich nur ein Luftwiderstand. Seine Wirkung ist viel weniger zu spüren, deshalb können wir darauf verzichten. BlitzBasic: [AUSKLAPPEN] Graphics 800,600 So, das soll für heute erst mal genügen. Wenn du jetzt Fragen dazu hast, schreib sie hier rein.... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group