お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"カードゲーム用ランダムシャッフル"

この発言に対し以下のコメントが寄せられています
#00279 T. Kawanishi さん Re:カードゲーム用ランダムシャッフル

◆説明◆  StringGrid のセルに、ランダムに52枚のカードを描きます。 ◆注意◆  StringGrid の、ColCount を9、RowCount を8として御試用してみて下さ い。 ◆サンプルコード◆ procedure TForm1.Button1Click(Sender: TObject); var StrNum, StrMrk: String; MOK, NOK: Boolean; Num, Mrk, RC, CC, All, Spd, Dia, Hrt, Crb, CdA, Cd2, Cd3, Cd4, Cd5, Cd6, Cd7, Cd8, Cd9, Cd10, CdJ, CdQ, CdK: Integer; begin Randomize; All := 0; Num := 0; Mrk := 0; Spd := 0; Dia := 0; Hrt := 0; Crb := 0; CdA := 0; Cd2 := 0; Cd3 := 0; Cd4 := 0; Cd5 := 0; Cd6 := 0; Cd7 := 0; Cd8 := 0; Cd9 := 0; Cd10 := 0; CdJ := 0; CdQ := 0; CdK := 0; for RC := 1 to 8 do begin for CC := 1 to 8 do begin MOK := False; NOK := False; inc(All); if All >= 53 then Break; while MOK = False do begin Mrk := Random(4); case Mrk of 0: if Spd < 13 then begin inc(Spd); StrMrk := '●'; MOK := True; end; 1: if Dia < 13 then begin inc(Dia); StrMrk := '◇'; MOK := True; end; 2: if Hrt < 13 then begin inc(Hrt); StrMrk := '○'; MOK := True; end; 3: if Crb < 13 then begin inc(Crb); StrMrk := '★'; MOK := True; end; end; end; while NOK = False do begin Num := Random(13) + 1; case Num of 1: if CdA < 4 then begin inc(CdA); NOK := True; end; 2: if Cd2 < 4 then begin inc(Cd2); NOK := True; end; 3: if Cd3 < 4 then begin inc(Cd3); NOK := True; end; 4: if Cd4 < 4 then begin inc(Cd4); NOK := True; end; 5: if Cd5 < 4 then begin inc(Cd5); NOK := True; end; 6: if Cd6 < 4 then begin inc(Cd6); NOK := True; end; 7: if Cd7 < 4 then begin inc(Cd7); NOK := True; end; 8: if Cd8 < 4 then begin inc(Cd8); NOK := True; end; 9: if Cd9 < 4 then begin inc(Cd9); NOK := True; end; 10: if Cd10 < 4 then begin inc(Cd10); NOK := True; end; 11: if CdJ < 4 then begin inc(CdJ); NOK := True; end; 12: if CdQ < 4 then begin inc(CdQ); NOK := True; end; 13: if CdK < 4 then begin inc(CdK); NOK := True; end; end; if Num = 1 then StrNum := 'A' else if Num = 11 then StrNum := 'J' else if Num = 12 then StrNum := 'Q' else if Num = 13 then StrNum := 'K' else StrNum := IntToStr(Num); StringGrid1.Cells[CC,RC] := StrMrk + StrNum; end; end; end; end;      J-OH!(VEC05267) Original document by J-OH!     氏 ID:(VEC05267)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum