# Hilfe bei Tower Defense



## nutizo (8. Jan 2011)

Hi Leute ich hab ein kleines Problem mit meinem kleinen Tower Defense Spiel ein oder zwei kleine Probleme und hoffe ihr könnt mir dabei helfen.
Nur zur Info:
Ich schreibe ein kleines Applet mit Eclipse.

Problem Num1:
Wie bekomme ich es hin, dass man den Turm nur an bestimmten stellen hinsetzen kann??

Problem Num2: 
Wie geht das, dass die Türme die Monster angreifen und auch treffen??

Schonmal ein Danke an alle die mir helfen.:toll:


----------



## Apo (8. Jan 2011)

Wenn ich das so lese würde ich dir vorschlagen, erstmal ein kleineres Spiel zu machen. 

Aber um deine Fragen zu beantworten:

1.) Am einfachsten wäre es den Spieluntergrund in ein 2dimensionales Array zu packen und da gibt es halt Punkte da dürfen Türme draus oder nicht.
Zweite Möglichkeit wäre eine pixelgenaue Lösung. Dazu bestimmst du einfach Rechtecke, wo du Türme hinsetzen darfst und überprüfst dann nur, ob der Turm dann drin liegt oder nicht

2.) Die Türme haben ja einen X und Y-Wert und einen gewissen Sichtradius. Und nun überprüfst du einfach die x und y-Werte der Monster, ob die sich im Sichtbereich befinden und falls ja dann schiesse.
Das mit dem Treffen ist eine andere Sache. Entweder die Türme schiessen schnell genug oder du berechnest einfach, wo der Gegner und x-Schritten ist und schiesst dahin.
So hatte ich das damals in meinem TowerDefense Klon gemacht.

Aber ich sage mal, das ist schon ein größeres Projekt. Man sollte gewisse Grundvorgehensweisen schon verinnerlicht haben. Wenn du es noch nicht kennst schau dir das Tutorial von Quaxil aus diesem Forum mal an.


----------



## nutizo (9. Jan 2011)

Äh eine Frage noch wenn ich bei Seite 20 fertig habe und das Programm abspielen will, dann kommt da immer diese Fehlermeldung:

```
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
	at javax.imageio.ImageIO.read(Unknown Source)
	at teil1.GamePanel.loadPics(GamePanel.java:118)
	at teil1.GamePanel.doInitializations(GamePanel.java:45)
	at teil1.GamePanel.<init>(GamePanel.java:38)
	at teil1.GamePanel.main(GamePanel.java:25)
```


----------



## Runtime (9. Jan 2011)

Diese Meldung kommt, wenn die Methode "read" von ImageIO aufgerufen wird. Sehr wahrscheinlich wird das Bild über getClass().getResource() oder getClass().getResourceAsStream() geladen und die Datei nicht gefunden, womit null zurückgegeben wird.


----------



## nutizo (9. Jan 2011)

Ich hab das hier:
[Java]
private void doInitializations() {

		last = System.nanoTime();

		actors = new Vector<Sprite>();
		BufferedImage[] heli = this.loadPics("pics/heli.gif", 4);
		copter = new Sprite(heli, 400, 300, 100, this);
		actors.add(copter);

		Thread t = new Thread(this);
		t.start();
	}
[/code]
und an dem Fleck hab ich auch das Bild also was ist da los??


----------



## Runtime (9. Jan 2011)

Die Datei heli.gif kann nicht gefunden werden. Aber zeig mal die Methode loadPics.


----------



## nutizo (9. Jan 2011)

```
private BufferedImage[] loadPics(String path, int pics) {
		BufferedImage[] anim = new BufferedImage[pics];
		BufferedImage source = null;

		URL pic_url = getClass().getClassLoader().getResource(path);

		try {
			source = ImageIO.read(pic_url);
		} catch (IOException e) {
		}

		for (int x = 0; x < pics; x++) {
			anim[x] = source.getSubimage(x * source.getWidth() / pics, 0,
					source.getWidth() / pics, source.getHeight());
		}

		return anim;
	}
```


----------



## Runtime (9. Jan 2011)

Gib mal pic_url aus, dann wirst du sehen, dass die Variable keinen Wert hat. Ich bleibe dabei, dass die Datei nicht gefunden wird / am falschen Ort ist.


----------



## nutizo (9. Jan 2011)

Stimmt da kommt null raus aber wie soll man das sonst machen??


----------



## Runtime (9. Jan 2011)

Das Bild an den richtigen Ort verschieben.


----------



## nutizo (9. Jan 2011)

Kanns sein, dass das an Eclipse liegt weil ich hab das Zeug mal ohne Eclipse ausgeführt und da gings.


----------



## Final_Striker (9. Jan 2011)

Existiert das Bild jetzt überhaupt oder nicht???


----------



## Apo (9. Jan 2011)

könnte das typische src/bin Problem sein. Wenn du dir sicher bist, einen pics Ordner zu haben mit dem Bild drin ... dann packe ihn vielleicht mal in das bin Verzeichnis.


----------



## tdc (9. Jan 2011)

Das Problem hatte ich auch bereits. Es sollte funktionieren, wenn du bei dem Package-Explorer Rechtsklick->Refresh machst.


----------



## nutizo (9. Jan 2011)

So siehts aus und ich hab das alles schon ein paar mal reinkopiert


----------



## nutizo (9. Jan 2011)

und das mit dem refreshen geht auch nicht


----------



## Final_Striker (9. Jan 2011)

dein Verzeichnis muss so aussehen:

src
|- Cloud.java
|-...
|- pics
&nbsp;&nbsp;|- background.jpg
&nbsp;&nbsp;|- ...
|- sound
&nbsp;&nbsp;|- boom.wav
&nbsp;&nbsp;|- ...


Du hast deine Klassen und Bild-Ordner in ein "teil1" Package abgelegt, anstatt direkt in src, deshalb findet er die Bilder auch nicht.


----------



## Final_Striker (9. Jan 2011)

Final_Striker hat gesagt.:


> dein Verzeichnis muss so aussehen:
> 
> 
> ```
> ...


----------



## nutizo (9. Jan 2011)

Also so?:




Tja so gehts auch nicht;D


----------



## Final_Striker (9. Jan 2011)

Siehst du bei mir irgendwo ein "teil1" Package?


----------



## nutizo (9. Jan 2011)

Also alles in den Source ordner oder was??


----------



## Final_Striker (9. Jan 2011)

Ja.

Die Klassen und die Bild, Sound Ordner in deinen src Ordner kopieren


----------



## nutizo (9. Jan 2011)

Hey Danke es geht


----------

