Hilfe bei Tower Defense

nutizo

Mitglied
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:
 
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.
 
Äh eine Frage noch wenn ich bei Seite 20 fertig habe und das Programm abspielen will, dann kommt da immer diese Fehlermeldung:
Java:
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)
 
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.
 
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??
 
Java:
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;
	}
 
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.
 
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.
 
Das Problem hatte ich auch bereits. Es sollte funktionieren, wenn du bei dem Package-Explorer Rechtsklick->Refresh machst.
 
09-01-2011 15-29-00.png

So siehts aus und ich hab das alles schon ein paar mal reinkopiert
 
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.
 

Zurück
Oben