hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
アルゴリズム/トランプ/シャッフル1 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

シャッフル1

トランプゲームなどのシャッフル処理を考えます。--kz3 2005-06-05 14:45:57 (日)


プラグインでdimmix?というモジュールを定義しました。
dimmix?はあらかじめ対象となる配列に値を設定し、一回のモジュールの呼び出しで配列内をシャッフルするというものでした。

例えばトランプカード(ジョーカー2枚抜き)52枚の場合は

  1
  2
  3
  4
 
 
 
 
    dim tramp,52
    tramp.0 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12
    ...
    tramp.39=39,40,41,42,43,44,45,46,47,48,49,50,51

としてカードに通し番号を振り、

  1
 
    dimmix tramp

とすることで、配列内がシャッフルされます。
このtrampを実際に引くときのサンプル*1を以下に示します。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    ;サンプル
    randomize
    dim tramp,52
    tramp.0 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12
    tramp.13=13,14,15,16,17,18,19,20,21,22,23,24,25
    tramp.26=26,27,28,29,30,31,32,33,34,35,36,37,38
    tramp.39=39,40,41,42,43,44,45,46,47,48,49,50,51
    onclick *click
 *click
    onclick 0
    cls
    dimmix tramp
    txt=""
    repeat 52
        wait 1
        s="  "+tramp.cnt
        strmid s,s,-1,3
        txt=txt+s
        if cnt\13=12 : mes txt : txt=""
    loop
    card=""
    repeat 5
        wait 1
        s="  "+tramp.cnt
        strmid s,s,-1,3
        card=card+s
    loop
    title card
    onclick 1
    stop

といった具合にtrampの先頭(もしくは末尾からでもいいけど・・・)から引いていきます。
この場合は一度カードを引いたら再びシャッフルしてまた先頭から引くようになっています。
trampを参照するカウンタはrepeatのcntでしたが、通常の変数として用意すれば、一度引いた続きから引きなおすこともできます。

今回のポイントはカードを引く前にトランプをシャッフルするという方法でした。


  • シャッフルの考えというより、モジュールの使い方になっちゃったかな;; -- kz3 2005-06-05 14:50:39 (日)
  • でもシャッフル2ではよりアルゴリズムちっくにします・・・。 -- kz3 2005-06-05 14:51:38 (日)
  • iiiiiiiiiiiiiii -- 2010-07-17 (土) 05:36:34

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

*1 dimmix?モジュールを使用します。
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2010-07-17 (土) 05:36:34 (1240d)