Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-05-18

アスターの種をまいたよ!

| 23:56

 副賞(参加賞?)の種を早速まきました。

 水仙、チューリップが終わるので、の隙に。

 楽しみですね♪

 てなわけで、これから庭仕事も忙しくなるし、夏は意外と野外派なので、更新はぼちぼちになると思いますけど引き続きよろしくです。

【せんせい】

 さてさて、前は懸案のクイズに一応の片をつけたので、どうしようかなと、考えていましたが、一応違うことをしたいなーと思って、アドベンチャーゲームについて考え中だったのですが、突然ひらめいたので、サイコロ(ちょぼいち)は、こんな風な画面にしようかなーというのを作ってみました。

#------------------------------------------------------------
#   ちょぼいち
#さいころ1個を振り、出た目に賭ける賭博。賭け者は1から6の好きな目に賭け、
#当たれば4~5の配当が払われ、負けると全額没収される。
#------------------------------------------------------------


#-----母艦設計------------------------------------------------
!母艦設計=「母艦の可視はオフ母艦のタイトルは「さいころ」
母艦のWは640。母艦のHは480。
母艦を$FFDDAAで画面クリア母艦のスタイルは「枠固定」
母艦オフに最大化ボタン有効変更。
母艦中央移動

『#親部品名,部品名,テキスト,ショートカット,オプション,イベント
なし,ファイルメニュー,ファイル(&F),,,
 -,開くメニュー,開く(&O),Ctrl+O,,
 -,-,,,,
 -,閉じるメニュー,閉じる(&X),Ctrl+X,,終わる
』をメニュー一括作成。

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

#-----宣言---------------------------------------------------
ダイスサイズとは整数=100
半径とは整数=10

元手とは整数=100
所持金とは整数=元手
賭け金とは整数=0
配当とは整数=4
予想とは整数。

賭場サイズとは整数=300
板サイズとは整数=70
左マージンとは整数=15
上マージンとは整数=15

裏画面とはイメージの可視はオフのWはダイスサイズ*6。のHはダイスサイズ+板サイズ*2。

処理用とはイメージの可視はオフ。


#---サイコロ振るところ----
賭場とはイメージの可視はオフのWは賭場サイズ。のHは賭場サイズ。
賭場を$775533で画面クリア。

#---胴元がしゃべるところ----
テキストウィンドウとはイメージの可視はオフのWは600。のHは100。
テキストウィンドウを$222222で画面クリア。

#---お金を賭けるところ----
賭け板とはイメージの可視はオフのWは板サイズ*2。のHは板サイズ*6

賭け板設定とは配列。 #0ボタン表示位置X、1ボタン表示位置Y、2ボタン幅、ボタン高さ
6
  賭け板設定¥回数,0は左マージン+賭場サイズ+50+(板サイズ*((回数-1)%3))。
  賭け板設定¥回数,1は上マージン+80+(板サイズ*((回数-1)/3を切り下げ))
  賭け板設定¥回数,2は板サイズ
  賭け板設定¥回数,3は板サイズ


#---所持金表示----
所持金ラベルとはラベルのテキストは「所持金:{所持金}文」
のXは左マージン+賭場サイズ+50。のYは上マージン+20。
のWは250。のHは50。
文字サイズは24。文字書体は「MS 明朝」。

#---勝負ボタン----
勝負ボタンとはボタンのテキストは「勝負!」
のXは左マージン+賭場サイズ+100。のYは上マージン+板サイズ*2+120。
のWは100。のHは30。
文字サイズは18。文字書体は「MS 明朝」。
#------------------------------------------------------------


#-----メインルーチン-------------------------------------------
母艦の可視はオン。

サイコロ準備
ゲーム画面準備

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

#-----マウス入力待ち-------------------------------------------
母艦マウス移動した時は~
  賭け板の賭け板設定を母艦へマウスインアウト反映。
母艦のマウス押した時は~
  もし母艦の押されたボタン=左ならば
    もし、前選択ボタン=0でなければ
      もし、前選択ボタン=1ならば
        予想=3
      違えばもし、前選択ボタン=3ならば
        予想=1
      違えば、
        予想=前選択ボタン
      予想を言う
勝負ボタンのマウス押した時は~
  サイコロ振る
#------------------------------------------------------------

#-----ゲーム画面準備-------------------------------------------
*ゲーム画面準備

  #---お金を賭けるところ----
  処理用を板サイズ,板サイズ*6へ画像高速リサイズ。
  数を0から5まで繰り返す
    塗り色は$DDAA00。線太さは0。
    x=0
    y=数*板サイズ
    処理用のx,yからx+板サイズ,y+板サイズへ四角
    数で条件分岐
      0ならば
        板数=「三」
      1ならば
        板数=「二」
      2ならば
        板数=「一」
      3ならば
        板数=「四」
      4ならば
        板数=「五」
      5ならば
        板数=「六」
    文字サイズは42。文字色は$000000。文字書体は「MS 明朝」
    処理用のx+5,y+5へ板数を文字描画。

  処理用を賭け板の0,0へ画像コピー。
  処理用を画像ネガポジ。
  処理用を賭け板の板サイズ,0へ画像コピー。
  
  賭場を母艦の左マージン,上マージンへ画像コピー。
  テキストウィンドウを母艦の左マージン,上マージン+賭場サイズ+10へ画像コピー。
  賭け板の0,0を賭け板設定で母艦へマウスオーバーボタン表示。
#------------------------------------------------------------
  文字色白色文字サイズは14。
  母艦の左マージン+10,上マージン+賭場サイズ+20へ「【胴元】」を文字描画。
  母艦の左マージン+30,上マージン+賭場サイズ+50へ「いくら賭けるんだい?」を100で文字遅延描画
#------------------------------------------------------------

#-----サイコロを振る-------------------------------------------
*サイコロ振る
    r=6の乱数
    x=r*ダイスサイズ。y=0。
    
    処理用をダイスサイズ,ダイスサイズへ画像高速リサイズ。
    裏画面のx,y,ダイスサイズ,ダイスサイズを処理用の0,0へ画像部分コピー。
    処理用を母艦の左マージン+(賭場サイズ/2-ダイスサイズ/2),上マージン+(賭場サイズ/2-ダイスサイズ/2)へ画像合成改。
#------------------------------------------------------------


#-----サイコロ画像の準備---------------------------------------
*サイコロ準備
  裏画面を$000000で画面クリア。
    数を0から5まで繰り返す。
    もし、数=0ならば                #1のサイコロ
      線色は$000001。塗り色は$FFFFFF        #地の色は白
      外枠。                    #ダイスの外枠
      線色は$FF0000。塗り色は$FF0000        #目の色は赤
      半径=15。                 #大き目
      中点。
    
    もし、数=1ならば                #2のサイコロ
      線色は$000001。塗り色は$FFFFFF
      外枠。
      線色は$000001。塗り色は$000001
      半径=10。
      左上点。右下点。
    
    もし、数=2ならば                #3のサイコロ
      線色は$000001。塗り色は$FFFFFF
      外枠。
      線色は$000001。塗り色は$000001
      半径=10。
      中点。左上点。右下点。
    
    もし、数=3ならば                #4のサイコロ
      線色は$000001。塗り色は$FFFFFF
      外枠。
      線色は$000001。塗り色は$000001
      半径=10。
      左上点。左下点。右上点。右下点。
    
    もし、数=4ならば                #5のサイコロ
      線色は$000001。塗り色は$FFFFFF
      外枠。
      線色は$000001。塗り色は$000001
      半径=10。
      中点。左上点。左下点。右上点。右下点。
    
    もし、数=5ならば                #6のサイコロ
      線色は$000001。塗り色は$FFFFFF
      外枠。
      線色は$000001。塗り色は$000001
      半径=9。
      左上点。左下点。右上点。右下点。左中点。右中点。

*外枠
  x=数*ダイスサイズ。y=0。
  x2=x+ダイスサイズ。y2=ダイスサイズ。
  裏画面のx,yからx2,y2へ30,30で角丸四角。

*中点
  xx=(x+ダイスサイズ/2)-半径。yy=ダイスサイズ/2-半径
  xx2=(x+ダイスサイズ/2)+半径。yy2=ダイスサイズ/2+半径。
  裏画面のxx,yyからxx2,yy2へ。

*左上点
  xx=(x+ダイスサイズ/4)-半径。yy=ダイスサイズ/4-半径
  xx2=(x+ダイスサイズ/4)+半径。yy2=ダイスサイズ/4+半径。
  裏画面のxx,yyからxx2,yy2へ。

*左下点
  xx=(x+ダイスサイズ/4)-半径。yy=(ダイスサイズ/4)*3-半径
  xx2=(x+ダイスサイズ/4)+半径。yy2=(ダイスサイズ/4)*3+半径。
  裏画面のxx,yyからxx2,yy2へ。

*右上点
  xx=(x+ダイスサイズ/4*3)-半径。yy=ダイスサイズ/4-半径
  xx2=(x+ダイスサイズ/4*3)+半径。yy2=ダイスサイズ/4+半径。
  裏画面のxx,yyからxx2,yy2へ。

*右下点
  xx=(x+ダイスサイズ/4*3)-半径。yy=(ダイスサイズ/4)*3-半径
  xx2=(x+ダイスサイズ/4*3)+半径。yy2=(ダイスサイズ/4)*3+半径。
  裏画面のxx,yyからxx2,yy2へ。

*左中点
  xx=(x+ダイスサイズ/4)-半径。yy=ダイスサイズ/2-半径
  xx2=(x+ダイスサイズ/4)+半径。yy2=ダイスサイズ/2+半径。
  裏画面のxx,yyからxx2,yy2へ。

*右中点
  xx=(x+ダイスサイズ/4*3)-半径。yy=ダイスサイズ/2-半径
  xx2=(x+ダイスサイズ/4*3)+半径。yy2=ダイスサイズ/2+半径。
  裏画面のxx,yyからxx2,yy2へ。

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


●画像合成改({グループ}Sを{グループ}DのX,Yへ)
 Cとは整数
//マスク画像はSの透過色を黒色それ以外を白色にしたもの
 マスク画像をイメージとして作成
 マスク画像→可視はオフ
 マスク画像→画像はS→名前
 マスク画像の0,0を画像色取得してCに代入
 マスク画像をCで画像マスク作成
//ソース画像はSの透明色を黒色に変換したもの
 ソース画像をイメージとして作成
 ソース画像→可視はオフ
 ソース画像→画像はS→名前
 マスク画像を画像ネガポジ
 マスク画像をソース画像の0,0へ画像ANDコピー
 マスク画像を画像ネガポジ
//合成実行
 マスク画像をDのX,Yへ画像ANDコピー
 ソース画像をDのX,Yへ画像ORコピー
 マスク画像→壊す
 ソース画像→壊す
#------------------------------------------------------------

●マウスオーバーボタン表示({グループ=?}OBJ1のX,YをAで{グループ=?}OBJ2へ)
  A\0,0=X。A\0,1=Y
  (Aの要素数-1)
    OBJ1のX,Y+(回数-1)*(A¥回数,3),(A¥回数,2),(A¥回数,3)をOBJ2の(A¥回数,0),(A¥回数,1)へ画像部分コピー。


●マウスインアウト反映({グループ=?}OBJ1のAを{グループ=?}OBJ2へ)
  (Aの要素数-1)
    もし、((OBJ2→マウスX)>(A¥回数,0))かつ
      ((OBJ2→マウスX)<(A¥回数,0)+(A¥回数,2))かつ
      ((OBJ2→マウスY)>(A¥回数,1))かつ
      ((OBJ2→マウスY)<(A¥回数,1)+(A¥回数,3))ならば
        選択ボタン回数。
    違えばもし、(回数=Aの要素数)かつ(選択ボタン=0)ならば
      選択ボタンは0。
    ここまで

  もし、前選択ボタン<>選択ボタンならば
    もし、前選択ボタン>0ならば
      OBJ1の(A\0,0),(A\0,1)+(前選択ボタン-1)*(A¥(前選択ボタン),3),(A¥(前選択ボタン),2),(A¥(前選択ボタン),3)をOBJ2の(A¥(前選択ボタン),0),(A¥(前選択ボタン),1)へ画像部分コピー。
    もし、選択ボタン>0ならば
      OBJ1の(A\0,0)+(A¥(選択ボタン),2),(A\0,1)+(選択ボタン-1)*(A¥(選択ボタン),3),(A¥(選択ボタン),2),(A¥(選択ボタン),3)をOBJ2の(A¥(選択ボタン),0),(A¥(選択ボタン),1)へ画像部分コピー。
  前選択ボタン=選択ボタン
  選択ボタン=0
  描画処理反映

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

【せんせい】

 の学習内容としては、まで変数の宣言は、宣言時に値を与える場合、

ダイスサイズとは整数。ダイスサイズ=100

 と書いていましたが、

ダイスサイズとは整数=100

 と書けることがわかりましたです(汗)

【でし】

 ちょっとしたことですけど、変数が多くなればなるほど、だいぶ楽ですよね。

【せんせい】

 まだゲームとしては動作しませんけど、お金を賭ける部分の動作を決めたら、以前作った基本動作の応用でさくっと作れそうな気も…

【でし】

 ところで、相変わらずラベルはチラチラしますねー。

【せんせい】

 ーでした。思わず忘れて、癖でラベルにしちゃいましたが直しましょう。

 それにしても、描画処理の伴わない、マウス判定とかだけでもチラッとするのはなぜなんでしょう。それともやっぱどこかで無駄に動いているかな…?

ゲスト



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