AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DelphiX Frage für Spiel
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiX Frage für Spiel

Offene Frage von "tmode00"
Ein Thema von tmode00 · begonnen am 27. Jun 2005 · letzter Beitrag vom 7. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von tmode00
tmode00

Registriert seit: 21. Mai 2005
Ort: Gera
22 Beiträge
 
Delphi 7 Enterprise
 
#1

DelphiX Frage für Spiel

  Alt 27. Jun 2005, 17:02
Hi, bei der Entwicklung eines Spiels

siehe: Spiel- Thread

bin ich auf ein Problem gestoßen:

In Typ deklerations Bereich habe ich einen typ bauen deklariert:

Delphi-Quellcode:
Type
  Bauen = record
  Feld:Array[1..999] of byte;
  x:integer;
  y:integer;
  test:byte;
  arraylaufer:integer;
  end;
...dann habe ich vor dem Implementations- Bereich Variablen dieses Types deklariert:
Delphi-Quellcode:
var
  Lager:Bauen;
  Bau:Bauen;

implementation
...dann habe ich einen DxTimer und ein DxDraw Object, sowie eine DxImageList stationiert

...die Bilder für die ImageList habe ich im Bereich OnCreate (des Forms) zugewiesen um
Ladezeit zu sparen:

DXImageList1.Items[1].Picture.Bitmap.LoadFromFile('.\Bilder\Bauen\Lager.bmp'); ...so, nun beinhaltet meine ImageList als erstes Objekt Lager.bmp

...In der OnTimer Przedur--->

procedure TSpielfenster.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DxDraw1.surface.fill(0);
DXImageList.Items[1].Draw(DXDraw1.Surface,0,0,0);
DxDraw1.flip;

//Das Bild 1 an Position 0,0,[patternIndex] auf DXDraw1.surface zeichnen!

end;

Problem:
Ich möchte nun ein PopupMenü Machen, indem man z.B. Kollonisationsschiff anklicken kann und das dann ein -meinetwegen schon oben (onCreate) vorgeladenes- Bild genau wie Lager.bmp auf dem Surface angezeigt wird. Problem ist dass ich es ja nicht einfach in die Timer Routine einbinden kann, da es ja dann immer da währe! Wenn ich das versuche mit Variablen zu Umgehen (if a=1 then zeichne; a:=0; end da es dann nur Blinken würde weil der Videospeicher ja immerwieder geleert wird (oben). Ich brauche also dringend Rat!!

Ps. --> Bitte nicht an kleinigkeiten (wenn mal DxDraw1 oder DxDraw dasteht) hochziehen, ich denke ihr wisst was ich meine!

Tmode00
Thomas Seidel
begin; 011010101101010100101010; end;
  Mit Zitat antworten Zitat
Benutzerbild von tmode00
tmode00

Registriert seit: 21. Mai 2005
Ort: Gera
22 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: DelphiX Frage für Spiel

  Alt 5. Jul 2005, 12:32
Antwort wäre gut!
Thomas Seidel
begin; 011010101101010100101010; end;
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DelphiX Frage für Spiel

  Alt 5. Jul 2005, 12:50
hi,

ich habe keine antwort auf dein problem, aber ich möchte dir einen guten tipp geben:
nutze möglichst wenig records und arrays und möglichst keine globalen variablen!

dein bauen-typ ist an sich schon unglücklich gewählt. ich habe vor einiger zeit mal angefangen, eine kleine echtzeitstrategiespiel-engine zu programmieren (wegen zeitmangel arbeite ich grad nicht dran).
ich schlage dir vor, dass du dir eine klassenstruktur aufbaust. dazu musst du erst einmal überlegen, aus welchen teilen dein spiel bestehen soll.


standardmäßig wären das:
  • Der eigentliche Spieler (Mensch bzw. CPU)
  • Die Objekte des Spielers:
    • Einheiten
    • Gebäude
  • Die Forschungsobjekte
  • Die Map

für jedes dieser teile entwickelst du am besten eine eigene klasse. das ganze sollte hierarchisch aufgebaut sein, d.h., die objekte-klasse enthält eine TList, welche referenzen zu den bislang gebauten gebäuden des spielers enthält. eine weitere liste enthält die einheiten, eine liste enthält alle forschungsobjekte usw.
die forschungsobjekte enthalten dann zB noch einen status, ob der spielers sie bereits erforscht hat. in die einheiten und gebäuden wird gespeichert, wie viele hitpoints sie noch haben und wieviele sie maximal haben können...

wenn du eine klare struktur hast, kannst du zB von den parent-klassen der gebäude neue klassen ableiten, die die einzelnen gebäude repräsentieren (also von TChurch über THouse bis THuntingLodge - das ist ja vollkommen dir überlassen). du musst den neuen klassen dann nur noch spezielle eigenschaften geben, da sie allgemeine informationen wie bauzeit oder hitpoints ja von der parent-klasse geerbt haben.

ach, und
Zitat:
Antwort wäre gut!
hört sich nicht ganz so nett an. jeder fragesteller möchte gern eine antwort. und mit einem netteren ton kommt man oft schneller an antworten

viel erfolg,
aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von tmode00
tmode00

Registriert seit: 21. Mai 2005
Ort: Gera
22 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DelphiX Frage für Spiel

  Alt 5. Jul 2005, 12:58
Entschuldigung für meinen Streng gewählten ton! Aber erstmal vielen vielen Dank, das bringt mich (denke ich) schon viel weiter. Wenn man solche anstöße bekommt, dann weis man auch wie man ambesten eine Lösung für solche Probleme bekommt.
Ich denke ich sollte alles nochmal streng überarbeiten, so von Grund auf
eben alles etwas in Richtung Klassen umstrukturieren. Mein Problem ist
nämlich, das ich am Anfang eigendlich immer recht gut voran komme und dann durch meinen ,,Spaghetticode" durcheinander komme! Fürweitere Hilfen und Konzepte, Anregungen....bin ich trotzdem sehr verbunden!

Ps.: Danke nochmal!
Thomas Seidel
begin; 011010101101010100101010; end;
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DelphiX Frage für Spiel

  Alt 5. Jul 2005, 13:17
Zitat von tmode00:
Entschuldigung für meinen Streng gewählten ton! Aber erstmal vielen vielen Dank, das bringt mich (denke ich) schon viel weiter. Wenn man solche anstöße bekommt, dann weis man auch wie man ambesten eine Lösung für solche Probleme bekommt.
Ich denke ich sollte alles nochmal streng überarbeiten, so von Grund auf
eben alles etwas in Richtung Klassen umstrukturieren. Mein Problem ist
nämlich, das ich am Anfang eigendlich immer recht gut voran komme und dann durch meinen ,,Spaghetticode" durcheinander komme! Fürweitere Hilfen und Konzepte, Anregungen....bin ich trotzdem sehr verbunden!

Ps.: Danke nochmal!
die selben probleme hat wohl jeder anfangs - nur nicht aufgeben
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: DelphiX Frage für Spiel

  Alt 5. Jul 2005, 13:56
Was heir Aenogym schon vorgeschlagen hat, ist zu unterstützen. Denn je weiter du dein Projekt entwickelst, desto schwirieger es sein wird, mit Records klar zu kommen. Also Objekten + Hierarchie = Erfolg .
Ich kann nur von glück reden, dass ich in meinem Projekt(BallonKiller) Objekten benutze.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: DelphiX Frage für Spiel

  Alt 10. Jul 2005, 15:28
hi leutz!

ich stehe zur zeit auf dem gleichen problem und habe auch diese antwort schon x mal bekommen, nur...

wie geht das mit den klassen?
kann mir da mal jemand ein biespiel geben?

also z.b. wenn man ein Grunditem hat und dann eben eine unterklasse, die meinetwegen die option "extraoption" bekommt, etc.

und wie frage ich dann ab, ob das *ding* dann auch diese eigenschaft hat, etc...

bitte euch um hilfe
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#8

Re: DelphiX Frage für Spiel

  Alt 30. Jul 2005, 10:09
Hi Master_RC

wenn ich dich richtig verstanden hab willst du halt wissen ob das *ding* (ich denk mal das soll wohl irgendwie ne Variable darstellen ja? ) die Option besitzt.

Mit dem Schlüsselwort is kannst Du abchecken ob eine Variable von einem bestimmten Typ ist. Funktioniert aber nur mit Objekten.

Delphi-Quellcode:

type TGrundoption = class
       ...
     end;
     TExtraOption = class(TGrundoption)
       ...
     end;

function Test(Option: TGrundoption): boolean;
begin
  Result := (Option is TExtraoption);
end;
Die Funktion Test gibt jetzt true zurück wenn der übergebene Parameter vom Typ TExtraOption (oder einem Nachfahrtyp) ist.

Keep it up
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: DelphiX Frage für Spiel

  Alt 30. Jul 2005, 10:34
und der operator as macht dann dein TGrundobjekt zum Textraobjekt:

Delphi-Quellcode:
if (test(grundobjekt)) then
 (grundobjekt as Textraobjekt).extraoption := 'Extrawurst';
die Variante

TExtraObkejt(Grundobjekt).extraoption existiert auch, arbeitet jedoch ohne Fehlerüberprüfung und wird deswegen nicht empfohlen.

Terminologisch heisst das Verfahren Typecast, das zweite wäre der "harte Typecast".
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: DelphiX Frage für Spiel

  Alt 30. Jul 2005, 10:40
Hi,

wenn du aber schon das schreibst

if (test(grundobjekt)) then dann kannst du auch das drunter schreiben:

TExtraObkejt(Grundobjekt).extraoption da du ja schon den Test gemacht hast.
  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 16:20 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