bild bewegen! wie??
Übersicht

suncityBetreff: bild bewegen! wie?? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() hab vor kurzem angefangen... ![]() also ich will ein game machen, bei dem man ein bild (spieler) mit den tastatur-tasten steuern kann. aber nur nach links oder nach rechts! die tast-keys hab ich mit ner if Code: [AUSKLAPPEN] if KeyDown(203) Then
;bewegen des bildes nach links Cls Endif jetzt wollt ich halt reinchreiben, dass sich das bild nach links bewegt ![]() greetz denis |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dir eine Variable erstellen in der du die aktuelle Position des Spielers speicherst. Das Bild des Spielers zeichnest du dann immer relativ dieser Variable ein, z.B.:
drawimage ImageDesSpielers, SpielerXPosition, 40 wobei "SpielerXPosition" die Variable ist die du in der oben geposteten Schleife manipulierst, also veränderst, z.B. so: if Keyhit(lala) SpielerXPosition = SpielerXPosition + 1 endif |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du zeichnest ja das Bild ein mit ql:DrawImage . Deshalb kannst du ja die X und Y Koodinaten angeben. Ich nehme an, dass du einen festen Wert dafür eingesetzt hast. Ersetzte diese durch Variablen und erhöhe sie in der If/Else Konstruktion um den Geschwindigkeitsfaktor.
Noch ein kleiner Tipp du kannst das Bild gar nicht sehen, wenn du danach den Buffer leerst. Greetz |
||
dennis13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das müsste dann ungefähr so ausehen:
____________________________ Graphics 800,600 Apptitle"Bild bewegen" x=200 y=200 Bild=Loadimage("Bild.jpg") Drawimage Bild,x,y,0 Repeat If keydown(200) Then x=x+5 If keydown(208) then y=y+5 Until Keyhit(1) end _________________________________ So, die x und y werte musst du noch nach wunsch verändern , die "Schnelligkeit" wie sich das bild bewegen muss kannst du an "x=x+?" ändern , je größer die Zahl desto schneller gehts ![]() So ich hoffe ich konnte dir helfen MFG |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@dennis:
Code: [AUSKLAPPEN] If keydown(200) Then x=x+5
ist doch nicht dein ernst, oder?? |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
darthBetreff: .. |
![]() Antworten mit Zitat ![]() |
---|---|---|
if keydown(200) dann bild RAUF! also y=y-5
if keydown(208) dann bild RUNTER! also y=y+5 if keydown(203) dann bild LINKS! also x=x-5 if keydown(205) dann bild RECHTS! also x=x+5 wieso? das koordinatensystem (x/y) beginnt in der linken, oberen ecke, und geht dann nach unten (y-achse) und nach rechts (x-achse) allgemein: Code: [AUSKLAPPEN] graphics 800,600 x=200 y=200 bild=loadimage(...) repeat drawimage bild,x,y ;wieso hier? => siehe nachhher if keyhit(...) then ... flip : cls ;wieso das? => siehe nachher until keyhit(1) end erklärungen: wieso muss das bild in der hauptschleife (repeat -- until) gezeichnet werden? wenn du den befehl drawimage VOR der schleife schreibst, dann wird das bild nur einmal gemalt, dann geht das programm in die schleife hinein und dreht dort seine runden, ohne dass dein bild weiter beachtet wird. also musst du es in der hauptschleife malen, wenn du es bewegen willst. wieso flip und cls? flip übergibt grafiken/texte an den frontbuffer, dieser zeichnet dir dein zeug dann auf den bildschirm - ist allerdings nicht immer nötig, schadet aber selten bis nie es zu schreiben. TIP: flip hat eine FPS begrenzung von 60, das lässt sich mit "flip 0" ausschalten. cls löscht den bildschirm. wenn du diesen befehl NICHT hineinschreibst, dann wird dein bild sich nicht bewegen, sondern eine spur hinter sich herziehen. was lehrt man daraus? zuerst sollte man einige tutorials oder beispiel codes ansehen, damit man eine minimale ahnung vom programmieren hat. dann sollte man sich genau überlegen was die einzelnen befehle machen und wie man sie anzuordnen hat. dann sollte man sich eine winzige ahnung von algorithmen und logik verschaffen. kurz gesagt: RTFM!!! |
||
Diese Signatur ist leer. |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@darthgamer:
wenn man so einen provokanten text verfasst, dann sollte man wenigstens darauf achten, dass alles fehlerlos ist: Zitat: wieso flip und cls?
flip übergibt grafiken/texte an den frontbuffer, dieser zeichnet dir dein zeug dann auf den bildschirm - ist allerdings nicht immer nötig, schadet aber selten bis nie es zu schreiben. TIP: flip hat eine FPS begrenzung von 60, das lässt sich mit "flip 0" ausschalten. cls löscht den bildschirm. wenn du diesen befehl NICHT hineinschreibst, dann wird dein bild sich nicht bewegen, sondern eine spur hinter sich herziehen. Wenn du das alles wegnehmen würdest, dann ist es OK! Denn...wo findet man in deinem Code ein SetBuffer BackBuffer() ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
Hellfront |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht benutzt er ja BlitzPlus da brauczht man ja keins. | ||
![]() |
darthBetreff: .. |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
zumindest bei meiner b3d version brauche ich im 2d bereich KEINen backbuffer. "beweis": Code: [AUSKLAPPEN] graphics 800,600 ;wobei ich pers. immer graphics3d nehme (wegen flimmern)
bild=loadimage("blubb.bmp") while not keyhit(1) drawimage bild,0,0 flip : cls wend end => man erstelle ein beliebiges bild blubb.bmp und lasse den code laufen, und siehe da: ES LEBT! und zudem habe ich geschrieben dass das flip nicht zwingend notwendig ist (flip schiebt zeug von backbuffer in den hauptbuffer, wenn man aber nur den hauptbuffer hat ist es unnötig... aber wie gesagt, es schadet nicht ![]() |
||
Diese Signatur ist leer. |
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja schön und gut,
aber damit hast du kein double-buffering, was du dann da auch noch so groß im code erwähnst ("; wieso das => siehe nachher")... ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
darthBetreff: .. |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() man muss es nicht unbedingt verwenden, ich wollte es nur sagen für ein nächstes mal (wenn er es verwendet), und dann hab ichs scheinbar vergessen. verklar mich :/ |
||
Diese Signatur ist leer. |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ist auf jeden Fall richtig:
Code: [AUSKLAPPEN] graphics 800,600,32,1
setbuffer backbuffer() bild=loadimage("mann.bmp") x=400:y=200 repeat cls if keydown(203) then x=x-2 if keydown(205) then x=x+2 drawimage bild,x,y flip until keydown(1) end Also Leute, wenn ihr das nicht hinkriegt wie seht ihr denn dann erst aus wenn ihr das Männchen noch "animieren" wollt??? ![]() |
||
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Apptitle "Bild Bewegen" Global Bild = LoadÍmage("Bildname.bmp") ; Bild Laden Global PosX ; Globale X Deklarieren Global PosY ; Globale Y Deklarieren While Not KeyHit(1) ; Wenn nicht ESC gedrückt dann Cls ; Bildschirm löschen If KeyDown(203) Then PosX = PosX - 1 ; Nach links If KeyDown(205) Then PosX = PosX + 1 ; Nach rechts If KeyDown(200) Then PosY = PosY - 1 ; Nach oben If KeyDown(208) Then PosY = PosY + 1 ; Nach unten DrawImage Bild, PosX, PosY ; Bild "Zeichen" Flip ; ja Flip halt ^^ Wend ; ende der Whileschleife End ; Ende des Programms Hoffe das Hilft dir ^^ |
||
- Zuletzt bearbeitet von Schranz0r am Mo, Mai 15, 2006 19:48, insgesamt 2-mal bearbeitet
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
das stimmt nicht ![]() die tasten sind vertauscht (horizontal und vertikal umtauschen) |
||
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlindGuy hat Folgendes geschrieben: das stimmt nicht
![]() die tasten sind vertauscht (horizontal und vertikal umtauschen) Jo lol...... Thx hab ich wohl im kopf vertauscht ^^ |
||
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Tasten sind nicht vertauscht... | ||
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Christoph hat Folgendes geschrieben: Die Tasten sind nicht vertauscht...
Ja richtig, hab ich ja auch schon gefixt ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group