![]() |
Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Hey ich habe versucht das Spiel "Aspirin" nachzuprogrammieren.
Leider habe ich es nicht hinbekommen die Berechnung von einer Berührung der Gegnereinheiten zu berechnen. Ich habe mich immer weiter rein programmiert und wahrscheinlich völlige scheisse gebaut xD Habe euch das Projekt mal in den Anhang gepackt. TGegner und der Shape "Spieler" sind hierbei entscheidend. Hoffendlich könnt ihr mir helfen. LG Premaider |
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Ich glaube nicht, dass dir jemand sehr exakten Code liefern wird, sodass dein Programm funktioniert. Du musst schon eine Eigenleistung bringen, d.h. präsentiere die Stellen, wo das Problem liegt/die Probleme liegen, denn, davon gehe ich aus, du hast ja schließlich Ahnung, wo in deinem Projekt die entsprechenden Abfragen stecken, die eben nicht so funktionieren, wie sie sollen.
|
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Das habe ich auch garnicht erwartet.
Wäre schön wenn du mir die Fehler nennen könntest. |
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Ohne Fehlerbeschreibung weiß ich nichtmal wonach ich suchen soll.
Tipp: Es haben hier schon ein/zwei Andere versucht dieses Spiel nachzuprogrammieren ... da darf man gerne abgucken, wie die es gemacht haben und auch das lesen was dort geantwortet wurde. |
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Zitat:
Es fehlt nurnoch die "Zusammenstossfunktion" von Spieler und Gegner. Aber da es theoretisch unendlich viele Gegner sein können krieg ich das nicht so ganz hin. Spieler und Ziel hab ich meiner Meinung nach schon elegant gelöst :D |
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Zitat:
Hast du schon mal versucht, das mit der Kollision auf einem Blatt Papier aufzumalen und dann überlegt, wie man rechnerisch die Kollision erkennen kann? Nein -> warum fängst du an zu programmieren, wenn du nicht weißt was? Ja -> wo kommst du nicht weiter? Lad mal die Zeichnung hoch und die Berechnung, dann schauen wir mal |
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Um was genau gehts bei dem Spiel eigentlich? Wenn ich einen Gegner berühre kommt ein weiterer hinzu? Ist das der Trick des Spiels? Sorry, aber von dem Spiel habe ich wahrlich noch nie was gehört :stupid:
|
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Zitat:
Ankatete:= Ziel.left - Spieler.left Gegenkatete:= Ziel.top - Spieler.top HypotenuseHoch2:=(Ankatete*Ankatete)+(Gegenkatete* Gegenkatete) Hypotenuse:=sqrt(HypotenuseHoch2) sqrt mit Hilfe der Math-unit Zitat:
|
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Nur mal so für Spaß eine vereinfachte Betrachtungsweise:
Delphi-Quellcode:
Und im Code dann:
type
TFigur = class Top, Left : Integer; function AbstandZu( aFigur : TFigur ) : Extended; end; TSpieler = class( TFigur ) end; TZiel = class( TFigur ) end; TGegner = class( TFigur ) end; function TFigur.AbstandZu( aFigur : TFigur ) : Extended; begin Result := Sqrt( Sqr( Self.Left - aFigur.Left ) + Sqr( Self.Top - aFigur.Top ) ); end;
Delphi-Quellcode:
BTW: Für die Kollisionsbehandlung würde sich hier das Visitor-Pattern anbieten, das habe ich aber bewusst herausgelassen um nicht mehr zu verwirren. Obschon es sehr viel Charme hätte und den Code insgesamt nochmals verkürzen würde.
var
Spieler : TSpieler; Ziele : TList; Gegner : TList; begin // Gegner berührt? for idx := 0 to Pred( Gegner.Count ) do if Spieler.AbstandZu( TFigur( Gegner[idx] ) ) < 10 then // 10 ist jetzt einfach nur als Beispiel genommen GegnerKollision( TGegner( Gegner[idx] ) ); // Behandlung der Kollision mit einem Gegner // Ziel berührt? for idx := 0 to Pred( Ziele.Count ) do if Spieler.AbstandZu( TFigur( Ziele[idx] ) ) < 10 then // 10 ist jetzt einfach nur als Beispiel genommen ZielEingefangen( TZiel( Ziele[idx] ) ); // Behandlung der Kollision mit einem Ziel end; |
AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Zitat:
Delphi-Quellcode:
Geht das denn so überhaupt für Delphi7 ?
[Fehler] Unit1.pas(51): Bezeichner redefiniert: 'TFigur.AbstandZu'
[Fehler] Unit1.pas(52): Undefinierter Bezeichner: 'Result' [Fehler] Unit1.pas(52): Undefinierter Bezeichner: 'Self' [Fehler] Unit1.pas(52): Undefinierter Bezeichner: 'aFigur' [Fehler] Unit1.pas(52): 'END' erwartet, aber ')' gefunden [Fehler] Unit1.pas(100): Undefinierter Bezeichner: 'idx' [Fehler] Unit1.pas(102): Undefinierter Bezeichner: 'GegnerKollision' [Fehler] Unit1.pas(107): Undefinierter Bezeichner: 'ZielEingefangen' [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz