Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Was wäre die Beste Lösung für ein Inventar (https://www.delphipraxis.net/24763-waere-die-beste-loesung-fuer-ein-inventar.html)

ISAS 25. Jun 2004 18:58


Was wäre die Beste Lösung für ein Inventar
 
Bastle gerade an einem Rollenspiel mit DelphiX und da darf ein Inventar natürlich nicht fehlen 8) . Das Inventar befindet sich rechts aussen. Hier eine Bild, wie das Inventar aussieht. Bild(Das Bild ist aus einem anderen Spiel)

Was das Inventar alles zu haben hat:

1. Man soll von der Spielfläche Sachen direkt ins Inventar und natürlich auch umgekehrt schieben können. Also ein Schwert in die Hand bzw wieder ins Spielfeld.

2. Die Gegenstände sollen automatisch einrasten. Falls man einen Stuhl in die Hand schieben will, sollte das nicht gehen, da es ja keine Waffe ist.

3. Geld oder ähnliches soll man als Masse auf einer Fläche lagern können. Also nicht jedes Geldkorn einzelln sonder gleich 321 auf einem Quadrat im Rucksack.

4. Er soll folgendes erkennen: Falls ein Schwert mit Angriff 3 in der Hand ist, dann soll der Angriff um 3 Punkte steigen. Ein Schild und Rüstung bringt natürlich Verdeitigung.


Ich glaub das wars. Falls noch irgendetwas wichtigs fehlt, einfach anhängen. :mrgreen:
Hoffe auf viele Vorschläge bzw Lösungen :cyclops:

Nicodius 25. Jun 2004 18:59

Re: Was wäre die Beste Lösung für ein Inventar
 
mit sets/MENGEN oder dynamischen array ..

aso sorry


also du überprüfst imemr die gegenstände die in eienr menge sind!
so ists einfach

dann kannst du ja eine boolische variable haben die du auf false setzt damit es sich frei bewegen lässt und wenn es ein quadrat betritt setzt dus auf true und es lässt sich nur bewegenwenn der cursor es schon wieder über das quadrat gezogen hat!

ISAS 26. Jun 2004 14:11

Re: Was wäre die Beste Lösung für ein Inventar
 
Liste der Anhänge anzeigen (Anzahl: 1)
k, habs nun doch mit arrays gemacht. Is meiner Meinung nach sehr umständlich, wenns aber nicht leichter geht. k
Aja, thnx nochmal für die Antwort, Nicodius!!! :wink:


Hab nun aber ein Problem. Ich schick hier mal die Datei. Samt Quellcode, da man den Fehler herauslesen muss. Ich find halt keinen Fehler. (Aja, wenn sich jemand fragt, wieso ich das TGegenstand auch mit einem array gemacht habe, dass passt schon so. Da es dann 10000te solcher Gegenstände gibt (Frage nebenbei. Wenn ich nun 10000 solcher Gegenstände habe, kostet das viel Rechenzeit, oder merkt man das gar nicht) (So bei 1 GHz))

PS: Erläuterung is natürlich beim Quellcode auch dabei

Nicodius 26. Jun 2004 14:22

Re: Was wäre die Beste Lösung für ein Inventar
 
da ich dx jetzt nicht habe +


was mir auffällt

Beim onmousedown


Delphi-Quellcode:
//for k:=0 to 1 do begin
if (X>=Gegenstand[k].X) and (X<=Gegenstand[k].X+32) and (Y>=Gegenstand[k].Y) and (Y<=Gegenstand[k].Y+32)
then Gegenstand[k].hant:=true;
//end;
schreibs mal so wie ich ohne forschleife und probiers dann


falls es das nicht ist dann schreib

bei

Delphi-Quellcode:
  for i:=0 to 1 do begin
  if (Sack.py[k]=Gegenstand[i].Y-Sack.Y)and(Sack.py[k]=Gegenstand[i].Y-Sack.Y) and
  (Sack.px[k]=Gegenstand[i].x-Sack.x)and(Sack.px[k]=Gegenstand[i].x-Sack.x)
  then Sack.platz[k]:=false;
  end;
auch nur
Delphi-Quellcode:
  if (Sack.py[k]=Gegenstand[i].Y-Sack.Y)and(Sack.py[k]=Gegenstand[i].Y-Sack.Y) and
  (Sack.px[k]=Gegenstand[i].x-Sack.x)and(Sack.px[k]=Gegenstand[i].x-Sack.x)
  then Sack.platz[k]:=false;

und sonst beides ;)

ISAS 26. Jun 2004 14:52

Re: Was wäre die Beste Lösung für ein Inventar
 
Das Problem bei deiner Lösung ist, dass die beiden Teile, die du herausgenommen hast, ohne FOR-Schleife nicht funktionieren:

Delphi-Quellcode:
for k:=0 to 1 do begin
if (X>=Gegenstand[k].X) and (X<=Gegenstand[k].X+32) and (Y>=Gegenstand[k].Y) and (Y<=Gegenstand[k].Y+32)
then Gegenstand[k].hant:=true;
end;
Gegenstände[k].... Braucht eine FOR-schleife, da es ja ein array, sonst hätte k keinen Wert und das geht natürlich nicht

Delphi-Quellcode:
if (Sack.py[k]=Gegenstand[i].Y-Sack.Y)and(Sack.py[k]=Gegenstand[i].Y-Sack.Y) and
  (Sack.px[k]=Gegenstand[i].x-Sack.x)and(Sack.px[k]=Gegenstand[i].x-Sack.x)
  then Sack.platz[k]:=false;
Auch hier kann Gegenstände ohne einem array nicht funktionieren.

Nicodius 26. Jun 2004 15:42

Re: Was wäre die Beste Lösung für ein Inventar
 
nein so meine ich das nicht du musst statt k dann natürlich 1 schreiben bzw 0 ... ist ja Klar

ISAS 26. Jun 2004 16:04

Re: Was wäre die Beste Lösung für ein Inventar
 
Aso, nein, das wäüre dann zu Umständlich. (Das is ja nur ein kleines Programm)
Hab das nun einegbaut und es funktioniert. Weiss aber nicht, warum??

Nicodius 26. Jun 2004 16:27

Re: Was wäre die Beste Lösung für ein Inventar
 
was hast du eingebaut?


wenns mein code (ich hab nictht compilieren können da ich dx nicht hab) richtig war dann deshalb

eine schleife von 0 bis 1 zählt so

k = 0
K = 1

und dann ist erst aus also 2 k werte ;)

ISAS 26. Jun 2004 19:07

Re: Was wäre die Beste Lösung für ein Inventar
 
Nein, nein. Ich hab deinen Code nicht eingebaut. Das war ja nur ein Nebenprogramm. Hab das ins Hauptprogramm eingebaut und siehe da, es funktioniert. Keine Ahnung wieso, aber es geht und das ist auch gut so. Häng trotzdem noch ein bisschen am Inventar fest. Hoffe, dass ich das bald löse. Weisst du zufällig, ob, wenn ein Sprite hinter einem anderen ist, das Sprite "inaktiv" wird, geht?

Nicodius 26. Jun 2004 19:20

Re: Was wäre die Beste Lösung für ein Inventar
 
du musst das andere nur "einfrieren" ... das dürfte doch kein problem sein(wieder mit dner boolischen variable :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.
Seite 1 von 2  1 2      

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