Blitz Basic --> Strategiespiel --> Kämpfen (Programmieren)

Blitz Basic --> Strategiespiel --> Kämpfen (Programmieren)

Hi,

also, ich hab angefangen in Blitz BAsic ein Strategiespiel ähnlich Age of Empires zu erstellen. Dabei habe ich das Problem, dass die Einheiten selbstständig auf gegner schießen sollen. Ich brauche ne Prozedur, wie ich abfragen kann, ob sich gegner in der reichweite der Einheiten befinden, die möglichst wenig Rechenleistung erfordert. Dabei sind meine Einheiten in einem Dim Feld gespeichert, und auf den Feldern der Karte ist jeweils ein Vermerk, wenn sich auf einem bestimmten Feld eine Einheit befindet.
Ich könnte jetzt ja entweder die koordinaten jeder Einheit mit denen jeder anderen Einheit vergleichen, oder für jede einheit alle Kartenfelder innerhalb der Sichtweite prüfen. Beides dauert extrem lange bei vielen Einheiten. Hat jemand eine Idee für eine kürzere Lösung??

Schon mal vielen Dank, Niko
Zunächst - wenn das Dein erstes Spiel ist, solltest Du unbedingt ein anderes, deutlich einfacheres Genre (z.B. Pac-Man) wählen. Strategiespiele sind sehr anspruchsvoll. Du wirst Dich mit großer Wahrscheinlichkeit verzetteln.

Zu Deinem Problem: Zu kannst bei 2D-Koordinaten den Abstand zwischen zwei Punkten berechnen. Ermittle den X-Abstand (waagerecht) und den Y-Abstand (senkrecht) und rechne

Wurzel (X-Abstand ^ 2 + Y-Abstand ^ 2).
ah, Erinnerungen an Mathe 9,10. Klasse! Pythagoras
Das ist schon richtig, aber dann muss ich immer noch jede existierende Einheit mit jeder anderen vergleichen, was bei n Einheiten mindestens (n(n-1))/2 vergleiche sind und somit bei vielen Eiheiten extremen Rechenaufwand bedeutet, da der Rechenaufwand quadratisch von der Anzahl der Einheiten abhängt.

Niko

PS. soweit war ich auch schon, trotzdem Danke.
Beziehungsweise, (n(n*(a-1))/2 wenn ich nur mit den positionen aller Einheiten der anderen Spieler vergleiche und die Anzahl der Spieler durch a gegeben sei.
Logge dich ein um einen Beitrag zu schreiben.