warum kann ich die variablen nicht auf 0 setzten?
Übersicht

Blitzkrieg BopBetreff: warum kann ich die variablen nicht auf 0 setzten? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi...also:
ein figur beweg sich nach rechts. wenn diese figur an einer stelle kollidiert, läuft sie nach unten. das ganze versuhce ich so: (nur der code für di lenkung an sich) Code: [AUSKLAPPEN] If r6 ;nach rechts speed = 2 speed2 = 0 speed3 = 0 speed4 = 0 figur_posx = figur_posx + speed ;rechts EndIf If r2 ;nach unten speed = 0 speed2 = 0 speed3 = 2 speed4 = 0 figur_posy = figur_posy + speed3 ;unten EndIf Eigentlich müsste das doch gehen!? Die Variablen habe ich so globalisiert: Code: [AUSKLAPPEN] Global speed=0 ,speed2=0 , speed3=0 , speed4=0 Also auf jeden Fall tritt der Fehler auf, wenn die Figur an diesen Punkt kommt, läuft sie nach unten und immmer noch nach rechts, also schräg nach rechts....hm...... |
||
~ Hey Ho Let's Go ~ |
![]() |
Michi1988Betreff: Re: warum kann ich die variablen nicht auf 0 setzten? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hääääääääääääääääääääääääääääääääh?
Also Hätte das ganz anders gemacht: Code: [AUSKLAPPEN] if keydown(203) then x=x-2 if keydown(205) then x=x+2 if keydown(200) then y=y-2 if keydown(208) then y=y+2 Michi |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja michi, so würde es gehen, doch es gibt mehrer möglihckeiten im späteren spieleverlauf, wie die figur an den gegenstand kommen kann.
von daher möchte ich es so machen, das alle speed variablen vorher auf 0 gesetzt werden. |
||
~ Hey Ho Let's Go ~ |
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuchs doch mal anders.
nach dem Motto speed = 2*keydown(205) So kannst du das ein wenig handlicher machen. Des keydown(205) gibt dir ja 1 zurück falls du die taste drückst, und wen nicht, 0. Hast du also überall gewonnen und das ohne große Code verwendung. bye EDIT Habe ebend mal ne gute Lösung getestet. Code: [AUSKLAPPEN] Graphics 1024,768,16,2 SetBuffer BackBuffer() Global x = 1024/2, y = 768/2 Repeat Cls Oval x,y,20,20 speed = (2*KeyDown(205))-(2*KeyDown(203)) speed2 = (2*KeyDown(208))-(2*KeyDown(200)) x = x+speed y = y+speed2 Flip Until KeyHit(1) Alle richtungen klappen nun. Und das in nur 4 Zeilen. bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm, kanst du mir das ganze in ein wenig code einbetten, ich verstehe net ganz....außerdem bewegt dich diese figur ja automatisch ohne tastendruck
oh mo....muss eben dein editiertes beispiel lesen |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
j gut, wie gesagt: wie genau geht das nun wnen sich die figur slebst bewegt? | ||
~ Hey Ho Let's Go ~ |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Space bewegt sich die Figur automatisch, wen du nochmal Space drückst wieder nicht. Den rest kannst du dir dazu selbst ausmalen, ganz einfach erweiterbar.
Code: [AUSKLAPPEN] Graphics 1024,768,16,2 SetBuffer BackBuffer() Global x = 1024/2, y = 768/2 Repeat Cls Oval x,y,20,20 speed = (2*KeyDown(205))-(2*KeyDown(203)) Or (selbst_bewegen) speed2 = (2*KeyDown(208))-(2*KeyDown(200)) x = x+speed y = y+speed2 If KeyHit(57) selbst_bewegen=1-selbst_bewegen EndIf Flip Until KeyHit(1) bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also so ganz versteh ich den code net! was suchen die scancodes der ofeiltasten noch da? und wie genau werden nun die speed variablen eingeshcalten und was für einen wert haben sie ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Suco-XBetreff: ...... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ah, die Figur soll sich wohl garnicht mit den Pfeiltasten bewegen lassen. War abgelenkt von Michis Post. Diesen Aufbau kannst du aber auch dafür benutzen.
bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm, und wie genau ? wnen ich jetzt 2*keydown[scancode] wegnehme, sind doch keine zahlen mehr anwesend oder was!? | ||
~ Hey Ho Let's Go ~ |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, das wars aber für heute. Beispiel für Automatische Bewegung schnell geschrieben und ausbaufähig.
Code: [AUSKLAPPEN] Graphics 1024,768,16,2 SetBuffer BackBuffer() Global x = 1024/2, y = 768/2 Const richtung_rechts=1, richtung_links=-1 Const richtung_oben=-1,richtung_unten=1 Global figur_richtungx, figur_richtungy Repeat Cls Oval x,y,20,20 x = x+speed y = y+speed2 speed = figur_richtungx ; Beliebigen Wert dazu Addieren/Multiplizieren speed2 = figur_richtungy ; Beliebigen Wert dazu Addieren/Multiplizieren If Rand(0,100)=1 figur_richtungx = Rnd(richtung_links,richtung_rechts) figur_richtungy = Rnd(richtung_oben,richtung_unten) EndIf If x>1024 x = 0 ElseIf x<0 x = 1024 EndIf If y>768 y=0 ElseIf y<0 y=768 EndIf Flip Until KeyHit(1) Edit Ok, noch paar kleinigkeiten vorsichtshalber zur besseren verständniss bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das ist doch shcon fast zu umständlich?
ich habe: Code: [AUSKLAPPEN] If r6 speed = speed_test speed2 = speed2_test figur_posx = figur_posx + speed ;rechts endIf und oben: Code: [AUSKLAPPEN] Global speed_test=-1 ,speed2_test=1 da geht jedenfallss nix |
||
~ Hey Ho Let's Go ~ |
zocker2150Betreff: @ Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem, dass du hast ist folgendes.
deine "Figur" geht auch nach rechts wenn da nix mehr ist. denn deine If-Abfrage mit Code: [AUSKLAPPEN] If r6 ;nach rechts
speed = 2 speed2 = 0 speed3 = 0 speed4 = 0 figur_posx = figur_posx + speed ;rechts EndIf beachtet nicht den "Levelrand". Du musst also noch eine If-Abfrage machen. z.B. (Wobei mir noch unklar ist wie du "r6" ansprichst bzw. änderst) Code: [AUSKLAPPEN] If r6 Then If Level$(figur_posx, firgur_posy+2) <> LevelRand Then ; Wie du deinen RAND des Levels definiert hast. figur_posx = figur_posx + speed ; Bewegung nach rechts - "speed" kannst du ja in Global schon mit 2 deklarieren oder gleich 2 Reinschreiben, da ja mit "r6" immer 2 schritte nach rechts gegangen wird. End If End If Achtung: Da du immer 2 schritte machst, kann es sein, dass wenn du ein Feld vor der Wand stehst die Figur nicht ein Feld vorlaufen KANN! |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm, also zur erklärung:
wenn man sich den ziffernblock betrachtet: ist r6 = true geht figur nach rechts ist r2 = true geht die figur nach unten ... und je nachdem von welcher seite die figur kollidiert, ist r2,r4,r,8,r6 = true. was ich nicht verstehe ist , was du mit dem levbelrand meinst? das hat doch garnichts damit zu tun, weil das kann ja auch genau in der mitte des spiefeldes ablaufen, ohne randberührungen |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group