# Labyrinth programmieren/Denkhilfe



## NicoleK19 (20. Mrz 2010)

Hallo
ich würde gern so eine Art PacMan Spiel Programmieren. Also der Smiley soll durchs Labyrinth mit Pfeiltasten geteuert werden, Das spielfeld hab ich schon aufgebaut. Naja die Form zumindestens. Jetzt komm ich aber nicht weiter wie kann ich den jetzt Mauern und den Smiley also die Spielfigur  einfügen ???

Hier hab ich euch mal den Code ( soweit ich ihn hab ) :

```
package paketLabyrinth_Spiel;


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;



public class Spielfeld extends JPanel {
	
	private JFrame frame;
	private JPanel visualArea;
	final private int feldSize = 70;
	final private int textSpace = 50;
	
	public Spielfeld(){
		
		frame = new JFrame("Labyrinth");
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setSize(1024,768);
		frame.setPreferredSize(frame.getSize());
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		
		this.setSize((feldSize*10+1)+ textSpace, (feldSize*10+1) + textSpace);
		this.setPreferredSize(new Dimension((feldSize*10+1)+ textSpace, (feldSize*10+1)+ textSpace));
		this.setBackground(new Color(255,23,132));
		this.setOpaque(false);
		
		visualArea = new JPanel();
		visualArea.setSize(new Dimension(frame.getSize()));
		visualArea.setPreferredSize(new Dimension(frame.getSize()));
		visualArea.setLayout(new BorderLayout());
		visualArea.setBackground(Color.WHITE);
		visualArea.add(this, BorderLayout.EAST);

		frame.getContentPane().add(visualArea);
		frame.pack();
		frame.setVisible(true);

		
		
	}
	
	protected void paintComponent(Graphics g)
	{
		//Gitternetzlinien zeichnen
          g.setColor(Color.black);
		
          for(int zaehlerY = 0; zaehlerY < 10; zaehlerY = zaehlerY +1 )
  			for(int zaehlerX = 0; zaehlerX < 10; zaehlerX = zaehlerX+1)
  			{
  				
  				
  				g.drawRect((textSpace + (feldSize*zaehlerY)),
  						0 + (feldSize*zaehlerX),
  				feldSize, feldSize);
  			}
  		  
		 
	}



	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		new Spielfeld();

	}

}
```


----------



## Marco13 (20. Mrz 2010)

Erstmal ein Fenster aufmachen. Der Rest ergibt sich von ganz alleine.  

Naja, so ist es eben leider nicht 

Du solltest dir überlegen, wie du das Spiel modellieren willst. Welche Klassen es geben soll, welche Methoden und Fields die haben, und wie sie interagieren sollen. Streng genommen könnte es u.U. sogar so sein, dass das Spiel an sich "fertig" ist und gespielt werden kann - und dass man erst DANN mit dem GUI anfängt. Ein Spiel ist immer ein bißchen ein Grenzfall, wo "Model-View-Controller" nicht immer und unbedingt zur Religion erhoben werden muss, aber bestimmte Ideen sollte man davon schon übernehmen. Ganz pragmatisch: Du brauchst wohl eine Klasse für's Spielfeld, eine für die Spielfigur, und eine für die Geister. Und die Spielfigur und die Geister könnten von einer gemeinsamen, abstrakten Basisklasse erben. Vielleicht gibt es auch eine Klasse "Wand" (kann aber auch gut sein, dass nicht) und Klassen "EssbarerPunkt" und "PowerUpDingens" (die auch von einer gemeinsamen Klasse erben könnten)....


----------



## NicoleK19 (21. Mrz 2010)

Hi also hab mir natürlich ein paar Gedanken zu meinem Spiel gemacht und mir ist auch klar das ich verschiedene Klassen und so brauche. Aber ich bekomm das Bild einfach nicht in die Programmierung:bahnhof: da kommen nur Fehlermeldungen. Habs so versucht wies in dem Tutorial von hier steht !!!!:rtfm:
Kann mir vllt jemand sagen wie ich zum Besipiel den Smiley(Spielfigur) in das 1. Kästchen setzen kann ??????:L???:L???:L
Das währe super lieb von euch !!!!!!
Vielen Dank schonmal im Vorraus:applaus:
Liebe Grüße 
nici


----------



## Marco13 (21. Mrz 2010)

Wenn man jetzt sagt, dass man dazu

```
private Image smiley;

    public Spielfeld()
    {
        try
        {
            smiley = ImageIO.read(new File("image01.png"));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
...
    }



    protected void paintComponent(Graphics g)
    {
       ....
        g.drawImage(smiley, textSpace, 0, this);
    }
```
einfügen muss, machst du dass vielleicht, und denkst dann, du wärst einen wichtigen Schritt weiter. So ist es aber nicht....


----------

