# Zurücksetzen eines Programms



## tcppunk (2. Dezember 2004)

Ok der Titel ist nicht sehr passend aber mir ist einfach nichts besseres eingefallen.
Also ich habe ein Fußballspiel (Wenn man es so nennen kann) gemacht. Das
Prob: Wenn man geschossen hat, kann man das Prog. nicht mehr zurücksetzen und muss es neustarten. Den Ball kann man zwar wieder bewegen und damit schießen,
jedoch der Torwart bewegt sich nicht, weil die Torwartbewegungsmethode nicht
mehr läuft und wenn man sie jetzt startet, dann konzentriert sich das Prog nurnoch auf
den Torwart und der KeyListener wird vernachlässigt (Aaa diese Erklärung ist miserabel!) Nunja, ich habe den Quellcode mal angehongen, und ich muss noch dazu 
sagen das das ganze ziemlich hässlich aussieht (me <-- ) falls jemand verstanden hat, was ich meine, der helfe mir bitte.

(Achso wenn ihr lachen wollt lacht ruhig)  

import java.awt.event.*;
import java.awt.*;


public class Game extends Frame implements WindowListener, KeyListener{
Label tor, torwart, ball, steuerung;
int x, y, z, bx, by = 220;
boolean halt = false, rechts = true, vb = false;
	public Game(){

	this.setBounds(500,390,450,400);
	this.setBackground(new Color(170,220,170));
	this.setTitle("Baelle ballern");
	this.setVisible(true);



			tor = new Label("|-------------------|");
			torwart = new Label("|0|");
			steuerung = new Label("Tasten: <-- nach links, ^ schuss, --> nach rechts");
			ball = new Label("O");

			tor.setBounds(140,24,200,20);
			torwart.setBounds(200,40,24,20);
			ball.setBounds(200,220,15,20);
			steuerung.setBounds(14,350,420,20);
			steuerung.setBackground(new Color(220,170,170));

	this.addWindowListener(this);
	this.add(tor);
	this.add(torwart);
	this.add(ball);
	this.add(steuerung);
	this.addKeyListener(this);
	}


	public static void main(String args[]){
    Game mt1 = new Game();
	mt1.torwart();
    }

	//Beweg den  Ball!
	public void moveBall(int b1){

	if (b1 == 1){

		bx =(int)(ball.getLocation().getX());
		ball.setLocation((bx+5), 220);

	 } else {

	   			if (b1 == 2){

	   				 bx =(int)(ball.getLocation().getX());
					ball.setLocation((bx-5), 220);
	 			} else {
	   			bx = (int)(ball.getLocation().getX());
	   			try{


				while(by > 60){
						Thread.sleep(50);
						by = by -10;
						ball.setLocation(bx, by);

						if ((int)(ball.getLocation().getY()) < 70){
					     halt = true;

						 	if (ball.getLocation().getX() + 14 < torwart.getLocation().getX() && ball.getLocation().getX() > 140 || ball.getLocation().getX() > torwart.getLocation().getX() + 23 && ball.getLocation().getX() +20 < 340){

							 this.setTitle("Tor!");
							 ball.setLocation(bx, 40);
							 vb = true;

							 } else {
							 this.setTitle("verloren!");
							 vb = true;
							 }

						}
				}

				}catch(InterruptedException e){

				}



	 }
	 }

	}
	//

	//KeyListner
	 public void 	keyPressed(KeyEvent e){



	 	if (e.getKeyCode() == e.VK_LEFT){

			moveBall(2);

		} else {

					 if (e.getKeyCode() == e.VK_RIGHT){
	 					 moveBall(1);
	 				} else {

								if (e.getKeyCode() == e.VK_UP){

									moveBall(3);

								}


					}

		}	

	 } 

 	public void 	keyReleased(KeyEvent e){

	 }

  	public void 	keyTyped(KeyEvent e){



	 }

	//ende

	//Torwartsteuerrung
	public void torwart(){
while (!halt){ 	
		if (rechts){

			 try{
				  x = (int)(torwart.getLocation().getX());
			  	 y = x;
						while (x < (y + (Math.random()*100))){
									x= x+3;
									Thread.sleep(50);

									z = (int)((x + x + ball.getLocation().getX())/3);
									if(!halt){
									torwart.setLocation(z,40);
									}
						}


	 				rechts = false;
	 		}catch(InterruptedException e){

	 		}


		} else {

			try{
				  x = (int)(torwart.getLocation().getX());
			  		y = x;
						while (x > (y - (Math.random()*100))){
									x=x-3;
									Thread.sleep(50);
									z = (int)((x + x + ball.getLocation().getX())/3);
									if(!halt){
									torwart.setLocation(z,40);
									}
						}


	 				rechts = true;
	 		}catch(InterruptedException e){

	 		}

		}
}
	}
	//Ende

    //windowListener
	public void windowActivated(WindowEvent e){

	}

	public  void 	windowClosed(WindowEvent e){

	}

	public  void 	windowClosing(WindowEvent e){
	System.exit(0);
	}

	public  void 	windowDeactivated(WindowEvent e){

	}

	public  void 	windowDeiconified(WindowEvent e){

	}

 	public void 	windowIconified(WindowEvent e){

	}

 	public void 	windowOpened(WindowEvent e){

	}

	//ende



}


----------



## schnuffie (8. Dezember 2004)

Vielleicht wäre es sinnvoll, eine Initialisierungsmethode zu programmieren, anstatt den "armen" Konstruktor so derart zu "vergewaltigen"...  

Diese gesonderte Methode könntest Du dann per Button starten und schon geht's von vorn los. ;-)


----------



## tcppunk (8. Dezember 2004)

jetzt wo dus sagst^^


----------

