schleifenproblem
Übersicht

snörklBetreff: schleifenproblem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, hoffentlich ist das nun im richtigen Bereich, war mir nicht sicher obs in beginnerscorner gehört odre hierhin.
Zu meinem Problem. Ich möchte einen Soldatentrupp mit einer for-while-schleife zeichnen. Vorneweg ein Hauptmann, den ich schon geproggt habe und hintendrein im Gänsemarsch nochn paar andere. Hier mein Code: Code: [AUSKLAPPEN] Global tmrwarten=0 Global trooperfrm=0 Global trooperX=-50 Global trooperY=100 Global trooperX2=-100 Graphics 640,480,16,2 ;----------------------------------------------------------------------------- fortsetzen$ = Input("Hi; Möchtest Du das Programm fortsetzen (Y/N)? ") If fortsetzen$="y" Or "Y" Delay 1 Else End EndIf Cls ;------------------------------------------------------------------------- fortsetzen = Input("Bist du Dir da ganz sicher (Y/N)? ") If fortsetzen$="y" Or "Y" Delay 1 Else End EndIf Cls ;-------------------------------------------------------------------------- Print"Dann gebe bitte nun das Passwort ein," passwort$=Input("welches du in der Readme gefunden hast: ") If Not passwort$="begin mission" Print"Falsch. Please try again!" Delay 1000 End EndIf ;----------------------------------------------------------------------------- Graphics 640,480,16,1 ;------------------------------------------------------------------------------- Cls SetBuffer BackBuffer() Color 0,120,0 Text 220,50,"Esc drücken zum beenden" Flip Delay 1000 Cls SetBuffer BackBuffer() Text 220,0,"Ein normaler Tag..." Flip Delay 500 Flip Text 220,15,"Ein normales Leben..." Flip Delay 500 Flip Text 220,30,"Ein normaler Auftrag..." Flip Delay 500 Flip Text 220,45,"Doch..." Flip Delay 700 ClsColor 255,255,255 Cls Flip Delay 600 Text 0,300,"AAAAAARRRRGGGGHHHHHHHH!" Delay 800 ClsColor 0,0,0 Cls Flip ;-------------------------------------------------------------------------- trooper=LoadAnimImage("trooprunner.png",48.16,56.5,0,12) trooper2=LoadAnimImage("trooprunner.png",48.16,56.5,0,12) MaskImage trooper, 126,26,100 MaskImage trooper2,126,26,100 schleife=0 Repeat If schleife=1 Text 250,420,"Folgen!" EndIf If schleife= 3 Text 250,435,"Roger Sir!" EndIf For x=0 To 10 DrawImage trooper2,trooperx2,troopery,trooperfrm x=x+1 trooperx2=trooperx2-50 Next DrawImage trooper,trooperx,troopery,trooperfrm Delay 100 trooperfrm=trooperfrm+1 trooperx=trooperx+3 trooperx2=trooperx2+3 If trooperfrm=>12 trooperfrm=0 schleife=schleife+1 EndIf Flip Cls Until schleife=20 Or KeyHit(1) So^^. Passwort ist begin mission , dürfte net so schwer sein rauszufinden xD Also, wenn ich nun mit der for-while schleife die Soldaten zeichne, dann werden sie ja nur kurz angezeigt. Dann läuft die repeatschleife durch und ihre x koordinaten werden um drei nach rechts verschoben. Doch nun kommt das Problem. Die for-while schleife läuft nämlich noch mal durch, und deswegen werden die x koordinaten wieder um 50 nach links verschoben, das heißt mit jeder schleife wandern sie um 50 koordinaten ins jenseits hinaus xD. Aber sie sollen ja immer drei nach rechts laufen, dass ist das problem. Hoffe ihr habts einigermaßen verstanden, mfg Snörkl die bilddatei ist auf http://www.robsite.de/bbkurs2/08bilderanzeigen.htm zu finden (die 12 soldaten da^^) und muss in trooprunner.png umgenannt werden (die blauen ecken kriegt man mit paint weg, einfach drüber pinseln ). |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
naja da sind noch ne Menge Fehler drin, hier mal vom Codeanfang an: ![]() ![]() If fortsetzen$="y" Or "Y"
Delay 1 Else End EndIf geht viel leichter so: Code: [AUSKLAPPEN] If fortsetzen$ <> "y" And "Y" Then end
![]() ![]() trooper=LoadAnimImage("trooprunner.png",48.16,56.5,0,12)
trooper2=LoadAnimImage("trooprunner.png",48.16,56.5,0,12) Da es 2 identische Bilder sind, brauchst Du sie nur einmal zu laden. 46.16 und 56.5 rundet Blitz eh, da es nur "ganze" Pixel gibt ![]() ![]() For x=0 To 10
DrawImage trooper2,trooperx2,troopery,trooperfrm x=x+1 trooperx2=trooperx2-50 Next x = x + 1 muss raus, wenn Du for x=0 to 10 schreibst, zählt er sowieso hoch. Ausserdem wird mit tropperx2=trooperx2-50 ja bei jedem Schleifendurchlauf die x-Position des 2. Troopers um 50 pixel verschoben, das willst Du ja nicht. Lösung kommt weiter unten. ![]() DrawImage trooper,trooperx,troopery,trooperfrm
Hier zeichnen wir auch den 2. Trooper, indem wir einfach denselben befehl nochmal absetzen, aber von trooperx 50 abziehn. Ich habs mal mit 150 gemacht im folgendem Code, damit sie weiter auseinander sind. Hier ne geänderte Version: Code: [AUSKLAPPEN] Global tmrwarten=0
Global trooperfrm=0 Global trooperX=-50 Global trooperY=100 Global trooperX2=-100 Graphics 640,480,16,2 ;----------------------------------------------------------------------------- fortsetzen$ = Input("Hi; Möchtest Du das Programm fortsetzen (Y/N)? ") If fortsetzen$ <> "y" And "Y" Then end Cls ;------------------------------------------------------------------------- fortsetzen = Input("Bist du Dir da ganz sicher (Y/N)? ") If fortsetzen$<>"y" And "Y" Then end Cls ;-------------------------------------------------------------------------- Print"Dann gebe bitte nun das Passwort ein," passwort$=Input("welches du in der Readme gefunden hast: ") If Not passwort$="begin mission" Print"Falsch. Please try again!" Delay 1000 End EndIf ;----------------------------------------------------------------------------- Graphics 640,480,16,1 ;------------------------------------------------------------------------------- Cls SetBuffer BackBuffer() Color 0,120,0 Text 220,50,"Esc drücken zum beenden" Flip Delay 1000 Cls Text 220,0,"Ein normaler Tag..." Flip Delay 500 Flip Text 220,15,"Ein normales Leben..." Flip Delay 500 Flip Text 220,30,"Ein normaler Auftrag..." Flip Delay 500 Flip Text 220,45,"Doch..." Flip Delay 700 ClsColor 255,255,255 Cls Flip Delay 600 Text 0,300,"AAAAAARRRRGGGGHHHHHHHH!" Delay 800 ClsColor 0,0,0 Cls Flip ;-------------------------------------------------------------------------- trooper=LoadAnimImage("trooprunner.png",48,56,0,12) MaskImage trooper, 126,26,100 schleife=0 Repeat If schleife=1 Then Text 250,420,"Folgen!" If schleife= 3 Then Text 250,435,"Roger Sir!" DrawImage trooper,trooperx,troopery,trooperfrm DrawImage trooper,trooperx-150,troopery,trooperfrm Delay 100 trooperfrm=trooperfrm+1 trooperx=trooperx+3 trooperx2=trooperx2+3 If trooperfrm=>12 trooperfrm=0 schleife=schleife+1 EndIf Flip Cls Until schleife=20 Or KeyHit(1) l8er, psy |
||
- Zuletzt bearbeitet von PSY am Mo, Nov 06, 2006 17:19, insgesamt einmal bearbeitet
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich will ja ganz ehrlich sein ![]() ![]() das problem war jetzt nur, dass ich eigentlich mehrere von denen zeichnen wollte. Gibt es nicht noch ne andere lösung mit schleifen oder so, damit ich nicht 10 mal drawimage blabla schreiben muss? |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
kein Thema. ![]() Zu Deiner Frage: Du kannst es folgendermassen in eine Schleife packen: Code: [AUSKLAPPEN] For i= 1 To 10
DrawImage trooper,trooperx-50*i,troopery,trooperfrm next Dann laufen fleissig 10 Trooper hintereinander ![]() l8er, psy |
||
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vielen dank- du bist klasse^^
noch ein problem. Wenn ich jetzt eine neue animation mache, dann kommt sie auf der anderen seite wieder raus XD ungefähr so: Code: [AUSKLAPPEN] lo------------------Hal hallo ist mein bild^^ ich weiß das es so was irgendwann schon mal gab, finds aber leider net mehr mit der forumsuche |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mal was schnell zusammengecodet ![]() Code: [AUSKLAPPEN] Graphics 640,480,16,2 img = CreateImage(50,50) : SetBuffer ImageBuffer(img) : ClsColor 255,0,0 : Cls : SetBuffer BackBuffer() x=500 While Not KeyHit(1) Cls y = 240 x = x+1 : w = ImageWidth(img) : h = ImageHeight(img) DrawImage img,x,y If x+w>640 Then DrawImage img,x-640,y If x>640 Then x=x-640 Delay 10 Flip Wend mfg |
||
°_° °.° °~° °v° .. -.- |
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ähm^^- und wie soll ich das jetzt in meinen code einbindn? | ||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Copy & Paste ! ![]() |
||
°_° °.° °~° °v° .. -.- |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group