Mauer

Status
Nicht offen für weitere Antworten.

777

Bekanntes Mitglied
Hi,
Ich habe einen Thread geschrieben, der ein Canvas über den Bildschirm fliegen lässt. Mit 4 Buttons auf dem Schirm kann der Benutzer selber bestimmen welche Richtung das Canvas einschlagen soll.
In der Mitte befindet sich noch ein zweites Canvas. Das kleine Flugcanvas soll jedoch nicht über das zweite Canvas können.
Meine Threadsyntax ist einfach so gelöst, dass ich in jedem Button die Richtung bestimme und in der Bewegungsschleife die Position ändere, je nachdem, welcher Button zuletzt gedrückt wurde.
Mein Code steht hier:

Code:
	    mauerx = mauer.getX();
	    mauery = mauer.getY();
	    mauerb = mauer.getWidth();
	    mauerh = mauer.getHeight();

        
	    if(y+10<mauery || y>mauery+mauerh || x+10<mauerx || x>mauerx+mauerb)
	    {
   	        if(oben2==true)
            {
                y=y-speed;
            }
            if(unten2==true)
            {
                y=y+speed;
            }    
        
        
        
        
            if(rechts2==true)
            {
                x=x+speed;
            }    
            if(links2==true)
            {
                x=x-speed;
            } 
            
            
        }
        else
        { 
  		oben2=false;	
		unten2=false;
		links2=false;
		rechts2=false;
        }


Mein Problem besteht nun jedoch leider darin, dass mein Bewegungscanvas sobald es gegen die Mauer fliegt stehen bleibt. Das ist zwar auch erstmals gut so, doch nun habe ich festgestellt, dass ich das Canvas danach garnicht mehr bewegen kann, selbst wenn ich den Button in Gegenrichtung drücke.
Das liegt daran, da ich schließlich jetzt, wo die If-Struktur sowiso immer "false" sendet mein Canvas eh nie wieder bewegt werden kann.
Ich möchte jedoch, dass dieser Fehler behoben wird.
Erst versuchte ich mein Problem damit zu lösen indem ich im elseteil abfragte welche der 4 IfBlöcke denn schuld daran sei, dass mein Canvas in den verbotenen Bereich gekommen ist.
Doch da in der Abfrage nur gefragt wird ob sich das Canvas im verbotenen Bereich befindet oder nicht, und nicht WO genau hat das nicht geklappt.
Hat jemand eine Idee?

cya
David
 
G

Gast

Gast
du bewegst dich erst und prüfst danach die Position,
da du nichts eingebaut hast um aus einer verbotoenen Position wieder herauszukommen
(wäre auch kompliziert da die erlaubten Richtungen zu bestimmen und zu speichern)
gehts natürlich nicht weiter,


einfacher ist zunächst vielleicht der umgekehrte Weg:
das Canvas ist IMMER in einer erlaubten Position und wird gestoppt bevor es irgendwo gegenstößt:


berechneNaechstePostion x,y (abhängig von Button);

schaue ob diese Position legitim ist (mit dem if),
wenn ja bewegen, wenn nein dann stop,

so kann man bei Stop gerne wieder die gleiche schlechte Richtung einschlagen und wird wieder gestoppt,
bei einer folgenden Gegenrichtung spricht aber nichts mehr gegen eine erfolgreiche Weiterbewegung
 

Leroy42

Top Contributor
777 hat gesagt.:
Mit 4 Buttons auf dem Schirm kann der Benutzer selber bestimmen...
und tu dir diesmal den Gefallen auch eine Tastatursteuerung (Die 4 Cursortasten) einzubauen.

Buttons zur Steuerung sind doch nervig :(
 

777

Bekanntes Mitglied
Weiß nicht, wie das geht :(... irgendwas mit Keylistener aber habe gehört, dass das sehr kompliziert ist... :(
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben