Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listbox Zahlen erhöhen (https://www.delphipraxis.net/195594-listbox-zahlen-erhoehen.html)

TarantelFaser47 12. Mär 2018 20:48

AW: Listbox Zahlen erhöhen
 
Also die Augenzahlen (6 und 5) sollen addiert werden, naja und dann soll in der Listbox bei: "Anzahl der 11: 1"
stehen (vorher stand da: "Anzahl der 11: 0")

und wenn nochmal ne 11 gewürfelt wird dann "Anzahl der 11: 2"
und wenn eine 7 gewürfelt wird dann "Anzahl der 7: 1"
und so weiter und so fort...

günni0 12. Mär 2018 20:49

AW: Listbox Zahlen erhöhen
 
Was du meinst könnte einem Histogram nahe kommen. Such das mal bei Google um das Prinzip zu verstehen.

hoika 12. Mär 2018 20:55

AW: Listbox Zahlen erhöhen
 
Hallo,
wenn nicht nach dem 2. Würfeln die Ergebnisse des 1. Würfelns weg sein sollen,
darf summe nicht in der ButtonClick-Methode definiert werden,
sondern "global" im Formular.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    private
    public
      summe: array[2..12] of Integer;
  end;
Dann darf in der ButtonClick das Array natürlich nicht auf 0 zurückgesetzt werden.

Da jetzt du dir jetzt die Summe merken kannst, kannst Du in der Tat die ListBox bei jedem
Klick löschen (Clear) und neu füllen.

PS:
Ausserdem sollte man 1..12 drausmachen, falls einer der Würfel mal von Tisch runterfällt ;)

KodeZwerg 12. Mär 2018 21:11

AW: Listbox Zahlen erhöhen
 
Zitat:

Zitat von hoika (Beitrag 1395898)
Dann darf in der ButtonClick das Array natürlich nicht auf 0 zurückgesetzt werden.

Genau deshalb hab ich es anfangs nicht verstanden und mehr und mehr nachgefragt ;-)

PS: Vieleicht wäre es einfacher 2 Reihen á 10 Labels fest zu platzieren?
Linke Labels bekommen Beschriftung wie "Würfelsumme 11", daneben ein Label mit einer Summe ala IntToStr(das Würfel-Array mit der 11)
ODER (auf's Array verzichten und so hier)
den Werte-Labels passende Namen geben, w11 zum Beispiel als Name für Würfelsumme 11,
beim Programm-Start den Werte-Labeln alle eine "0" geben,
und wenn nun ein Ergebniss 11 kommt, nurnoch w11.Caption := IntToStr(StrToInt(w11.Caption)+1);
Das für jede Würfelkombination sollte auch passend sein.

hoika 12. Mär 2018 22:00

AW: Listbox Zahlen erhöhen
 
Hallo,
na, lass Ihn erst mal machen.
Mit der ListBox ist das ja sonst nicht unverkehrt.

Man sollte halt ein paar Grundlagen der Programmierung verstehen,
dazu sind wir ja auch da ... ;)

Delphi.Narium 12. Mär 2018 22:15

AW: Listbox Zahlen erhöhen
 
Naja, die Idee mit dem Array ist ja nicht verkehrt. Die Items einer Listbox sind ja eigentlich auch eins.

Wenn man nun ein Array für die Berechnung hat und das auch alles funktioniert, dann braucht man nur noch eine Routine, die den Arrayeintrag an die entsprechende Position der Listbox schreibt.

Das Array geht von 2 bis 12. Die Listboxitems beginnen jedoch bei 0.

Wenn man den richtigen Eintrag in der Listbox haben will, muss man nur die Position aus dem Array nehmen und dann 2 abziehen.

Der Eintrag in der Listbox könnte dann ungefähr so aktuallisiert werden:
Delphi-Quellcode:
// x ist die gewürfelte Zahl.
Array[x] := Array[x] + 1;
Listbox.Items[x - 2] := Format('%d: %d',[x,Array[x]]);

hoika 12. Mär 2018 22:25

AW: Listbox Zahlen erhöhen
 
Hallo,
KISS ist das nicht (Keap it simple, stupid).

ListBox löschen und neu eintragen, ist doch viel einfacher zum lernen.
Ausserdem geht das Array ja jetzt ab 1 los, falls mal ein Würfel von Tisch runterfällt ;)

KodeZwerg 12. Mär 2018 22:33

AW: Listbox Zahlen erhöhen
 
Na dann würde ich mein Beispiel auf Columns anwenden mit gleichem Prinzip, erste Column erhält Beschreibung zweite Column erhält einen Wert per IntToStr(StrToInt(hier die Column für Text/Caption)+1), könnte das klappen?
Eine Tabellenkalkulation, bei gleichem Prinzip, könnte man zu lern zwecken dafür auch benutzen.

TarantelFaser47 13. Mär 2018 09:24

AW: Listbox Zahlen erhöhen
 
Sorry das ich mich nur so schlecht ausdrücken könnte.
Heute min Informatik-Unterricht wurde uns die Lösung gezeigt:

Code:

For i := 1 to k do
begin
w1 := Random(6)+1;
w2 := Random(6)+1;
inc(summe[w1+w2]);

if (i mod 500 = 0) then application.Processmessage;

Listbox1.Clear;

For j := 2 to 12 do
 Listbox1.items.add(inttostr(Summe[j];

end;

So, oder so Änlich..
Am Handy das zu schreiben ist schrecklich;(

günni0 13. Mär 2018 10:08

AW: Listbox Zahlen erhöhen
 
Delphi-Quellcode:
inc(summe[w1+w2]);
Da hast du doch dein Histogram.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.
Seite 2 von 3     12 3      

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