Gegner schiessen lassen

.basti

Aktives Mitglied
Hallo zusammen,
in meinem Spiel möchte ich jetzt meinen Gegner schiessen lassen. Prinzipiell sollen dafür alle 0,5 Sekunden drei neue Kugeln erzeugt werden und in unterschiedliche Richtungen geschossen werden. Der Vorgang soll also folgendermaßen ablaufen: Gegner schießt drei Kugeln in drei verschieden Richtung(nach links, links oben, oben) -> nach 0,5s soll er drei neue Kugeln schiessen, die in die selbe Richtung wie vorher fliegen.
Das einzige woran es scheitert ist, dass ich nicht weis wie ich nach der halben Sekunde drei neue Kugeln erzeugen kann. Meine Vermutung sind Arrays zu erzeugen von meiner Kugel Klasse aber damit kenn ich mich nicht gut aus und deswegen such ich hier Hilfe.
Hoffe das Problem ist zu verstehen
LG
 
G

Gelöschtes Mitglied 65838

Gast
wo bist du unterwegs.... javafx... swing ... konsole ... kartoffel.. ? ohne basics zu wissen was du überhaupt machst und wie kann dir niemand helfen

du hast das XY problem dargestellt
 

.basti

Aktives Mitglied
Oke oke ich erklärs genauer. Ich hab ein JFrame und ein JPanel auf welchem mein ganzes Spiel abläuft. Ich zeichne alles auf mein JPanel mit paintComponent(). Meine Kugeln Zeichne ich einfach als kreise. Ich hab außerdem drei verschieden Methoden um die Schussrichtungen der Kugeln zu beschreiben:
[CODE lang="java" title="Schuss in x Richtung"]public void xSchuss() {
x--;
}[/CODE]
[CODE lang="java" title="Schuss in x und y Richtung"]public void xySchuss() {
x--;
y--;
}[/CODE]
[CODE lang="java" title="Schuss in y Richtung"]public void ySchuss() {
y--;
}[/CODE]
Jeweils eine der drei abgeschossenen Kugeln erhält eben eine der drei Schussrichtungen zugewiesen.
Zu Beginn setze ich alle drei Kugeln auf die selbe StartPostion von welcher aus sie sich bewegen.
So viel zu meiner Klasse Kugel. Jetzt zur Gegner Klasse:
In dieser Klasse gibt es eine Methode schiessen() welche eine TimerTask enthält:
[CODE lang="java" title="schiessen Methode"]public void schiessen() {
schiessen = true;
TimerTask schuss = new TimerTask() {
public void run() {
schuss();
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(schuss, 0, 500);
}[/CODE]
Die Variable schiessen ist hier eigentlich unwichtig die prüft einfach ob die Kugeln gezeichnet werden sollen oder nicht. Wenn true dann gezeichnet, wenn false eben nicht. Alle 500ms wird hier die Methode Schuss() ausgeführt:
[CODE lang="java" title="Schuss Methode"]public void schuss() {
kugel1.xSchuss();
kugel2.xySchuss();
kugel3.ySchuss();
}[/CODE]
Das ist aber nicht das was ich haben möchte. Ich möchte dass in meiner TimerTask alle 500ms drei neue Kugeln erzeugt werden, welche dann auch jeweils eine der drei Schussrichtungen zugewiesen bekommen. Jetzt also zu meiner Frage:
Wie kann ich alle 500ms drei neue Kugeln erzeugen? Arrays erzeugen? Wenn ja wie?
 
G

Gelöschtes Mitglied 65838

Gast
Oke oke ich erklärs genauer. Ich hab ein JFrame und ein JPanel auf welchem mein ganzes Spiel abläuft.
die erklärung und die angaben waren wichtig und richtig, ich kann swing / awt nicht deswegen kann ich dir leidern nicht weiter helfen mit der genauen implementierung

ich weis es wie zb von unity und unreal
hier kann man vektoren ( in dem fall 2D vektoren) benutzen um die Schussrichtung zu bestimmen
dh mit einem Vektor von (1,1) bewegt sich die kugel pro sekunde 1 in X richtung und 1 in Y Richtung, somit könntest du eine "richtung" implementieren => wenn zufalls richtugn dann halt mit zufalls zahlen
 

.basti

Aktives Mitglied
oke kein Thema danke trotzdem. Die Richtung und alles funktioniert schon nur nicht die Erzeugung von neuen Kugeln. Weis da jemand weiter?
 

KonradN

Super-Moderator
Mitarbeiter
Eine mögliche Herangehensweise kann immer sein: Logik und Darstellung trennen.

Dann ist die Spiellogik frei implemenmtierbar und unabhängig von jeder Oberfläche. Hat den Vorteil, dass Du das Spiel einfacher portieren kannst (so lange Du die Abhängigkeiten alle hast, also z.B. die Sprache Java).

Und dann kann man etwas auf die Probleme eingehen:
a) "Arrays nutzen" ->x Arrays sind super, wenn man die Anzahl der Elemente genau kennt. Ansonsten sind z.B. Listen sinnvoller. Hier ggf. einfach einmal schauen, was für Collections Java so kennt incl. der Möglichkeiten und der Vor-/Nachteile.

b) Eine Sache immer wieder nach einer bestimmten Zeit machen. Das ist eine typische Anwendung für einen Timer. Der kann immer direkt alle x ms etwas machen. Hier gibt es teilweise spezielle Implementierungen von irgendwelchen Frameworks, aber java hat z.B. direkt den java.util.Timer, der verwendet werden kann. Eine andere Option kann ein Thread sein und da gibt es dann ggf. Thread.sleep Aufrufe. Speziell für kleine Wartezeiten kann das interessant sein.

c) Unter dem Strich sind das, was Du bisher beschrieben hast, relativ einfache Dinge. Du hast Kugeln, die Du z.b. in einer Liste vorhältst. Dann kann da regelmäßig z.B. durch einen Timer neue Kugeln hinzu kommen. Die Liste kann man dann durchgehen um die Kugeln z.B. regelmäßig zu bewegen. Bei jeder Bewegung kann eine Kollision geprüft werden u.s.w. Die Bewegung selbst kann dann z.B. über einen Vektor definiert sein (siehe andere Antwort).

Hier stehen generell alle Türen und Tore offen. Generell wäre mein Ansatz aber immer, dass ich das Model als erstes definiere um dann erst darauf eine Oberfläche auf zu bauen.

Ich hoffe, das diese Anregungen etwas helfen können.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Warum tut der Gegner nicht das was er soll? Spiele- und Multimedia-Programmierung 13
J Gegner verfolgt den Spieler Spiele- und Multimedia-Programmierung 7
BRoll Kampfspiel - Gegner-KI schreiben "Wettbewerb" Spiele- und Multimedia-Programmierung 8
G Prüfe ob Gegner getroffen wurde Spiele- und Multimedia-Programmierung 8
G Prüfen ob Gegner getroffen wurde Spiele- und Multimedia-Programmierung 2
K Schiessen in 2D (LWJGL) Spiele- und Multimedia-Programmierung 2
I Wie kann ich die Kreise nach jeweils 1s spawnen lassen? Processing Spiele- und Multimedia-Programmierung 1
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
D JFrames in For Schleife öffnen lassen Spiele- und Multimedia-Programmierung 2
J CMD Output aktualisieren lassen statt neu erstellen? Spiele- und Multimedia-Programmierung 1
H Recheckte nacheinandergenerieren lassen (Applet) Spiele- und Multimedia-Programmierung 2
E Zwei Threads miteinander laufen lassen Spiele- und Multimedia-Programmierung 6
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
S Spiel installeren lassen und organisieren Spiele- und Multimedia-Programmierung 3
B Zufalls Insel generieren lassen Spiele- und Multimedia-Programmierung 11
J Bestimmte Pixel transparent erscheinen lassen Spiele- und Multimedia-Programmierung 5
Fl4sh1 Datum und Uhrzeit von einem Ereignis ausgeben lassen Spiele- und Multimedia-Programmierung 3
F Screenshot Programm nach Exception weiterlaufen lassen? Spiele- und Multimedia-Programmierung 9
M MJPEG Stream aufnehmen (Speichern und von VirtualDub weiterverarbeiten lassen). Spiele- und Multimedia-Programmierung 2
S Wolken Bild/Grafik vom Programm erstellen lassen Spiele- und Multimedia-Programmierung 11
F Programm mit Java3D unter Linux laufen lassen Spiele- und Multimedia-Programmierung 3
F LWJGL Smoother animieren lassen (wie bei JOGL = Animator) Spiele- und Multimedia-Programmierung 3
aze Java3D:Farbige Flächen verschwinden lassen(Transparenz- oder Colorinterpolator?)) Spiele- und Multimedia-Programmierung 5
J ping pong ball abprallen lassen Spiele- und Multimedia-Programmierung 12
StrikeTom Auto in bestimmte Richtung fahren lassen Spiele- und Multimedia-Programmierung 37
A Halbkreise zeichnen lassen? Spiele- und Multimedia-Programmierung 2
F Schleife warten lassen Spiele- und Multimedia-Programmierung 8
Developer_X 3D Point rotieren lassen Spiele- und Multimedia-Programmierung 17
P Ball mit schwerkraft hüpfen lassen Spiele- und Multimedia-Programmierung 9
K Kanten anzeigen lassen in einem Shape3D-Objekt Spiele- und Multimedia-Programmierung 4
A ein Auto seinen Weg folgen lassen Spiele- und Multimedia-Programmierung 3
W Computer herunterfahren lassen Spiele- und Multimedia-Programmierung 11
B Buttontexte langsam nacheinander erscheinen lassen Spiele- und Multimedia-Programmierung 3
P NPC zufällig laufen lassen, aber wie? Spiele- und Multimedia-Programmierung 2
D Dreieck um den Mittelpunkt rotieren lassen Spiele- und Multimedia-Programmierung 9
V Objekt per Tastendruck anzeigen/verschwinden lassen? Spiele- und Multimedia-Programmierung 4
A Objekte nacheinander zeitgesteuert rotieren lassen Spiele- und Multimedia-Programmierung 4
R Figur springen lassen Spiele- und Multimedia-Programmierung 10

Ähnliche Java Themen

Neue Themen


Oben