Kollisionen mit dem Bildschirmrand
Übersicht

ekk1998Betreff: Kollisionen mit dem Bildschirmrand |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo bin neu hier und mein erster Beitrag ![]() Also... ich habe ein Bild (Hintergrund) und eine Person, wenn die Person den Bildschirmrand berühren sollte soll ein neues Bild (neuer Hintergrund) geladen werden. Wie mach ich das ![]() MFG ekk1998 |
||
- Zuletzt bearbeitet von ekk1998 am Fr, Sep 09, 2011 17:13, insgesamt einmal bearbeitet
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hintergrundbilder vorher laden, und bei
Code: [AUSKLAPPEN] personX+personWidth >= sizeX
einfach das nächste Bild in die Variable "aktuelles Bild" setzen. Wenn du nicht alles am Anfang lädst, solltest du geladene Bilder irgendwie speichern, damit sie nicht 10x geladen werden. ZEVS |
||
ekk1998Betreff: Ich verstehe Bahnhof |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ZEVS hat Folgendes geschrieben: Hintergrundbilder vorher laden, und bei
Ich verstehe Bahnhof Code: [AUSKLAPPEN] personX+personWidth >= sizeX
einfach das nächste Bild in die Variable "aktuelles Bild" setzen. Wenn du nicht alles am Anfang lädst, solltest du geladene Bilder irgendwie speichern, damit sie nicht 10x geladen werden. ZEVS ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
du wirst wohl oder übel etwas von Deinem Code hier reinstellen müssen, wenn du möchtest, dass die Hilfe konkreter werden soll!
du schreibst z.b : Zitat: ...ich habe eine Person...
Ein User, der die Maus in der Hand hat? Oder ein Männchen, dass im Spiel den Rand erreicht? Und wir wissen ja noch gar nicht, ob Dir das Laden eines ersten Hintergrundbildes schon gelungen ist? Oder ob sich das Männchen schon Richtung Rand bewegen kann? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
ekk1998Betreff: Mein Code |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics 800, 600,16,1
SetBuffer BackBuffer() ;Bilder laden Global Per = LoadImage("G\Per.bmp") Global WL = LoadImage("G\WL.png") ;----Bewegungsglobals---- Global x = 710 Global y = 340 Global speed = 4 ; Hauptschleife Repeat Cls MaskImage Per, 0, 0, 255 bilderzeichnen bewegen Flip Until KeyHit(57) End ;-------------Bilder ausgeben----------------- Function bilderzeichnen () ;Bilder Ausgeben DrawImage WL, 1, 1 DrawImage Per,x-2,y-2 End Function ;---------------------Bewegen------------------------------ Function bewegen() If KeyDown(200) Then y = y ; hoch If KeyDown(208) Then y = y ; runter If KeyDown(203) Then x = x - speed ; links If KeyDown(205) Then x = x + speed ; rechts End Function ;-------------------------------------------- |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahh!!
BlitzBasic: [AUSKLAPPEN]
Allerdings ist dies mit Vorsicht zu geniessen. Die Person sollte danach vom Bildschirmrand weggestellt werden, weil ja sonst gleich wieder geladen wird. Es gäbe natürich aus den Trick, dass du das zweite Bild gleich zu Anfang lädst und dann imm Moment des Randberührens nur noch umswitcht: BlitzBasic: [AUSKLAPPEN]
|
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bitte um Himmels Willen nichts in der Hauptschleife laden! Jedenfalls nicht, so lange du nicht 100%ig sicher bist, das die gewünschte Aktion genau 1x ausgeführt wird.
Variablen zuweisen ist zu bevorzugen, da kann nichts schief gehen. |
||
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) |
ekk1998Betreff: Und nun ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab jetzt :
Code: [AUSKLAPPEN] Graphics 800, 600,16,1
SetBuffer BackBuffer() ;Bilder laden Global Per = LoadImage ("G\Per.bmp") Global WL = LoadImage ("G\WL.png") Global WL2 = LoadImage ("G\WL2.png") ;----Bewegungsglobals-------------------------------------- Global x = 710 Global y = 330 Global speed = 4 ; Hauptschleife Repeat Cls MaskImage Per, 0, 0, 255 bilderzeichnen bewegen Flip Until KeyHit(57) End ;-------------Bilder ausgeben------------------------------ Function bilderzeichnen () ;Bilder Ausgeben DrawImage WL, 1, 1 DrawImage Per,x-2,y-2 If (y<0) Or (x>750) Print "Hier soll geladen werden" WL = WL2 y= 300 ; siehe unten EndIf End Function ;---------------------Bewegen------------------------------ Function bewegen () If KeyDown(200) Then y = y ; hoch If KeyDown(208) Then y = y ; runter If KeyDown(203) Then x = x - speed ; links If KeyDown(205) Then x = x + speed ; rechts End Function ;------------------------------------------------------- Im Bild WL2 sind jetzt noch paar Fehler (Der Text, Person läuft in der Luft, Person erscheint rechts statt links) wie kann ich entgegenwirken ![]() |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Der Text... Welcher Text? Meinst du die Ausgabe mit Print![]() ![]() Zitat: Person läuft in der Luft Ich sehe nichts, was sie davon abhalten sollte. Für den Anfang reicht es wohl, wenn du bei y > 0 einfach y = y-1 ausführst. Vektoren wären natürlich schöner und schwieriger.
Zitat: Person erscheint rechts statt links Wenn die Fensterbreite 800px ist und du als Anfangs-x-wert 710 einstellst, soll mich das nicht wundern. Probiere doch BlitzBasic: [AUSKLAPPEN] Global x = 10 Ansonsten: Zitat: BlitzBasic: [AUSKLAPPEN]
MaskImage Per, 0, 0, 255 ;im mainloop Bilder maskiert man einmal, danach bleiben sie maskiert. Mach das doch bitte hier:BlitzBasic: [AUSKLAPPEN] Global Per = LoadImage ("G\Per.bmp") Zitat: BlitzBasic: [AUSKLAPPEN] Das ist wahnsinnig sinnvoll, eine Variable mit sich selbst gleichsetzen.
Function bewegen () Zitat: BlitzBasic: [AUSKLAPPEN]
Das WL = WL2 solltest du nur ausführen, wenn du dir 100%ig sicher bist, dass du WL nie wieder brauchst. Und selbst dann wäre FreeImage ![]() Außerdem kann man Code einrücken und [ syntax ] statt [ code ] verwenden, das freut manche Leute, die dir helfen wollen. ZEVS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Ursprung des Koordinatensystems ist oben links. D.h. Rechts ist +x, Links -x.
- MaskImage gehört nicht in die Schleife, es reicht 1x nach dem laden. - WL = WL2 überschreibt ein Bild, welchen Sinn macht das? Nimm eine 3 Variable, wenn du zwischen WL und WL2 wechseln willst. |
||
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) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
und hier noch meine Tipps zum Programme entwickeln:
lass zunächst beim Graphics das ,16,1 weg. Dadurch läuft das Programm in einem Fenster und Du kannst den DEBUGGER sehen: BlitzBasic: [AUSKLAPPEN] Graphics 800, 600 ;,16,1 Wenn die Figur rechts rausgeht, dan soll sie sicherlich wieder links ins nächste Bild reinkommen, oder? BlitzBasic: [AUSKLAPPEN] If (y<0) Or (x>750) Wenn du möchtest, das die Figur sich auch rauf/runter bewegen kann, dann hast du vergessen, auch bei y was dazuzuzählen: BlitzBasic: [AUSKLAPPEN] Function bewegen () |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
ekk1998Betreff: Danke |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ich hab mein Problem gelöst ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group