Jump & Run .... Brauche Hilfe
Übersicht

PCfreakBetreff: Jump & Run .... Brauche Hilfe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay ...
Ich habe euch vor fast einem Jahr schon mit meinen Anfängerfragen genervt ... Zitat: es ist schon fast ein bisschen Peinlich aber ich habe ein kleines Problem mit einer art Jump & Run game, wobei es garnicht nach soeinem aussieht ... folgender Code: Code: [AUSKLAPPEN] Graphics 1366,768,0,1 SetBuffer BackBuffer() lvl1 = LoadImage("hindernis1.bmp") pl1 = LoadImage("player1.bmp") MaskImage lvl1,255,255,255 MaskImage pl1,255,255,255 Repeat Cls DrawImage lvl1,0,0 DrawImage pl1,x,y If KeyDown(203) Then x=x-3 If KeyDown(205) Then x=x+3 ;If KeyDown(208) Then y=y+2 ;If KeyDown(200) Then y=y-2 If Not ImagesCollide(pl1,x,y,0,lvl1,0,-2,0) y=y+4 End If If ImagesCollide(pl1,x,y,0,lvl1,0,-2,0) y=y-1 End If Flip Until KeyDown(1) End Zur Info: Die Figur ist eine Kugel und das Hindernis ein Boden (hindernis, =lvl1) mit Löchern und absenkungen ... Jetzt zum problem: Wie bekomme ich es hin, dass die Figur (pl1) auf dem Boden bleibt, und bei steigungen des Bodens auch wieder mitsteigt? Ich habe es im 1. versuch so gemacht, dass die Figur imer bis zum boden geht ... dann war schluss... Code: [AUSKLAPPEN] If Not ImagesCollide(pl1,x,y,0,lvl1,0,-2,0) y=y+4 End If Und so wie ich es jetzt habe, "wackelt" das kleine kerlchen immer so klein hoch und runter ... alle anderen prpbleme kann ich beheben ... nur das ist mir ein Dorn im Auge ... Ich bitte (abermals) um eure Hilfe ... Mit freundlichen Grüßen, Tim-B. |
||
Kentnisse: QB, BB, HTML, |
![]() |
ZEVSBetreff: While statt If |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Code: [AUSKLAPPEN]
If ImagesCollide(pl1,x,y,0,lvl1,0,-2,0) y=y-1 End If Das mit dem Wackeln ist ganz natürlich, da er pro Frame immer nur ein Pixel nach oben geht. Für den fall, dass die Steigung größer als 1 Pixel / Frame ist, muss er entsprechend mehrere Pixel hoch. Ich sehe die beste Lösung in einer while-Schleife: Code: [AUSKLAPPEN] While ImagesCollide(pl1,x,y,0,lvl1,0,-2,0) y=y-1 Wend (ungetestet) Ich hoffe, dass ich dir helfen konnte |
||
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich danke dir ^^
Vielen vielen Dank =D so ... meinj Ziel jetzt: Mich erst melden, wenn das Spiel fertig ist, um dann die kommunikation zweier Programme via Internet zu erfragen =D Mit freundlichen grüßen, Tim ... Zitat: PS.: Eine Frage: Wie bekomme ich es hin, dass wenn der Boden kurzzeitig aufhört (dass ein loch entsteht), dass die Figur nicht mehr hoch springt wenn sie gegen das hindernis seitlich gegen kommt, sondern dass sie weiter runter fällt ? Muss ich dafür ein weiteres Bild erstellen was da an der seite hängt, dass die figur garnicht erst an den Boden kommt ? ... ![]() |
||
Kentnisse: QB, BB, HTML, |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ich heute faul und launisch bin, hab ich mir deinen Code mal nicht durchgelesen sondern rede mal in den blauen Dunst hinein.
Du hast eine Figur, die eine X/Y koordinate hat und ein hindernis das vermutlich auch eine hat, sowie beide eine Höhe haben. Ist die Figur auf diesem Objekt drauf, so ist die X Koordinate der Figur, größer als die des Hindernis, aber kleiner als die des Hindernises plus seine Breite, ähnlich mit der Höhe, wenn die Figur draufsteht, dann ist ihre Y koordinate minus ihrer Höhe gleich der Y Koordinate des Hindernisses. Natürlich gilt das nur wenn du sie alle oben links handles (was ja normalerweise der fall ist). Mit ein paar geschickten If abfragen kannst du sicherlich herausbekommen wo die Figur X Achsenmäßig ist, auf welchem Objekt und dann die Y differenz prüfen. Edit: Okay das ist viel weniger Code als ich dachte ![]() So wie du es geschrieben hast, denke ich kannst du einfach zusätzlich nachprüfen, ob BlitzMax: [AUSKLAPPEN] If y - ImageHeight(player) = -2 |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
- Zuletzt bearbeitet von Ana am Mo, Jun 27, 2011 21:59, insgesamt einmal bearbeitet
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() ![]() Genau wirklich genau das habe ich auch ungefär vor 2 minuten gedacht ![]() Aber danke nochmal |
||
Kentnisse: QB, BB, HTML, |
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay entschuldigt .....
muss mich wohl doch noch einmal bemerkbar machen: kann mir jemand eine gute, sehr gute Sprungsequenz zusammen basteln? Ich bekomme es einfach nicht hin ![]() Ich bräuchte am besten eine funktion, mit der bestimmung, wie hoch und wie schnell die figur nach oben/nach unten springt .... Vielen Dank im vorraus ... ![]() |
||
Kentnisse: QB, BB, HTML, |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://de.wikipedia.org/wiki/Wurfparabel
Viel Erfolg und Freude beim Lernen und Schreiben deiner eigenen Funktion. (Ansonsten stehe ich für 25€ netto die Stunde zur Verfügung, aber wenn Du ja programmieren lernen willst solltest Du dir das Geld sparen...) |
||
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 |
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich kann Programmieren -.-
es ist nicht so dass ich NICHTS hinbekomme ...... Ich bin kein Kleines Kind, was wirklich alles erfragt ... die meisten Fehler bemerke ichs elbst ! Aber diese Sprung sequenz ... die kann ich halt nicht ... sorry aber du ahst auch mal klein angefangen ![]() EDIT :: Ich brauche einfach nur Hoch - Runter ... Die kurve entsteht ja dabei, wenn man nach licks/rechts geht .... dazu müsste man die Sprung-sequenz aber so hinbiegen, dass man erst schnell springt, dann langsamer wird, und so auch wieder runter fällt ... verstanden oder zu undeutlich ? ![]() |
||
Kentnisse: QB, BB, HTML, |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Code funktioniert nicht? Wir schauen drüber und können dir vielleicht einen Hinweis geben.
Du willst fertig-zum-einfügen Code? Lern' programmieren! Dazu gehört manchmal auch Logik, Mathe & Physik. |
||
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) |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich ist das ganze einfach...
Du musst nur einen YSpeed Wert am Sprunganfang setzten und diesen dann langsam so verändern, dass der Spieler schnell beginnt, abbremst und dann umdreht und wieder schneller fällt. Hier mal ein Beispiel, nicht in einer Funktion aber zum Verstehen sollte es reichen. BlitzBasic: [AUSKLAPPEN] Graphics 400,300,0,6 Die Funktion kannst du den Kommentaren entnehmen und mit ein wenig Grips anstrengen kriegst du das sicherlich auch in eine vernünftige Sprungfunktion ![]() mfg, count-doku |
||
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm okay ... ich versuchs mal in meinem code einzubauen ...
Danke ![]() |
||
Kentnisse: QB, BB, HTML, |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
PCfreak hat Folgendes geschrieben: Ich kann Programmieren -.-
es ist nicht so dass ich NICHTS hinbekomme ...... Ich bin kein Kleines Kind, was wirklich alles erfragt ... die meisten Fehler bemerke ichs elbst ! Aber diese Sprung sequenz ... die kann ich halt nicht ... sorry aber du ahst auch mal klein angefangen ![]() EDIT :: Ich brauche einfach nur Hoch - Runter ... Die kurve entsteht ja dabei, wenn man nach licks/rechts geht .... dazu müsste man die Sprung-sequenz aber so hinbiegen, dass man erst schnell springt, dann langsamer wird, und so auch wieder runter fällt ... verstanden oder zu undeutlich ? ![]() Ich habe ja nirgends behauptet Du könntest nichts, also kein Grund Dich angegriffen zu fühlen. ABER: Wir sind hier ein programmiersprachenbezogenes Board, also wird im Stillen erwartet dass Leute selbstständig Lösungen erarbeiten. Fertige Lösungen sind Auftragsarbeit und kosten, ganz einfach. Tipps gibt es umsonst, und wenn Du geholfen haben willst wäre es sinnig deinen fehlerhaften Code einzustellen. |
||
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 |
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah okay ...
Ich wusste nicht das Coden hier bezahlt werden muss ![]() Aber schwamm drüber ... war nur ein bisschen gereizt ... Mein Code sieht jetzt folgendermaßen aus, und klappt bis auf ein Problem ganz toll: BlitzBasic: [AUSKLAPPEN]
Problem: Die Figur springt nur manchmal ![]() Ich weiß leider nicht woran das liegt, weil "yspeed" ja durch die mehrmalige Kollision mit dem Boden keinesfalls geändert wird ![]() |
||
Kentnisse: QB, BB, HTML, |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ich wusste nicht das Coden hier bezahlt werden muss
Wie erwähnt- helfen kostet nichts, denn dann sieht man ja das Eigeninitiative da ist. Aber "kann mir wer einen Code schreiben" hat einen etwas faden Beigseschmack, und in der frien Wirtschaft würdest Du dafür einen Auftrag erteilen und jemand bezahlen müssen. Böse, aber so läuft die Welt. |
||
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 |
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BladeRunner hat Folgendes geschrieben: Zitat:
Ich wusste nicht das Coden hier bezahlt werden muss
Wie erwähnt- helfen kostet nichts, denn dann sieht man ja das Eigeninitiative da ist. Aber "kann mir wer einen Code schreiben" hat einen etwas faden Beigseschmack, und in der frien Wirtschaft würdest Du dafür einen Auftrag erteilen und jemand bezahlen müssen. Böse, aber so läuft die Welt. Ja =D Nur ich habe den Code vorher gelöscht und wollte ihn dann noch im nachhinein einfügen ... Hätte ich andersrum amchen sollen ![]() |
||
Kentnisse: QB, BB, HTML, |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich ist alles richtig, nur in der While ImagesCollide Schleife muss
kein ply=ply-gravitation hin und hinter der If Bedingung kommt nur SpeedY=-Jumpspeed Dann müsste es gehen. BlitzBasic: [AUSKLAPPEN] Const gravitation#=1,jumpspeed#=20 Du solltest außerdem (sofern du es nicht schon weiter oben gemacht hast) die Variablen plx,ply,yspeed als Float ( Zeichen # ) machen, um eine weiche bewegung zu ermöglichen. lg, count-doku |
||
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmmm ... irgendwie hängt sich das Programm auf,
wenn ich die Markierte stelle im Code lösche ![]() BlitzBasic: [AUSKLAPPEN]
PS.: Danke für den Tipp |
||
Kentnisse: QB, BB, HTML, |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vermutlich induzierst du deine Endlosschleife, da sich ply ja nicht mehr ändert... | ||
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) |
PCfreak |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann sein ....
Ich habe aber bemerkt, dass wenn ich in der abfrage, ob die Leertaste gedrückjt wird, das BlitzBasic: [AUSKLAPPEN]
entferne, dass es dann reibungslos läuft ?!?!?!?!?! Aber dann kann man endlos in der luft einen 2. Jump hinlegen ..... Was tun ? |
||
Kentnisse: QB, BB, HTML, |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
du könntest dir es wie folgt überlegen:
1.du unterteilst dein Level in gleich große Bereiche 2.Für jeden Bereich legst du einen Punkt fest wo der Boden ist, oder halt gar keiner 3.Du fügst es in der Srpungfunktion ein, das die Figur auf dem Punkt ihres Feldes sein muss damit sie überhaupt springt. realisieren kannst du das 1. Bereichwidth = Levelwidth / Bereichsanzahl 2. Mit einem Dim Feld 3. If feld(figurX/Bereichsanzahl) = FigurY then ... |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group