Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variable(Integer), die beim Verlassen eines WB springt (https://www.delphipraxis.net/70774-variable-integer-die-beim-verlassen-eines-wb-springt.html)

Freaky89 4. Jun 2006 16:07


Variable(Integer), die beim Verlassen eines WB springt
 
Hallo,

ich will ein Spiel programmieren und brauch, wenn es soetwas gibt, eine Variable, die zum Beispiel einen Integerwertebereich von 1-10 hat.

Das wäre ja nicht schwer, mein Problem ist, dass sie, sobald man bei Wrt:=10 angekommen ist und +1 zählt, sie sich auf Wert:=1 schalten soll, also wieder von vorne anfangen soll!
Gibt es sowas?

ich will nicht immer, wenn das der Fall ist schreiben müssen:

Delphi-Quellcode:
if Wert+1>10 
  then Wert:=0
dafür ist mir das Programm zu umfangreich! :lol:

Das sollte dann allerdings (wenn möglich) auch anders herum klappt, also, wenn ich Wert:=1 habe und rechne -1 dann müsste da auch wieder 10 rauskommen!

Viele Grüße

Der_Unwissende 4. Jun 2006 16:14

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Hi,
zu umfangreiche Programme gibt es nicht, nur schlecht durchdachte. Wenn du ein Problem wie dieses hast und du es an massig Stellen ändern musst, liegt es doch letztlich nur daran, dass du diesen Punkt hättest früher berücksichtigen können. Kein Angriff gegen dich oder so, aber um eine Funktion kommst du nicht rum. Schreib dir einfach ein eigenes Inc bzw. Dec und schau dort ob dein erhöhter Wert größer ist als x und soweiter. Die Modulo Rechnung hilft dir nebenbei bemerkt bei solchen Problemen auch weiter (8+1 mod 10 = 9, 9 + 1 mod 10 = 0, ...)

Gruß Der Unwissende

Cyberbob 4. Jun 2006 16:18

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Du könntest eine Eigene Procedure oder Funktion schreiben, die deine Variable immer nur bis 10 hochzählt und dann bei 1 weitermacht. Du könntest dir aber auch nen eigenen Datentyp mit Integrrzahlen von 1 bis 10 deklarieren und den dann verwenden. (Ob das wirklich geht weiss ich jedoch nicht!)

marabu 4. Jun 2006 18:31

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Herzlich willkommen in der Delphi-PRAXiS, Freaky89.

Wie schon der gar nicht so Unwissende schrieb, reicht eine Zuweisung ohne Bedingung aus, wenn du die modulo Funktion geschickt verwendest:

Delphi-Quellcode:
Wert := Succ(Wert mod 10);
Freundliche Grüße vom marabu

Der_Unwissende 5. Jun 2006 09:47

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Zitat:

Zitat von marabu
Delphi-Quellcode:
Wert := Succ(Wert mod 10);

Mal ganz kleinlich korrigiert musst du mod 11 rechnen, da du bis einschließlich 10 einen modulo-Ring wolltest

SirThornberry 5. Jun 2006 09:54

Re: Variable(Integer), die beim Verlassen eines WB springt
 
@Freaky89: Welche Delphiversion verwendest du (eventuell mal im Profil nachtragen)? Entsprechend der Delphiversion kannst du operatoren überladen.

marabu 5. Jun 2006 14:30

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Zitat:

Zitat von Der_Unwissende
Mal ganz kleinlich korrigiert musst du mod 11 rechnen, da du bis einschließlich 10 einen modulo-Ring wolltest

Bist du dir sicher? Ich hatte Succ(10) = 1 als Anforderung erkannt.

Freundliche Grüße vom marabu

Der_Unwissende 5. Jun 2006 17:31

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Zitat:

Zitat von Freaky89
Delphi-Quellcode:
if Wert+1>10 
  then Wert:=0

Heißt doch, dass der Nachfolger von 10 die 0 ist, oder seh ich's gerade falsch? Wie auch immer, er wird schon wissen was er gerne hätte, wollte nur mal den Marabu korrigieren ;-) (wann hab ich dazu schon mal Gelegenheit?)

marabu 5. Jun 2006 18:10

Re: Variable(Integer), die beim Verlassen eines WB springt
 
Ich hatte mich aus beruflicher Gewohnheit an der Anforderung orientiert und diesen Zwei-Zeiler ignoriert, da ich ihn als überflüssiges Illustrationsmaterial eingestuft hatte. Jetzt verstehe ich deinen Hinweis.

Zitat:

Zitat von Der_Unwissende
wollte nur mal den Marabu korrigieren (wann hab ich dazu schon mal Gelegenheit?)

Geduld - da werden schon noch Gelegenheiten kommen.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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