Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16 / 13315 ツリー ←次へ | 前へ→

【80834】ゲーム制作:自機の操作と敵機の自動移動を同時に処理することについて SHUN 19/5/21(火) 13:26 質問[未読]

【80838】Re:ゲーム制作:自機の操作と敵機の自動移... 亀マスター 19/5/23(木) 0:59 回答[未読]
【80883】Re:ゲーム制作:自機の操作と敵機の自動移... SHUN 19/6/6(木) 19:53 お礼[未読]

【80838】Re:ゲーム制作:自機の操作と敵機の自動...
回答  亀マスター  - 19/5/23(木) 0:59 -

引用なし
パスワード
   シューティングゲームのようなものを作ろうとしているのだと思います。

大体の感じですが、以下のようにすればいいと思います。

Do
  'キーボードの入力状況に応じて自機の座標(i, j)を変更
  '敵機の座標(I, J)を変更
  'すべてのセルの背景色をクリア
  '自機、敵機の座標のセルの背景色を設定
Loop

すべてのセルはCellsで取得できます。

ループのたびにセルの背景色をクリア・設定しているのは、自機・敵機が動いたかどうかでセルの背景色を変更するかどうかを判定していると、処理が煩雑になるためです。
ですので、ここでは自機・敵機の座標が変わったかどうかに関係なく、ループのたびに背景色を設定し直すという方法をとっています。

自機と敵機の処理を別のプロシージャにしたいなら、それぞれのプロシージャではキーボードの入力状況や乱数による座標の変更だけの処理にして、ループや背景色の設定に関しては呼び出し元で処理するようにすればいいでしょう。


なお、質問の部分ではありませんが、敵機の移動部分でRndを使う際、この関数は呼び出すたびに違う値を返すので、If x < Rnd で呼ばれるたびに違う値が使われ、思った挙動にならない可能性がありますよ。
そうしたくないなら、Rndを呼び出すのはループの中で1回だけにして、取得した値を変数にセットし、その変数を用いて条件判定すればいいと思います。

【80883】Re:ゲーム制作:自機の操作と敵機の自動...
お礼  SHUN  - 19/6/6(木) 19:53 -

引用なし
パスワード
   とても遅れました。
色々四苦八苦した結果、セルの色付けでなく、オートシェイプを動かす術を
身に着けたら解決できました。

ありがとうございます。

16 / 13315 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free