AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Spiel nachprogrammieren - Gegnerberührung funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

Ein Thema von Premaider · begonnen am 28. Aug 2012 · letzter Beitrag vom 30. Aug 2012
Antwort Antwort
Seite 1 von 2  1 2      
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#1

Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 18:54
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
Angehängte Dateien
Dateityp: rar Aspirin.rar (166,6 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 20:34
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#3

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 20:42
Das habe ich auch garnicht erwartet.
Wäre schön wenn du mir die Fehler nennen könntest.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 21:34
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#5

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 21:39
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.
Naja möchte es auf meine Weise machen. Der Fehler ist, dass es nicht funktioniert..
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

Geändert von Premaider (28. Aug 2012 um 22:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 21:59
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.
Naja möchte es auf meine Weise machen. Der Fehler ist, dass es nicht funktioniert..
Achso, ja dann schau doch mal bei der Zeile da, da rechts musst du was anderes schreiben, dann sollte es funktionieren.

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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 22:04
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
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#8

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 22:07
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.
Naja möchte es auf meine Weise machen. Der Fehler ist, dass es nicht funktioniert..
Achso, ja dann schau doch mal bei der Zeile da, da rechts musst du was anderes schreiben, dann sollte es funktionieren.

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
ja habe ich. Für Spieler und Ziel funktionierts ja auch. Nur für die Gegner krieg ichs nicht hin, da es ja theoretisch unendlich viele sein können und dadurch alles womit ich das Berechne ein dynamischer Array sein muss, oder nicht ? Also sonst war mein Prinzip so:
Ankatete:= Ziel.left - Spieler.left
Gegenkatete:= Ziel.top - Spieler.top
HypotenuseHoch2:=(Ankatete*Ankatete)+(Gegenkatete* Gegenkatete)
Hypotenuse:=sqrt(HypotenuseHoch2)

sqrt mit Hilfe der Math-unit

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
Man geht mit seinem Spieler zum ziel möglichst ohne von den Gegnern getroffen zu werden. Wenn man das Ziel erreicht hat spawnt es woanders/"ein neues"
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 28. Aug 2012, 22:39
Nur mal so für Spaß eine vereinfachte Betrachtungsweise:
Delphi-Quellcode:
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;
Und im Code dann:
Delphi-Quellcode:
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;
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#10

AW: Spiel nachprogrammieren - Gegnerberührung funktioniert nicht

  Alt 29. Aug 2012, 10:25
Nur mal so für Spaß eine vereinfachte Betrachtungsweise:
Delphi-Quellcode:
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;
Und im Code dann:
Delphi-Quellcode:
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;
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.
Wenn ich deinen Code einbaue bekomme ich ein paar Fehlermeldungen:
Delphi-Quellcode:
[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
Geht das denn so überhaupt für Delphi7 ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz