AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Monopoly mit MOD- PlugIn: Problem mit Interface-Realisierung
Thema durchsuchen
Ansicht
Themen-Optionen

Monopoly mit MOD- PlugIn: Problem mit Interface-Realisierung

Ein Thema von 64Jabor · begonnen am 7. Mär 2009 · letzter Beitrag vom 7. Mär 2009
Antwort Antwort
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#1

Monopoly mit MOD- PlugIn: Problem mit Interface-Realisierung

  Alt 7. Mär 2009, 18:08
Hey DP,

ich versuche gerade das beliebte (oder auch nicht ) Gesellschaftsspiel "Monopoly" in Delphi umzusetzen.
Das ganze soll allerdings so sein, dass man nicht nur das Grundspiel, sondern auch Varianten von Monopoly spielen kann.
Dazu verwende ich INI-Dateien mit einer .MOD-Endung.
Soviel allgemein zu meinem Projekt.


Das eigentliche Problem was ich habe ist das Folgende:

Ich habe eigene Klassen erstellt, um das Spiel zu realisieren.
Dazu zählt zu einem der Spieler, aber auch die Spielkarte und damit meine ich den Vorfahre von allen Straßen, Bahnhöfen, Werken sowie Spezialfelder die es in Monopoly gibt und in Varianten geben könnte.

Nun habe ich ein "Interface" erstellt, indem ich neben einem TImage, auf dessen Canvas-Objekt später das Spielfeld gezeichnet werden soll (ob das die beste Lösung ist weiß ich auch noch nicht so ganz ), eine ListBox erstellt habe, in der man die eigenen Karten auswählen kann um dann mit weiteren Button Häuser zu bauen/entfernen, das Grundstück belasten/entlasten kann etc.

Mein Problem ist, dass in der ListBox natürlich alle Spielkarten angezeigt werden sollten, also Straßen und Werke und Bahnhöfe!
Wie entscheide ich aber nun, von welchem Typ das aktuelle ausgewählte Element der ListBox ist, denn auf ein Werk kann man bekanntlich kein Haus bauen usw.
Ich habe nur den Namen des Elementes, nur wie komme ich davon auf den Typ des Objektes das dahinter steckt?

Grüße, 64Jabor
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Monopoly mit MOD- PlugIn: Problem mit Interface-Realisie

  Alt 7. Mär 2009, 18:22
if obj is TMyObjectTyp then, aber da das bei Interfaces nicht geht, wirst du vermutlich eine neue Funktion integrieren müssen, wo du dann das Interface frags was es ist.

Entweder du übergist dann der Funktion eine Klasse und fragst "bist du sowas?", einen String (Namen der Klasse) oder
so hab ich das im letzen Projekt gemacht, eine Funktion, welche eine Objektreferenz des hinter dem Interface liegenden Objektes liefert ... damit kann man dann allerhand machen (z.B. auch die obrige If-Abfrage)


Es gibt bei interfaces auch die
Funktion QueryInterface(Const IID: TGUID; Out Obj): HResult; StdCall; , aber keine Ahnung in wie weit sich diese für sowas gebrauchen lassen könnte.

bei mir gibt es daher diese 2 Funktionen in den Interfaces (siehe )
Delphi-Quellcode:
Function GetType: TOperatorClass;
Function GetObject: TOperatorObject;
siehe Hier im Forum suchenIOperatorInterface
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Monopoly mit MOD- PlugIn: Problem mit Interface-Realisie

  Alt 7. Mär 2009, 18:26
Du kannst in einer Listbox auch Objekte (genauer Zeiger auf Objekte) speichern.
Delphi-Quellcode:
bahnhof := TBahnhof.Create(posNord);
Listbox.Items.AddObject('Nordbahnhof', bahnhof);
Die Möglichkeit Objekte und Texte zusammen zu speichern ist von TStrings geerbt.
Deshalb funktioniert dies auch bei Comboboxen und Memos.

Um das Objekt wieder herauszuholen, kann man z.B. so vorgehen:
Delphi-Quellcode:
idx := Listbox.ItemIndex;
if idx <> -1 then
begin
  obj := Listbox.Items.Objects[idx];
  if obj is TBahnhof then
     TBahnhof(obj).kaufen(user)
  else if obj is TStrasse then
     TStrasse(obj).Platzieren(spielfeld)
PS: was meinst du mit "Interface"? Ein Userinterface, wie ich es verstanden habe oder ein Interface im Sinne von IUnknown?
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#4

Re: Monopoly mit MOD- PlugIn: Problem mit Interface-Realisie

  Alt 7. Mär 2009, 18:45
Ahk, vielen Dank.
Dass die ListBox das kann wusste ich nicht, das ist allerdings wunderbar =)

Ja mit Interface meine ich ein Userinterface, in dem der Spieler sein aktuelles Geld, seine Straßen und einige Statistiken einsehen kann!
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:19 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