Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016/05/12 (木)

基本的な機能は完成

| 19:24 | 基本的な機能は完成 - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 基本的な機能は完成 - 雪乃☆雫のなでしこ日和 基本的な機能は完成 - 雪乃☆雫のなでしこ日和 のブックマークコメント

 前に作った、2Dを振るプログラムと合体させるだけで、実際にボタンAを押したら、サイコロが振れるようになります。

 前、実はこまで出来てはいたんだけど、ダイスの見た目をサイコロキャラメルに合わせたらどうかしらとか、しょーもないことを考えていたんだよね。

 サイコロ準備の線色塗り色を変えれば、ダイスの色は簡単に変更出来るのだけれど、2Dを別々の色で表示することまでは考えていなかった。

 2Dを赤白にするためには、サイコロ用の裏画面を2つ用意しなくちゃならないし、サイコロ準備の色指定はのところ決め打ちなので・・・もちろん、サイコロ準備をコピペして赤白2色分作れば簡単にできるんだけど、それをやったら負けでしょ(?)

 かといって、全部の色設定を引数にするってのもねぇ~。一体いくつ引数がつくことになるんだよ・・・(--;

 なにか、スマートな良い方法はないもんか・・・と考えていたんだけど、よく考えたらもサイコロ準備自体が全くスマートじゃないんだから、ダメだこりゃ;・・・とゆうことに気が付いたので、とりあえず一旦保留にして、元のふつーのダイスのままで先に進むことにした(爆)


 さて、得点計算は、前書いた通り、6ゾロならぴったり36点、1ゾロなら0点。それ以外のゾロ目は、二つの目の、普通の出目なら二つの目の和。

 得点加算で、この計算結果を、プレイヤー得点と、コンピューター得点に、っくり同じ手順で代入しているのは、いかにも無駄っぽいけれど、気にしないで!;;;

 得点表示では、この加算結果をタダ表示するだけだとつまらないので、小さく縮小したサイコロの画像で、実際の出目を一緒に表示することにした。

#・手番交代、得点計算、得点とミニダイスの表示

#-----2Dを振る---------------------------------------------
*サイコロ振る
  カウント=カウント+1
  2
    処理用をダイスサイズ,ダイスサイズへ画像高速リサイズ。
    r=6の乱数。出目¥(回数-1)=r+1。
    x=r*ダイスサイズ。y=0。
    裏画面のx,y,ダイスサイズ,ダイスサイズを処理用の0,0へ画像部分コピー。
    処理用を母艦のトレイx+((トレイ幅/3)*回数-ダイスサイズ/2),トレイy+(トレイ高さ/2-ダイスサイズ/2)へ画像合成通。

    # 得点表示用にミニダイスを表示
    処理用をミニダイス,ミニダイスへ画像リサイズ。
    もし、手番=プレイヤーならば
      得点表示x=プレイヤーx+10+(ミニダイス+10)*(回数-1)
      得点表示y=マージン*2+10+(ミニダイス+10)*(カウント/2)
      処理用を母艦の得点表示x,得点表示yへ画像合成通。
    違えば
      得点表示x=コンピューターx+10+(ミニダイス+10)*(回数-1)
      得点表示y=マージン*2+10+(ミニダイス+10)*((カウント-1)/2)
      処理用を母艦の得点表示x,得点表示yへ画像合成通。
#------------------------------------------------------------
*得点計算
  もし、(出目¥0)=(出目¥1)ならば   # ゾロ目
    もし、(出目¥0)=6ならば      # 6ゾロ
      得点=36。
      文字色赤色。
    違えばもし、(出目¥0)=1ならば  # 1ゾロ
      得点=0。
      文字色青色。
    違えば                 # の他のゾロ目
      得点=出目¥0*出目¥1。
      文字色黒色。
  違えば                   # 平目
    得点=出目¥0+出目¥1。
    文字色黒色。

*得点加算
  もし、手番=プレイヤーならば
    もし、得点=36または得点=0ならば
      プレイヤー得点=得点
      得点表示。
    違えば
      プレイヤー得点=プレイヤー得点+得点
      もし、プレイヤー得点>=36ならば
        文字色赤色。
        プレイヤー罰点=プレイヤー得点-36
      得点表示。
    手番=コンピューター。

  違えば
    もし、得点=36または得点=0ならば
      コンピューター得点=得点
      得点表示。
    違えば
      コンピューター得点=コンピューター得点+得点
      もし、コンピューター得点>=36ならば
        文字色赤色。
        コンピューター罰点=コンピューター得点-36
      得点表示。
    
    # 勝負がついたかどうかを確認
    もし、(プレイヤー得点>=36)または(コンピューター得点>=36)ならば
      ボタンAのテキストは「勝敗判定」
      の有効はオフ。
    違えばもし、カウント=19ならば  # 得点表示用に表示出来る上限が10なので
      ボタンAのテキストは「無効試合」
      の有効はオフ。
    違えば
      手番=プレイヤー。

*得点表示
  文字書体は「MS ゴシック|16|太字」。
  もし、手番=プレイヤーならば
    得点表示x=プレイヤーx+20+(ミニダイス+10)*2
    得点表示y=マージン*2+10+(ミニダイス+10)*(カウント/2)
    母艦の得点表示x,得点表示y,ミニダイス,ミニダイスへ右,中央でプレイヤー得点を枠内文字描画。

  違えば
    得点表示x=コンピューターx+20+(ミニダイス+10)*2
    得点表示y=マージン*2+10+(ミニダイス+10)*((カウント-1)/2)
    母艦の得点表示x,得点表示y,ミニダイス,ミニダイスへ右,中央でコンピューター得点を枠内文字描画。

#------------------------------------------------------------

 とりあえず、今日ここまで。

 一応、もう一通りは遊べるようになりました。

 得点表示の部分を見れば、別に一目で勝ち負けも分かるけど、やはりちゃんとプログラムのほうで判定して、言って欲しいところ。

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20160512