![]() |
kniffel - zahlenabfrage
Soo hallo erstmal an die Community :)
Ich weiß nun nicht genau ob diese Frage auch wirklich hier herein gehört aber ich stelle sie mal hier, kann ja bestimmt auch noch verschoben werden. Falls sie verschoben wird, danke dafür und entschuldigung. So nun meine Frage. Bin noch nicht lange beim programmieren an delphi, habe es jetz seit letzten Sommer in der Schule und stehe vor folgender Frage: Ich möchte das Würfelspiel "Kniffel" bauen. jetzt habe ich die anzeige von den würfeln auf einem shape, der als tisch dienen soll, schon gemacht. ein zweites formular wo die werte gespeichert werden wird noch gemacht. ich habe vor jeden würfel eine checkbox gemacht. Bei einem buttonclick wird jeder würfel neu gewürfelt und halt je nach gewürfelter Zahl in die Variable des Würfels eingetragen, AUßER die CheckBox vor dem Würfel ist aktiviert, dann bleibt der würfel liegen, was natürlich so sein soll als ob man sich beim kniffel die würfel die man liegen lassen will zur seite legt. dann soll das programm immer wieder abfragen was schon da liegt was es gebrauchen könnte d.h. wenn ich drei 6er habe, ob ich sie nun als 3er pasch oder eben als drei 6er werten will. dafür sollen dann jeweils für jede methode die man machen kann buttons erscheinen. aber genau da liegt das problem. ich weise bei knopfdruck jeder variable (in meinem fall w1,w2,w3,w4,w5 für jeden würfel) eine zahl zu. wie erkennt das programm, das 3 von diesen werten die zahl 6 ist, denn erst wenn halt mindestens 3 würfel die zahl 6 haben, soll ein button mit der aufschrift "dreierpasch" oder "drei 6er" erscheinen. muss ich dann irgendwie die zahlen, die den variablen zugewiesen wurden in einem pool machen und dann abfragen "for each 6 in the pool begin" oder wie? ich hoffe ihr versteht mein problem und könnt euch kurz für mich zeit nehmen. MfG Philip :) |
Re: kniffel - zahlenabfrage
Erst einmal herzlich willkommen in der DP :dp:
Ich glaube, es kommen keine Antworten, weil dein Vorhaben den meisten nicht ganz klar ist. Zeige einmal ein bisschen Code und die Stelle, wo es hängt. Dann wird sicher weiter geholfen. |
Re: kniffel - zahlenabfrage
Delphi-Quellcode:
so soviel hab ich und jetzt möchte ich, dass das programm erkennt wieviele 6er oder 3er oder 4er ich "gewürfelt" habe.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Shape1: TShape; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Image9: TImage; Image10: TImage; Image11: TImage; Image12: TImage; Image13: TImage; Image14: TImage; Image15: TImage; Image16: TImage; Image17: TImage; Image18: TImage; Image19: TImage; Image20: TImage; Image21: TImage; Image22: TImage; Image23: TImage; Image24: TImage; Image25: TImage; Image26: TImage; Image27: TImage; Image28: TImage; Image29: TImage; Image30: TImage; BtWurf: TButton; procedure BtWurfClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; w1,w2,w3,w4,w5,w6: integer; implementation {$R *.dfm} procedure TForm1.BtWurfClick(Sender: TObject); begin randomize; if CheckBox1.Checked = false then //ich frage ab welcher würfel gewürfelt wird begin Image1.Visible:=false; Image2.Visible:=false; Image3.Visible:=false; Image4.Visible:=false; Image5.Visible:=false; Image6.Visible:=false; w1:=random(6)+1; end; if CheckBox2.Checked = false then begin Image7.Visible:=false; Image8.Visible:=false; Image9.Visible:=false; Image10.Visible:=false; Image11.Visible:=false; Image12.Visible:=false; w2:=random(6)+1; end; if CheckBox3.Checked = false then begin Image13.Visible:=false; Image14.Visible:=false; Image15.Visible:=false; Image16.Visible:=false; Image17.Visible:=false; Image18.Visible:=false; w3:=random(6)+1; end; if CheckBox4.Checked = false then begin Image19.Visible:=false; Image20.Visible:=false; Image21.Visible:=false; Image22.Visible:=false; Image23.Visible:=false; Image24.Visible:=false; w4:=random(6)+1; end; if CheckBox5.Checked = false then begin Image25.Visible:=false; Image26.Visible:=false; Image27.Visible:=false; Image28.Visible:=false; Image29.Visible:=false; Image30.Visible:=false; w5:=random(6)+1; end; if w1 = 1 then //fragt ab und zeigt die bilder Image1.Visible:=true; if w1 = 2 then Image2.Visible:=true; if w1 = 3 then Image3.Visible:=true; if w1 = 4 then Image4.Visible:=true; if w1 = 5 then Image5.Visible:=true; if w1 = 6 then Image6.Visible:=true; if w2 = 1 then Image7.Visible:=true; if w2 = 2 then Image8.Visible:=true; if w2 = 3 then Image9.Visible:=true; if w2 = 4 then Image10.Visible:=true; if w2 = 5 then Image11.Visible:=true; if w2 = 6 then Image12.Visible:=true; if w3 = 1 then Image13.Visible:=true; if w3 = 2 then Image14.Visible:=true; if w3 = 3 then Image15.Visible:=true; if w3 = 4 then Image16.Visible:=true; if w3 = 5 then Image17.Visible:=true; if w3 = 6 then Image18.Visible:=true; if w4 = 1 then Image19.Visible:=true; if w4 = 2 then Image20.Visible:=true; if w4 = 3 then Image21.Visible:=true; if w4 = 4 then Image22.Visible:=true; if w4 = 5 then Image23.Visible:=true; if w4 = 6 then Image24.Visible:=true; if w5 = 1 then Image25.Visible:=true; if w5 = 2 then Image26.Visible:=true; if w5 = 3 then Image27.Visible:=true; if w5 = 4 then Image28.Visible:=true; if w5 = 5 then Image29.Visible:=true; if w5 = 6 then Image30.Visible:=true; end; end. image1 bis image30 sind bilder zu den würfeln. also die gewürfelte zahl als bild eines würfels^^ |
Re: kniffel - zahlenabfrage
hi,
warum hast 30 images es gibt doch nur 6 mögliche würfelaugen? an sonsten wirds einfacher wenn du die würfel in ein array legst: var w: array[1..6] of byte; würfeln würde dann z.b. so gehn: for i:=1 to 6 do w[i]:=random(6)+1; secher zählen dann so: sechser:=0; for i:=1 to 6 do if w[i]:=6 then inc(sechser); ... hilft dir das ? |
Re: kniffel - zahlenabfrage
Wenn ich das richtig verstanden habe suchst du vielleicht "and" ?
Delphi-Quellcode:
If (w1=6) and (w2=6) then
{show pic} |
Re: kniffel - zahlenabfrage
Guten Abend,
ich würde Dir ein Array vorschlagen welches die Anzahl der 1er-6er aufnimmt.
Delphi-Quellcode:
Wenn eine 3 gewürfelt wird, wird die Position 3 des Arrays um 1 erhöht.
var
augen: Array[1..6] of Byte; ... inc(augen[w1]); // erhöht den Wert im Augen Array des wurfes von Würfel_1 um 1 Grüße Klaus |
Re: kniffel - zahlenabfrage
Ausserdem:
Delphi-Quellcode:
wird übersichtlicher mit
if w1 = 1 then //fragt ab und zeigt die bilder
Image1.Visible:=true; if w1 = 2 then Image2.Visible:=true; if w1 = 3 then Image3.Visible:=true; if w1 = 4 then Image4.Visible:=true; if w1 = 5 then Image5.Visible:=true; if w1 = 6 then Image6.Visible:=true;
Delphi-Quellcode:
case w1 of
1: Image1.Visible:=true; 2: Image2.Visible:=true; ... end; |
Re: kniffel - zahlenabfrage
Zitat:
Delphi-Quellcode:
nehmen ;)
TImage(FindComponent('Image'+IntToStr(w1))).Visible:=true
|
Re: kniffel - zahlenabfrage
Okay, aber eher nicht für Einsteiger :?:
|
Re: kniffel - zahlenabfrage
Gut, dann kann er sich das "FindComponent" aber schon einmal vormerken. Für´s Erste wird ja die "Case"-Abfrage reichen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz