Brauche Hilfe bei kleinem Spiel

Status
Nicht offen für weitere Antworten.

nicylein22

Mitglied
Hallo ihr Lieben,

ich hab ein riesen Problem und komm absolut nicht weiter.
Ich muss ein kleines "Spiel" programmieren bei dem ein Ball im Frame immer durchhüpft.

Der Spieler ist ein kleines Bildchen, und das soll nun mit den Tasten a,w,s,y gesteuert werden (wollte eigentlich die Pfeiltasten aber das krieg ich gar nich hin).

Mein Code ist fehlerfrei, sagt mir zumindest mein Eclipse.

Ich hoffe ihr könnt mir sagen wo mein Fehler liegt.

Besten Dank schon mal.
Code:
package meins;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class MoveBall extends Frame implements KeyListener, ActionListener{

	/**
	 * Ballbewegung
	 */
	Ball b;
	Thread f;
	int m=80, n=80;
	int x=0; int y=250; 
	int x1; int y1;
	int s=1;
	
	boolean r=true; //Schalter für die x Richtung
	boolean t=true; //Schalter für die y Richtung
	Random r1; Random r2; //Zufallszahlen
	Image img; //Bild
	
	public MoveBall(){
		//Frame aufbauen
		setSize(500,500);
		setLocation(100,100);
		setTitle("Spiel");
		setVisible(true);
		b=new Ball();
		r1=new Random();
		r2= new Random();
		f=new Thread();
		f.start();
		addKeyListener(this);
	}
	
	public void paint(Graphics g){ 
        img = getToolkit().getImage("ball.jpg");         
        MediaTracker mt = new MediaTracker(this);
        mt.addImage(img, 2);
        
		
        for(;;){ 
        //g.clearRect(0,0,500,500); 
        g.drawImage(img,m,n,this);
      //malen 
        
        b.draw(g, x, y); 
        try{Thread.sleep(2);} catch(Exception z){} 
         
        if(x>=500){
            r=false;
             x1 = r1.nextInt(4);
             y1 = r2.nextInt(4);
           } 
           if(x<=0){
            r=true;
             x1 = r1.nextInt(4);
             y1 = r2.nextInt(4);
           }
           if(y>=500){
            t=false;
             x1 = r1.nextInt(4);
             y1 = r2.nextInt(4);
           } 
           if(y<=0){
            t=true; 
             x1 = r1.nextInt(4);
             y1 = r2.nextInt(4);
           } 
         
         if(r){ //Ball nach rechts 
        	 
              x= x+ x1; // neu positionieren 
              if(t){
               y=y+2;
              }
              else {
               y--;  
              }
              //malen 
              b.draw(g, x, y); 
               
         } 
         else{ //Ball nach links 
        	  x=x -x1; 
              if(t){
               y=y+2;
              }
              else {
               y--;  
              }
              //malen 
              b.draw(g, x, y); 
               
        
         }         
     } 
}
	

	
	public void run(){
		for(;;){
			switch(s){
			case 1: m=m-10; repaint(); break;
			case 2: m=m+10; repaint(); break;
			case 3: n=n-10; repaint(); break;
			case 4: n=n+10; repaint(); break;
			
			}
			repaint();	
			try{Thread.sleep(5);} catch(Exception z){}
		}
		
	}
	public static void main(String[] args) {
		new MoveBall();

	}

	@Override
	public void keyPressed(KeyEvent e) {
		if (e.getKeyChar()=='a')s=1;
		if (e.getKeyChar()=='s')s=2;
		if (e.getKeyChar()=='w')s=3;
		if (e.getKeyChar()=='y')s=4;
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		if (e.getKeyChar()=='a')s=1;
		if (e.getKeyChar()=='s')s=2;
		if (e.getKeyChar()=='w')s=3;
		if (e.getKeyChar()=='y')s=4;
		
	}

	@Override
	public void keyTyped(KeyEvent arg0) { }

	@Override
	public void actionPerformed(ActionEvent arg0) { }

}
 
S

SlaterB

Gast
das Bild genau EINMAL laden, nicht geschätzt 50x pro Sekunde für jedes paint,
aber du hast dein paint eh eher so aufgebaut, als wenn das nur einmal aufgerufen wird und dann in einer Endlosschleife arbeitet,
so gehts aber nicht,
paint muss kurz und schnell sein, solange eine paint-Methode aktiv ist, wird nichts anderes gemalt um die ganze GUI blockiert,

deine Spiel-Aktion muss in einem separaten Thread stattfinden, die alle x ms repaint() aufruft,

suche dir entsprechende Tutorials zu Zeichen in AWT/ Swing,
hier mal bisschen was
Supporting User Interaction (The Java™ Tutorials > 2D Graphics > Advanced Topics in Java2D)
 

Schandro

Top Contributor
Was ist dein Problem? Bitte immer komplette Fehlerbeschreibungen (plus StackTrace / Exception wenn vorhanden) posten.
 

nicylein22

Mitglied
Hallo,

danke für eure Antworten.

Mein Problem ist, dass ich mein Bild, welches ich hier "mal"

Code:
img = getToolkit().getImage("ball.jpg");         
        MediaTracker mt = new MediaTracker(this);
        mt.addImage(img, 2);
        
		
        for(;;){ 
        //g.clearRect(0,0,500,500); 
        g.drawImage(img,m,n,this);

nicht mit den Tasten bewegen kann.

Tut mir wirklich leid wenn ich mich so dumm anstell, aber ich bin absoluter Anfänger, ändert aber leider nix dran, dass ich das irgendwie hinkriegen muss.


Und wie gesagt, Eclipse zeigt mir keine Fehlermeldung an.
 
S

SlaterB

Gast
die Fehler habe ich beschrieben, Umsetzung erfordert natürlich relativ hohe Kenntnisse

ein Anfänger muss ein derartiges Programm nicht schreiben, außer für einen sadistischen Lehrer,
und dann sollte man das auch nicht unterstützen
 

nicylein22

Mitglied
Hallo,

naja, ich kanns mir aber leider nicht aussuchen, ob ichs mach oder nicht.
Weil ichs einfachen machen muss.

Und bei anderen Sachen hat das mit dem Bewegen von Objekten ja schon geklappt, nur bei dem Bild nun eben nicht... :/
 

Schandro

Top Contributor
Und bei anderen Sachen hat das mit dem Bewegen von Objekten ja schon geklappt, nur bei dem Bild nun eben nicht... :/
Dann ersetz doch das Bild mal durch einen Kreis. Wenn dieser sich auch nicht bewegt:
Schreib in die paint Methode ein paar System.out.println Aufrufe die die variablen m,n usw.. ausgeben. Sind diese richtig?
 

nicylein22

Mitglied
Hallo,

ja, mit einem Rechteck zb gehts auch nicht.

Und wenn ich syso m und n mache
dann schreibt er mir in die Konsole immer 80 ganz oft.

Aber die Variablen m und n ändern sich nicht wenn ich die Tasten drücke.
 

Schandro

Top Contributor
f=new Thread();
f.start();
Du kannst zwar einen neuen Thread ohne Runnable-Object erschaffen, aber dieser führt dann natürlich nichts aus wenn du ihn startest. Du musst ein Runnable-Object mitgeben. In deinem Fall heisst das:
f=new Thread(this);
f.start();
Warum da "this" stehen muss und warum es besser wäre, ne anonyme Klasse zu benutzen statt das die Haupklasse Runnable implementiert, wirst du merken sobald du ein Kapitel über OO durchliest und es verstehst.
 

nicylein22

Mitglied
Hallo,

also wenn ich das so abänder, dann verschwindet das rechteck gleich nach links und ist dann weg.
In der Konsole erscheinen Zahlen für m bis minus 8000?
 

Schandro

Top Contributor
dein Thread der die Position des "Objectes" verändert arbeitet zu schnell, du musst ihn langsammer machen und auch eine Kontrolle einbauen das das "Object" nicht außerhalb des Bildschirms gehen kann.
 

nicylein22

Mitglied
Hm und wie mach ich das?
Ich war so froh dass ich das mit dem bewegenden Ball endlich hinbekommen hab :((
Hab natürlich nicht damit gerechnet dass das mit dem Spieler dann so super kompliziert wird.
 

Schandro

Top Contributor
Kann es sein das du den Code nicht selber geschrieben hast? ;)
Java:
	public void run(){
		for(;;){
			switch(s){
			case 1: m=m-10; repaint(); break;
			case 2: m=m+10; repaint(); break;
			case 3: n=n-10; repaint(); break;
			case 4: n=n+10; repaint(); break;
			
			}
			repaint();	
			try{Thread.sleep(5);} catch(Exception z){}
		}
		
	}
Die Unendlichschleife läuft zu schnell bzw. es wird zuviel zu den Variablen addiert/subtrahiert.

Du brauchst übrigens nur 1x repaint() aufrufen, lass also besser die repaints nach jedem case weg
 

Schandro

Top Contributor
Natürlich bewegt es sich, du hast ja auch die variable s (die einen aussagekräftigeren Namen verdient hätte..) per default auf 1 gesetzt und der KeyListener schaltet sie auch nur zwischen 1 und 4 um, dass heist die Position deines "Objects" wird immer verändert..
 

nicylein22

Mitglied
aber es soll sich ja nur bewegen wenn ich die Tasten drücke
und nicht von alleine?
Oder hab ich da nun irgendwas falsch verstanden?
 

Schandro

Top Contributor
aber es soll sich ja nur bewegen wenn ich die Tasten drücke
und nicht von alleine?
Oder hab ich da nun irgendwas falsch verstanden?
DU bist der Programmierer, DU entscheidest was passiert ;)
Bei solchen Designfragen gibt es kein "richtig" oder "falsch"
 

nicylein22

Mitglied
Die Programmiererin bitte +g+

Und ich würde es ja gern entscheiden, aber er lässt mich ja nicht.
Sobald das Fenster aufgeht bewegt sich das Rechteck weg.
Ohne dass ich iwelche Tasten drücke.
 

Schandro

Top Contributor
Okay, Programmiererin ;)

Bis jetzt ist die Bewegung des "Objectes" ja so definiert:
s liegt immer zwischen 1 und 4, was als links, rechts, oben und unten interpretiert wird. Du brauchst also noch einen fünften Status, der für keine Bewegung steht. Dafür würde sich z.b. 0 anbieten, order irgendeine andere Zahl die nicht zwischen 1 und 4 liegt.
Ich benutz im folgenden 0.


Als erstes musst du den Defaultwert der Variable s ändern:
statt
Java:
int s = 1;
schreibst du:
Java:
int s = 0;

Dadurch wird es sich am Anfang nicht bewegen.

Warum?:
weil du im Gameloop-Thread folgendes geschrieben hast:
Java:
	public void run(){
		for(;;){
			switch(s){
			case 1: m=m-10; repaint(); break;
			case 2: m=m+10; repaint(); break;
			case 3: n=n-10; repaint(); break;
			case 4: n=n+10; repaint(); break;
			
			}
			repaint();	
			try{Thread.sleep(5);} catch(Exception z){}
		}
		
	}
Es trifft jetzt keiner der 4 cases mehr vor, deswegen wird die Variable m bzw. n nicht verändert.
=> Das "Object" bewegt sich nicht.

Als nächstes musst du einbauen, dass, sobald alle Tasten losgelassen wurden (keyReleased-Methode), s auf 0 gesetzt wird. Das ist der etwas komplexere Teil, ich werd dazu gleich noch was schreiben.
 

nicylein22

Mitglied
Halli Hallo +g+

okay also bewegt sich nicht mehr.
Bewegt sich allerdings auch nich wenn ich Tasten drücke.

Hab das nun so geändert:

Java:
	@Override
	public void keyPressed(KeyEvent e) {
		if (e.getKeyChar()=='a')s=1;
		if (e.getKeyChar()=='s')s=2;
		if (e.getKeyChar()=='w')s=3;
		if (e.getKeyChar()=='y')s=4;
	}

	@Override
	public void keyReleased(KeyEvent e) {
		if (e.getKeyChar()=='a')s=0;
		if (e.getKeyChar()=='s')s=0;
		if (e.getKeyChar()=='w')s=0;
		if (e.getKeyChar()=='y')s=0;
	}


aber das stimmt vermutlich nich gell? *g*
 

Schandro

Top Contributor
aber das stimmt vermutlich nich gell? *g*
Warum, es funktioniert doch ?!


Ich hab mal den Code in keyPressed/keyReleased und in der run-Methode des Threads ein bisschen angepasst:
Java:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class MoveBall extends Frame implements Runnable, KeyListener{

	Thread f;
	int m=80, n=80;
	int x=0; int y=250;
	int x1; int y1;
	int s=0;

	boolean r=true; //Schalter für die x Richtung
	boolean t=true; //Schalter für die y Richtung
	Random r1; Random r2; //Zufallszahlen
	Image img; //Bild

	public MoveBall(){
		//Frame aufbauen
		setSize(500,500);
		setLocation(100,100);
		setTitle("Spiel");
		setVisible(true);
		r1=new Random();
		r2= new Random();
		f=new Thread(this);
		f.start();
		addKeyListener(this);
	}

	public void paint(Graphics g){
       g.fillRect(m,n,50,50);
}



	public void run(){
		for(;;){
			System.out.println(m);
			switch(s){
			case 1: m=m-10; break;
			case 2: n=n+10; break;
			case 3: n=n-10; break;
			case 4: m=m+10; break;

			}
			repaint();
			try{Thread.sleep(100);} catch(Exception z){}
		}

	}
	public static void main(String[] args) {
		new MoveBall();

	}

	@Override
	public void keyPressed(KeyEvent e) {
		if (e.getKeyCode()==KeyEvent.VK_A){
			s=1;
		} else if (e.getKeyCode()==KeyEvent.VK_S){
			s=2;
		} else if (e.getKeyCode()==KeyEvent.VK_W){
			s=3;
		} else if (e.getKeyCode()==KeyEvent.VK_D){
			s=4;
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {
		if (e.getKeyCode()==KeyEvent.VK_A){
			s=0;
		} else if (e.getKeyCode()==KeyEvent.VK_S){
			s=0;
		} else if (e.getKeyCode()==KeyEvent.VK_W){
			s=0;
		} else if (e.getKeyCode()==KeyEvent.VK_D){
			s=0;
		}
	}

	@Override
	public void keyTyped(KeyEvent arg0) { }


}

e.getKeyCode()==KeyEvent.VK_W
Funktioniert genauso wie
e.getKeyChar() == 'w'
mann kan damit aber auch sachen wie die Pfeiltasten, Escape, Shift usw. abfragen.. Einfach in der API unter der Klasse KeyEvent die passende Konstante suchen.
 

nicylein22

Mitglied
Hey
danke das Bewegen funktioniert

und kann ich meinen Ball nu einfach wieder da einfügen wo ich ihn schon hatte?
Also den ball der sich immer bewegt ?
 

Schandro

Top Contributor
Du meinst die Unendlichschleife und das aufrufen von Thread.sleep(2); in der paint-Methode? Nein, auf keinen Fall. In die paint Methode gehören sowas nicht, die paint Methode ist nur zum malen da, nicht um irgendwelche Variablen zu ändern, 2 milisekunden zu warten und übrigens auch nicht um ein Bild von der Festplatte zu laden ;)

Du musst den Ball genauso wie die Spielfigur "bewegen", dass heisst ein paar Membervariablen die von einem Thread verändert werden und die in der paint Methode benutzt werden um den Ball an eine bestimmte Position zu malen.
Tu am besten die berechnung der Ballbewegung in die selbe Schleife in der du bereits die Bewegung der Spielfigur berechnest.
 

nicylein22

Mitglied
Achso hm du meinst ich soll

Java:
if(x>=500){
           r=false;
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          } 
          if(x<=0){
           r=true;
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          }
          if(y>=500){
           t=false;
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          } 
          if(y<=0){
           t=true; 
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          } 
        
        if(r){ //Ball nach rechts 
          
             x= x+ x1; // neu positionieren 
             if(t){
              y=y+2;
             }
             else {
              y--;  
             }
             //malen 
             b.draw(g, x, y); 
              
        } 
        else{ //Ball nach links 
           x=x -x1; 
             if(t){
              y=y+2;
             }
             else {
              y--;  
             }
             //malen 
             b.draw(g, x, y);

in die Klasse "Ball" reinschreiben oder wie?

Und dann in Paint nur mit b.draw aufrufen?
versteh ich nich so, weil das mit dem Ball funktionierte bisher ja
 

Schandro

Top Contributor
Ich kenn die "Ball" Klasse nicht, du hast sie bis jetzt noch nicht gepostet ;)

Java:
versteh ich nich so, weil das mit dem Ball funktionierte bisher ja
Es hat zwar funktioniert, war aber eine extrem unsaubere Lösung und irgendwann später hättest du mit Sicherheit Probleme damit bekommen.
 

nicylein22

Mitglied
Achso sorry, natürlich
die Klasse Ball ist hier:

Java:
package meins;

import java.awt.*;


public class Ball {
	int radius; Color c;
	
	public Ball(){
		radius=15; c=new Color(0,0,0);
	}
	void draw(Graphics g, int x, int y){
		g.setColor(c);
		g.fillOval(x-radius,y-radius,2*radius,2*radius);
		
	}

}
 

Schandro

Top Contributor
gut. :toll:

Als erstes würd ich die int's, die für die Postition des Balls stehen, auch in die Klasse Ball tun und die draw Methode entsprechend anpassen:

Java:
public class Ball {

    int radius;
    int positionX;
    int positionY;
    Color c;
    
    public Ball(){
        radius=15; 
        c=new Color(0,0,0);
    }
    
    void draw(Graphics g){
        g.setColor(c);
        g.fillOval(positionX-radius,positionY-radius,2*radius,2*radius);
    }
}

In der Hauptklasse "MoveBall" hast du ja als Membervariable eine Instanz von "Ball". Nennen wie sie mal "myBall".

Jetzt kannst du die run()-Methode, die im Thread ausgeführt wird, um die Bewegungslogik des Balls erweitern. (z.b. zwischen den switch-Block und den repaint()-Aufruf).
Diese dient natürlich nur dazu, um myBall.positionX bzw. myBall.positionY zu verändern

Innerhalb der paint-Methode brauchst du dann nurnoch schreiben:
myBall.draw(g);
 

Schandro

Top Contributor
Hier nochmal der Code der Hauptklasse, um einen Ball mit einfacher Bewegung erweitert:
Java:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class MoveBall extends Frame implements Runnable, KeyListener{

    Thread f;
    int m=80, n=80;
    int x=0; int y=250;
    int x1; int y1;
    int s=0;

    boolean r=true; //Schalter für die x Richtung
    boolean t=true; //Schalter für die y Richtung
    Random r1; Random r2; //Zufallszahlen
    Image img; //Bild

    Ball myBall = new Ball();

    public MoveBall(){
        //Frame aufbauen
        setSize(500,500);
        setLocation(100,100);
        setTitle("Spiel");
        setVisible(true);
        r1=new Random();
        r2= new Random();
        f=new Thread(this);
        f.start();
        addKeyListener(this);
    }

    public void paint(Graphics g){
       g.fillRect(m,n,50,50);
       myBall.draw(g);
}



    public void run(){
        for(;;){

            // bewegungslogik der Spielfigur
            switch(s){
				case 1: m=m-10; break;
				case 2: n=n+10; break;
				case 3: n=n-10; break;
				case 4: m=m+10; break;
            }

			// bewegungslogik des Balls
            myBall.positionX += 5;
            myBall.positionY += 5;


			// neuzeichnen und warten
            repaint();
            try{Thread.sleep(100);} catch(Exception z){}
        }
    }
    public static void main(String[] args) {
        new MoveBall();

    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode()==KeyEvent.VK_A){
            s=1;
        } else if (e.getKeyCode()==KeyEvent.VK_S){
            s=2;
        } else if (e.getKeyCode()==KeyEvent.VK_W){
            s=3;
        } else if (e.getKeyCode()==KeyEvent.VK_D){
            s=4;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        if (e.getKeyCode()==KeyEvent.VK_A){
            s=0;
        } else if (e.getKeyCode()==KeyEvent.VK_S){
            s=0;
        } else if (e.getKeyCode()==KeyEvent.VK_W){
            s=0;
        } else if (e.getKeyCode()==KeyEvent.VK_D){
            s=0;
        }
    }

    @Override
    public void keyTyped(KeyEvent arg0) { }


}
 

Schandro

Top Contributor
Jep, deswegen hab ich ja geschrieben "mit einfacher Bewegung". Wie genau sich der Ball bewegen soll musst du coden. Ich weiß ja nicht wie er sich Verhalten soll.
 

nicylein22

Mitglied
Achsooo... naja so wie ichs hatte

Java:
if(x>=500){
           r=false;
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          } 
          if(x<=200){
           r=true;
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          }
          if(y>=500){
           t=false;
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          } 
          if(y<=25){
           t=true; 
            x1 = r1.nextInt(4);
            y1 = r2.nextInt(4);
          } 
        
        if(r){ //Ball nach rechts 
          
             x= x+ x1; // neu positionieren 
             if(t){
              y=y+2;
             }
             else {
              y--;  
             }
             //malen 
             b.draw(g, x, y); 
              
        } 
        else{ //Ball nach links 
           x=x -x1; 
             if(t){
              y=y+2;
             }
             else {
              y--;  
             }
             //malen 
             b.draw(g, x, y); 
              
       
        }

in dem Bereich immer von einer Wand zur andern jeweils mit nem Zufallswinkel halt.

Und das mit den Pfeiltasten hab ich hinbekommen +g+ kleine Freude :D
 
Zuletzt bearbeitet:

nicylein22

Mitglied
Hallo,
ich bins nochmal.

Also ich krieg das so mit meim Teil wie der Ball sich im Frame beweg nicht mehr in deinen Code rein.

Hast du vielleicht ne Idee wie ich das anders einbauen könnte?

Liebe Grüße und n schönen Feiertag.
 

Schandro

Top Contributor
Wo ist den das Problem? du musst nur über irgendwelche if-Abfragen (und vllt. noch ein paar weitere Membervariablen) die Variablen myBall.positionX und myBall.positionY verändern. Natürlich kommt der malen-Code nichtmehr darein, der steht ja jetzt in der paint-Methode... (woanders macht er auch keinen Sinn)
 

nicylein22

Mitglied
Naja mein Problem liegt darin, dass ich nich genau weiss wo ichs reinschreiben soll und, wie ich meinen Code von oben so ändern muss dass deine Variablen drin sind und dass ich nich weiß ob ich meinen Code überhaupt noch benutzen kann ?!
Also den von oben.
 

nicylein22

Mitglied
Hey,

ich denk mal ich muss die Spielfeldbegrenzung in der sich der Ball bewegen muss hier einbauen:

Java:
  // bewegungslogik des Balls
            
            myBall.positionX += 5;
            myBall.positionY += 5;
            
 
 
            // neuzeichnen und warten
            repaint();
            try{Thread.sleep(100);} catch(Exception z){}
            }

unter positionX

Aber mir is nicht mehr so ganz klar was mit dem myBall..... bewirkt wird.
Kannst du mir das noch mal sagen, bzw sagn wie ich meine Begrenzung da einbau?
Ich brauch das dann ja für die Spielfigur selber auch.

Danke schon mal.
 

Schandro

Top Contributor
durch
myBall.positionX
greifst du auf den int "positionX" von "myBall" zu. Wie genau das funktioniert lernste in einem Kapitel über Objekt Orientierung...

Ich versteh echt nicht was jetzt das Problem mit der Bewegungslogik ist, du hast doch bereits schonmal so was ähnliches geschrieben.

Wenn du z.b. willst, das sich der Ball abwechselnd von links nach rechts bewegt, brauchst du als erstes ne Membervariable
boolean ballBewegtSichNachRechts = true;

und als Bewegungslogik schreibst du dann:
Java:
if(myBall.positionX > 500){ // 500 = rechte Grenze
	ballBewegtSichNachRechts = false;
}
else if(myBall.positionX < 0){ // 0 = linke Grenze
	ballBewegtSichNachRechts = true;
}

if(ballBewegtSichNachRechts){
	myBall.positionX += 5;
}
else{
	myBall.positionX -= 5;
}
 

nicylein22

Mitglied
Tut mir echt leid wenn ich dich so nerv, aber ich bin da irgendwie n bissl durcheinander :(

Ich hab dein code von oben nun in die runmethode geschrieben.
Wenn ichs aber ausführ erscheint gar kein Ball mehr?
Nur noch mein Spieler.
 

nicylein22

Mitglied
Sorry !!
Ich hab das nun so gelöst:

Java:
 if(myBall.positionX >=500){
            	ballBewegtSichNachRechts=false;
                 x1 = r1.nextInt(4);
                 y1 = r2.nextInt(4);
               } 
               if(myBall.positionX <=0){
                ballBewegtSichNachRechts=true;
                 x1 = r1.nextInt(4);
                 y1 = r2.nextInt(4);
               }
               if(myBall.positionY>=500){
                t=false;
                 x1 = r1.nextInt(4);
                 y1 = r2.nextInt(4);
               } 
               if(myBall.positionY<=0){
                t=true; 
                 x1 = r1.nextInt(4);
                 y1 = r2.nextInt(4);
               } 
             
             if(ballBewegtSichNachRechts){ //Ball nach rechts 
               
                  myBall.positionX= myBall.positionX+ x1; // neu positionieren 
                  if(t){
                   myBall.positionY=myBall.positionY+2;
                  }
                  else {
                   myBall.positionY--;  
                  }
                  //malen 
                  //b.draw(g, x, y); 
                   
             } 
             else{ //Ball nach links 
                myBall.positionX=myBall.positionX -x1; 
                  if(t){
                   myBall.positionY=myBall.positionY+2;
                  }
                  else {
                   myBall.positionY--;  
                  }
                  //malen 
                  //b.draw(g, x, y);

und der Ball bewegt sich.
Hast du noch n Tipp für mich wie ich den Ball schneller fliegen lassen kann?!

Grüßle
 

Schandro

Top Contributor
schneller wird der Ball entweder dadurch, das du zu positionX bzw. positionY größere Zahlen addierst.

Oder indem du die millisekunden bei Thread.sleep verringerst, dann wird aber auch alles andere schneller.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
E Brauche Hilfe was soll ich tun Spiele- und Multimedia-Programmierung 7
C Java Brauche Hilfe Spiele- und Multimedia-Programmierung 5
javajavajava Java Lotto Zahl 6 aus 49 - Brauche Hilfe Spiele- und Multimedia-Programmierung 3
L Brauche hilfe mit KeyEvent Spiele- und Multimedia-Programmierung 4
B brauche hilfe bei der tastenzuodnung Spiele- und Multimedia-Programmierung 3
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
M Brauche (kleine)InterpolatorHilfe Spiele- und Multimedia-Programmierung 24
StrikeTom Brauche .wav-datein Spiele- und Multimedia-Programmierung 11
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3
G Brauche Tipps: 3D-Equalizer Spiele- und Multimedia-Programmierung 10
Atten007 Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt Spiele- und Multimedia-Programmierung 0
R Flappy Bird Hilfe Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe bei der Fehlerbehebung in MCreator benötigt Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
T Hilfe bei decompilen von Plugin Spiele- und Multimedia-Programmierung 6
B HILFE bei Spieleprogrammierung mit Slick2D Spiele- und Multimedia-Programmierung 9
S Würfelspiel; Hilfe Spiele- und Multimedia-Programmierung 3
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
C Visual Story programieren/hilfe Spiele- und Multimedia-Programmierung 5
L Hilfe: Moog VCF Diskretisierungs Algorithmen (Smith/Stilson u.A.) Spiele- und Multimedia-Programmierung 0
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
M Hilfe bei Snake Spiele- und Multimedia-Programmierung 4
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
S 2D mit Slick - Anfänger sucht Hilfe Spiele- und Multimedia-Programmierung 4
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
J Hilfe bei Fußballmanager Spiele- und Multimedia-Programmierung 0
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
T Aim-Hilfe Spiele- und Multimedia-Programmierung 4
S Shiritori / word chain / Wörterkette Hilfe Spiele- und Multimedia-Programmierung 1
J Hilfe bei mastermind dringend !!!!! Spiele- und Multimedia-Programmierung 3
S Hilfe bei Spielumsetzung Spiele- und Multimedia-Programmierung 6
M Kleines Spongebobspiel / Hilfe gesucht Spiele- und Multimedia-Programmierung 2
L Hilfe bei Entities benötigt Spiele- und Multimedia-Programmierung 6
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
A Minecraft Hilfe bei Minecraft Mod Spiele- und Multimedia-Programmierung 1
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
L Minecraft Minecraft Bukkit Plugin hilfe Spiele- und Multimedia-Programmierung 9
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
B Hilfe bei Minecraft Plugin Spiele- und Multimedia-Programmierung 3
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
B Hilfe bei GameGrid Spiele- und Multimedia-Programmierung 11
J Spiel mit Java SWING, LWJGL und JMonkey [Anfänger braucht Hilfe] Spiele- und Multimedia-Programmierung 10
N Hilfe bei Tower Defense Spiele- und Multimedia-Programmierung 22
R hilfe bei 2DSpiel. Spiele- und Multimedia-Programmierung 3
S AirHockey Kollisionsprobleme, bitte um Hilfe Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
R Hilfe bei Reversi/Othello Spiele- und Multimedia-Programmierung 6
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
B Hilfe bekomme den IF befehl nicht hin Spiele- und Multimedia-Programmierung 10
C RFID Überwachung - Hilfe Spiele- und Multimedia-Programmierung 3
radiac FullScreenExlusiveMode HILFE!!! Spiele- und Multimedia-Programmierung 6
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
H PingPong HILFE !!! Spiele- und Multimedia-Programmierung 3
G GO-Spiel in Java noch fehlerhaft hoffe um hilfe Spiele- und Multimedia-Programmierung 7
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S Hilfe: Ich sehe durch die ganze Api's nicht mehr durch! Spiele- und Multimedia-Programmierung 15
N Hilfe bei snake Spiele- und Multimedia-Programmierung 37
C Hilfe bei einfachen Game Spiele- und Multimedia-Programmierung 15
T Bitte um Hilfe bei Animationen Spiele- und Multimedia-Programmierung 10
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
D Hilfe mit mini-spiel für die Schule. Spiele- und Multimedia-Programmierung 1
G Hilfe bei 3Gewinnt! Spiele- und Multimedia-Programmierung 2
C anfänger braucht hilfe für info unterricht Spiele- und Multimedia-Programmierung 21
A Hilfe bei Programmierung von Abalone Spiele- und Multimedia-Programmierung 6
S Hilfe bei Galgenmännchen Spiele- und Multimedia-Programmierung 4
M 'Mensch ärgere Dich nicht' - Hilfe! Spiele- und Multimedia-Programmierung 12
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
H Ich benötige Hilfe [Noob] Spiele- und Multimedia-Programmierung 9
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben