# Kleines Spongebobspiel / Hilfe gesucht



## MQsky (17. Dez 2012)

Hallo,

ich habe gerade ein Java-Projekt aus dem letzten Schuljahr wieder aufgenommen. Leider habe ich seitdem ein bisschen was vergessen, was ich eigentlich noch wissen sollte, kann mir das alleine aber nicht so wirklich erschließen.

Der Sinn des Spiels ist es, Spongebob durch ein "Labyrinth" zu Patric zu führen. Soweit klappt das schon ganz gut. Ich möchte jetzt allerdings noch, dass ein Bild/Label oder ähnliches erscheint, dass einen von mir bestimmten Text ausgibt, sobald Patric erreicht ist.

Wie gesagt, ich habe ein bisschen - um nicht zu sagen das Meiste - im letzten Jahr vergessen.


```
import java.awt.*;
import java.applet.*;

public class Labyrinth
{
        int [][] feld = {
            {0,0,0,0,1,2,1,1,1,1},
            {0,1,1,0,1,0,1,5,1,0},
            {0,1,1,0,1,0,0,0,0,0},
            {4,1,3,0,1,1,1,0,1,0},
            {1,0,0,6,0,0,1,1,1,7},
            {1,1,1,0,1,3,1,1,1,0},
            {1,1,1,0,1,1,0,0,0,0},
            {0,8,0,0,0,0,0,1,0,0},
            {0,1,0,1,1,1,1,0,1,0},
            {3,0,0,1,1,1,3,0,0,0}
        };
        Image stein, spongebob, burger, patrick, qualle, sand, qualle2, qualle3, qualle4, happyend;
        int hx,hy,qx,qy,q1x,q1y,q2x,q2y,q3x,q3y,q;
        int punkte;
        int h = 1;
    public Labyrinth(Applet app)
    {
        // initialise instance variables
        // feld = new int[10][10];
        sand = app.getImage(app.getCodeBase(),"Sand.jpg");
        spongebob = app.getImage(app.getCodeBase(),"Spongebob.jpg");
        burger = app.getImage(app.getCodeBase(),"Burger.jpg");
        patrick = app.getImage(app.getCodeBase(),"Patrick.jpg");
        qualle = app.getImage(app.getCodeBase(),"Qualle.jpg");
        qualle2 = app.getImage(app.getCodeBase(),"Qualle.jpg");
        qualle3 = app.getImage(app.getCodeBase(),"Qualle.jpg");
        qualle4 = app.getImage(app.getCodeBase(),"Qualle.jpg");
        stein = app.getImage(app.getCodeBase(),"Stein.jpg");
        
        hx=5;
        hy=0;
        qx=7;
        qy=2;
        q=-1;
        //q1x=
        //q1y=
        //q2x=
        //q2y=
        //q3x=
        //q3y=
    }


    public void anzeigen(Applet app, Graphics g){
       g.setColor(Color.WHITE);
       g.fillRect(0,0,500,500);
       g.setColor(Color.BLACK);
       
       qualleMove();
       

       for (int y = 0; y < 10; y++)
          for (int x = 0; x < 10; x++){
              switch (feld[x][y]){
                  if (h = 1) {
                  case 0: g.drawImage(sand, x*50,y*50,50,50,app); break;
                  case 1: g.drawImage(stein, x*50,y*50,50,50,app); break;
                  case 2: g.drawImage(spongebob, x*50,y*50,50,50,app); break;
                  case 3: g.drawImage(burger, x*50,y*50,50,50,app); break;
                  case 4: g.drawImage(patrick, x*50,y*50,50,50,app); break;
                  case 5: g.drawImage(qualle, x*50,y*50,50,50,app); break;
                  case 6: g.drawImage(qualle2, x*50,y*50,50,50,app); break;
                  case 7: g.drawImage(qualle3, x*50,y*50,50,50,app); break;
                  case 8: g.drawImage(qualle4, x*50,y*50,50,50,app); break;
              }
                if (h = 2) {
                   g.drawImage(happyend, 0,0,500,500); break; 
                }
            }
                
        }
          

      
          
    }
   
  public void qualleMove(){
            feld[qy][qx] = 0;
              q++;
            if (q<=3)
               qy++;
            if (q>2){
               
               qy--;
            }
            if (q>4){
               q=1;
               qy=2;
            }
            
            
            feld[qy][qx] = 5;
            
    }
    

    public boolean links(Applet app, Graphics g)
    {
        boolean erg=true;
        if (feld[hy][hx-1] != 1){//keine Wand
        feld[hy][hx]=0;
        hx--;

            if (feld[hy][hx] == 3)
                punkte= punkte + 100;
            if (feld[hy][hx] == 4){
                //g.drawImage(happyend, 0,0,500,500); break;
                h++;
                
            }
            if (feld[hy][hx] == 5)
               {hy= 0 ; hx= 5;}
                

                   
            feld[hy][hx]=2;
      }   
    return erg;
    }

    public boolean oben(Applet app, Graphics g)
    {
        boolean erg=true;
        if (feld[hy-1][hx] != 1){//keine Wand
        feld[hy][hx]=0;
        hy--;

            if (feld[hy][hx] == 3)
                punkte= punkte + 100;
            if (feld[hy][hx] == 4){
                //g.drawImage(happyend, 0,0,500,500); break;
                h++
                
            }
            if (feld[hy][hx] == 5)
               {hy= 0 ; hx= 5;}
                  
            feld[hy][hx]=2;
      }   
    return erg;
    }

    public boolean rechts(Applet app, Graphics g)
    {
        boolean erg=true;
        if (feld[hy][hx+1] != 1){//keine Wand
        feld[hy][hx]=0;
        hx++;

            if (feld[hy][hx] == 3)
                punkte= punkte + 100;
            if (feld[hy][hx] == 4){
                //g.drawImage(happyend, 0,0,500,500); break;
                h++
                
            }
                 
            if (feld[hy][hx] == 5)
               {hy= 0 ; hx= 5;}
               
  
                     
            feld[hy][hx]=2;
      }   
    return erg;
    }

    public boolean unten(Applet app, Graphics g)
    {
        boolean erg=true;
        if (feld[hy+1][hx] != 1){//keine Wand
        feld[hy][hx]=0;
        hy++;

            if (feld[hy][hx] == 3)
                punkte= punkte + 100;
            if (feld[hy][hx] == 4){
                //g.drawImage(happyend, 0,0,500,500); break;
                h++
                
            }
            if (feld[hy][hx] == 5)
               {hy= 0 ; hx= 5;}
 
                  
               
            feld[hy][hx]=2;
      }   
    return erg;
}

  
}
```

und


```
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Territorium extends JApplet implements  KeyListener
{
    Labyrinth geh;
    Label lb;
    int punkte;

    public void init()
    {
     geh = new Labyrinth(this);
     
     getContentPane().setLayout(null);
     
     lb = new Label ("  Punkte " );

     lb.setBounds(450,200,50,50);
     getContentPane().add(lb);
     
     lb.addKeyListener(this);
     lb.requestFocus();  
       
    }

   
    
    public void keyTyped(KeyEvent e) {}
    
    public void keyPressed(KeyEvent e) {
        int taste = e.getKeyCode();    
        String s =  "     " + geh.punkte ;
        
        lb.setText(s);

        switch(taste) {
            case 37:     geh.oben();break;
            case 38:     geh.links();break;
            case 39:     geh.unten();break;
            case 40:     geh.rechts();break;
        }
        repaint();
         lb.requestFocus();
    }

    public void keyReleased(KeyEvent e) {}
   
    public void paint (Graphics g){
        geh.anzeigen(this,g);
    }
}
```

Vielen Dank an alle, die sich Geduld mit mir nehmen wollen


----------



## Titanpharao (17. Dez 2012)

Ja und jetzt?

Willst du wissen wie => Code funktioniert?

```
Graphics.drawString(String str, int x, int y);
```

Einfach eine "isWin" funktion einbauen und wenn die auf true steht, den Win Text ausgeben.

Hoffe ich habs so richtig verstanden.


----------



## shadowlif (18. Dez 2012)

Moin,
nochmal mehr Code zum testen ob man bei Patrick ist:


```
if(isWin == false && spongebobX == patrickX && spongebobY == patrickY) {
	isWin = true;
}

if(isWin) {
	Graphics.drawString("Gewonnen !", 300, 250);
}
```

So würde ich vorgehen(bin noch ein Anfänger).


----------

