Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016-05-30

石をキーボードで左右に移動

| 18:06

 石を固定するところまでと思っていたけど・・・あれれ~?! なんだか上手くいかなくなっちゃった~(?_?)

 固定した石を表画面に反映するのにも、画像合成通を使っていたんだった。

 画像コピーでなんとかしようと書き換えてみたら、石が固定された途端、メイン画面が大変なことにΣ(゜д゜;


 とゆーわけで、途中経過。

 とりあえず左右に移動転、落下まで。

 一応、左右キーは押し続けた時には一気に動くけど、連打した時には一マスずつ動くようにウェイトをかけたり、落下ボタンは離せば落下が止まったり、ボタンは押し続けてもぐるぐる転し続けないようにしているのがこだわりポイントです。

 ・・・てゆうかキーボードなのかよ。

 ジョイパッドはどうしたw


 移動判定は、壁と床だけ;;;

 壁と床はマス目で判定。

 他の石は、固定石配列の内容を参照して判定・・・出来る予定だけど、石の固定ができるようになるまでコメントアウトしておく。

 20とゆうのは仮の数値だけど、キー処理がスムーズに動くようにするためのもの。

#-----------------------------------------------------------------------
*落下処理
  20
    キー処理
    落下用をメイン合成用の落下X,落下Yへ画像コピー。
    メイン合成用を表画面のメインX,メインYへ画像コピー
    メイン画面をメイン合成用の0,0へ画像コピー。
    # 落下キーを押していない時のウェイト
    もし、落下フラグがオンでなければ、
      0.05秒待つ。
    # 左右キーは押し続けた時は一気に動くが、連打した時は一マスごと動くようにする。
    もし、(左移動中=オン)かつ(左キー押下状態=オフならば、
      左キー押下状態=オン。
      0.1秒待つ。
    もし、(右移動中=オン)かつ(右キー押下状態=オフならば、
      右キー押下状態=オン。
      0.1秒待つ。

  落下Y=落下Y+マス目
  移動判定
#-----------------------------------------------------------------------
*キー処理
  # 左移動。
  もし(左移動キーのキー状態=オン)ならば
    移動判定
    もし、左移動フラグ=オンならば
      落下X=落下X-マス目。
      左移動中=オン。
  違えば、
    左キー押下状態=オフ。
    左移動中=オフ。

  # 右移動。
  もし(右移動キーのキー状態=オン)ならば
    移動判定
    もし、右移動フラグ=オンならば
      落下X=落下X+マス目。
      右移動中=オン。
  違えば、
    右キー押下状態=オフ。
    右移動中=オフ。

  # 石を落とす
  もし、(落下キーのキー状態=オン)ならば
    落下フラグ=オン
  違えば
    落下フラグ=オフ

  # 石を転
  もし、(転キーのキー状態=オンならば
    もし転キー押下状態=オフならば  # 押しっぱなしでは転し続けない
     転キー押下状態=オン。
     A=落下石¥0。B=落下石¥1。C=落下石¥2。
     落下石¥0=C。
     落下石¥1=A。
     落下石¥2=B。
     3
       x=落下石¥(回数-1)*マス目。y=0。
       石用のx,y,マス目,マス目を石転用の0,(回数-1)*マス目へ画像部分コピー。
       落下用クリア。
       石転用を落下用の0,0へ画像コピー。
  違えば転キー押下状態=オフ移動判定
  # はみ出しの処理。
  # 石が壁、床、他の石にぶつからずに動けるかどうかを判定。
  落下マスXとは整数=落下X/マス目
  落下マスYとは整数=落下Y/マス目+2  # 一番下の石があるマス目

 # 縦方向
  # 床
  もし、落下Y>=マス目*11ならば、縦移動フラグ=オフ。
  # 他の石
//  違えばもし、固定石¥(落下マスX),(落下マスY)=-1ならば、縦移動フラグ=オン。
//  違えば、縦移動フラグ=オフ。

 # 横方向
  # 左の壁
  もし、(落下X-マス目<0)ならば、
    左移動フラグ=オフ。
    左移動中=オン。
  # 他の石
//  違えばもし、固定石¥(落下マスX-1),(落下マスY)=-1でなければ、
//    左移動フラグ=オフ。
//    左移動中=オン。
  違えば、左移動フラグ=オン。
  # 右のカベ
  もし、(落下X+マス目>=マス目*6)ならば、
    右移動フラグ=オフ。
    右移動中=オン。
  # 他の石
//  違えばもし、固定石¥(落下マスX+1),(落下マスY)=-1でなければ、
//    右移動フラグ=オフ。
//    右移動中=オン。
  違えば、右移動フラグ=オン。
#-----------------------------------------------------------------------

ゲスト



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