# [SLICK] Rectangle in Array Speichern



## Nitrama (19. Nov 2012)

Hallo,

Ich habe vor 2 Tagen mit JAVA angefangen und wolle eigendlich ein kleines Spiel mit der SLICK Engine Programmieren.

Ich kenne ja schon ein paar andere Programmieren Sprachen aber das bekomme ich einfach nicht hin.

Hier erst mal der Komplette Code Haufen.


```
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Rectangle;
import org.newdawn.slick.geom.Shape;
import org.newdawn.slick.opengl.renderer.Renderer;


public class start extends BasicGame {
	
	
	int ii = 0;
	int iii = 0;

	
	
	//for ( int i = 1; i <= 10000; i++ )   { 
	//	ii += 20;
	///	if (ii > 700) {ii = 0; iii += 20;}
//}
	//ii=0;
	//iii=0;



		Shape[] rect = {new Rectangle(100,100,100,100), new Rectangle(300,100,100,100)};


	
	public start() {
		super("My Game");
	}
	
	/**
	 * @see org.newdawn.slick.BasicGame#init(org.newdawn.slick.GameContainer)
	 */
	public void init(GameContainer container) throws SlickException {
	}

	/**
	 * @see org.newdawn.slick.BasicGame#render(org.newdawn.slick.GameContainer, org.newdawn.slick.Graphics)
	 */
	public void render(GameContainer container, Graphics g) {
		g.setColor(Color.white);

		for ( int i = 1; i <= 10000; i++ )   { 
			ii += 20;
			if (ii > 700) {ii = 0; iii += 20;}

			  g.drawString("gh", ii, iii);}
		ii=0;
		iii=0;
      

        
		g.setColor(Color.white);
		g.draw(rect[0]);
		g.draw(rect[1]);
	}

	/**
	 * @see org.newdawn.slick.BasicGame#update(org.newdawn.slick.GameContainer, int)
	 */
	public void update(GameContainer container, int delta) {
	}

	/**
	 * @see org.newdawn.slick.BasicGame#keyPressed(int, char)
	 */
	public void keyPressed(int key, char c) {
		if (key == Input.KEY_ESCAPE) {
			System.exit(0);
		}
	}
	
	/**
	 * Entry point to our test
	 * 
	 * @param argv The arguments passed to the test
	 */
	public static void main(String[] argv) {
		try {
			Renderer.setRenderer(Renderer.VERTEX_ARRAY_RENDERER);
			
			AppGameContainer container = new AppGameContainer(new start());
			container.setDisplayMode(1000,800,false);
			container.start();
		} catch (SlickException e) {
			e.printStackTrace();
		}
	}
}
```

So wie es jetzt ist Funktioniert es.

Ich möchte aber das "rect" (Zeile 31) mit einer schleife erstellt wird.

Also ich möchte nicht  "Shape[] rect = {new Rectangle(100,100,100,100), new Rectangle(300,100,100,100)};" sondern so


```
for ( int i = 1; i <= 10000; i++ )   { 
		ii += 20;
	if (ii > 700) {ii = 0; iii += 20;}
	Shape[] rect = new Rectangle(ii,iii,100,100);
}
```

was natürlich nicht funktioniert.

Ich hoffe ich habe mir verständlich ausgedrückt. 

Gruß Nitrama


----------



## TKausL (19. Nov 2012)

Bevor du dich an die Spieleprogrammierung machst würde ich dir empfehlen, dich erstmal an die Grundlagen ranzumachen.
Wenn du mit Arrays nicht klarkommst nimm eine Collection ([JAPI]ArrayList[/JAPI] beispielsweise)


----------



## Nitrama (19. Nov 2012)

erstmal danke an dich @TKausl

Jetzt hab ich noch ein Kleines problem.


```
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Rectangle;
import org.newdawn.slick.geom.Shape;
import org.newdawn.slick.opengl.renderer.Renderer;

import java.util.ArrayList;

public class start extends BasicGame {
	

	
	public start() {
		super("My Game");
	}
	
	/**
	 * @see org.newdawn.slick.BasicGame#init(org.newdawn.slick.GameContainer)
	 */
	public void init(GameContainer container) throws SlickException {
	}

	/**
	 * @see org.newdawn.slick.BasicGame#render(org.newdawn.slick.GameContainer, org.newdawn.slick.Graphics)
	 */
	public void render(GameContainer container, Graphics g) {
		
		g.setColor(Color.white);
int ii = 0;
int iii =0;
		for ( int i = 1; i <= 10000; i++ )   { 
			ii += 20;
			if (ii > 700) {ii = 0; iii += 20;}

			  g.drawString("gh", ii, iii);}
		ii=0;
		iii=0;
      

        
		g.setColor(Color.white);		
	//	g.draw(liste[0]);
	//	g.draw(liste[1]);
	}

	/**
	 * @see org.newdawn.slick.BasicGame#update(org.newdawn.slick.GameContainer, int)
	 */
	public void update(GameContainer container, int delta) {
	}

	/**
	 * @see org.newdawn.slick.BasicGame#keyPressed(int, char)
	 */
	public void keyPressed(int key, char c) {
		if (key == Input.KEY_ESCAPE) {
			System.exit(0);
		}
	}
	
	/**
	 * Entry point to our test
	 * 
	 * @param argv The arguments passed to the test
	 */
	public static void main(String[] argv) {
		
int ii = 0;
int iii = 0;
       

		ArrayList liste = new ArrayList();
		for ( int i = 1; i <= 100; i++ )   { 
			ii += 20;
		if (ii > 700) {ii = 0; iii += 20;}
		liste.add( new Rectangle(ii,iii,100,100));}
		
		  System.out.println(liste);


		
		try {
			Renderer.setRenderer(Renderer.VERTEX_ARRAY_RENDERER);
			
			AppGameContainer container = new AppGameContainer(new start());
			container.setDisplayMode(1000,800,false);
			container.start();
		} catch (SlickException e) {
			e.printStackTrace();
		}
	}
}
```


Bei Zeile 79 wird deklariert.
Jetzt hab ich ein Problem.
Wie kann ich das Array "liste" jetzt über all im Code Benutzen?


----------



## Helgon (20. Nov 2012)

In dem du es nicht in der Main Methode, sondern der Klasse deklarierst?



TKausL hat gesagt.:


> Bevor du dich an die Spieleprogrammierung machst würde ich dir empfehlen, dich erstmal an die Grundlagen ranzumachen.



Nicht bös gemeint, würde dich aber weiter bringen


----------

