ゲームアプリ (Catch the Ball)

【Android Studio】ゲームアプリ開発入門 第5回「ボールを動かす」

 

ここまでの記事はこちら
 

前回はタイマーを使って青いボックスを動かせるようになりました。

今回はオレンジ・ピンクボール、黒いトゲトゲを右から左へ動かしていきます。
 


 

動画

動画では Android Studio 3.1.4 を使用していますが 3.6 / 4.0 / 4.1 / 4.2 でも動作確認済みです。

【Android Studio】ゲームアプリ開発入門 #5 ボールを動かす

 
 

解説

スクリーンサイズを取得

まずはデバイスのスクリーンサイズを取得します。

前回取得した frameHeight と同じように frameWidth を用意しても良いですが、せっかくなので別の方法を紹介します。

最後に追加する「ボックスとボールの速度をスクリーンサイズによって変更する」という処理にも使うことができるので、ここでサイズを取得しておきましょう。
 
 

4・5行目を追加します。

 

5~11行目を追加します。

 
 

必要なimport は3つです。


 

import android.graphics.Point;
import android.view.Display;
import android.view.WindowManager;

 
 

getDefaultDisplay メソッドを使うことで、赤線部分のサイズを取得できます。


 
 
 

ボールの座標を準備

ボールの X 座標と Y 座標を管理するための変数を用意します。

2~7行目を追加します。

 

1行にまとめて書くこともできます。

private float orangeX, orangeY;

 
 

オレンジボールを動かす

まずはオレンジボールを画面の右から左へ動かしていきます。
 

4~10行目を追加します。

 

Step 1

orangeX -= 12;

オレンジの X 座標を 12 ずつ減らすことで左方向に動かしています。

大きい数値にするほど、速く左方向に動くようになります。


 

Step 2

if (orangeX < 0) {
  orangeX = screenWidth + 20;
  orangeY = (float)Math.floor(Math.random() * (frameHeight – orange.getHeight()));
}

 

オレンジの X 座標が0より小さくなったら画面の右側に移動させます。


 
 

毎回違う高さからボールが出てくるように orangeY(Y座標)はランダムな値にします。
 
 
 

ランダムな数値の生成方法

ランダムな数値の生成には Math.random() を使います。

例① 0 以上 1 未満の小数を生成する場合

Math.random(); → 0.6210151133565144

例② 0 以上 10 未満の整数を生成する場合

(int)(Math.random() * 10); → 3

 

オレンジボールの Y 座標は 0 から frameHeight – orange.getHeight() の範囲のランダムな値にしたいので、以下のように書いています。

orangeY = (float)Math.floor(Math.random() * (frameHeight – orange.getHeight()));


 

Step 3

orange.setX(orangeX);
orange.setY(orangeY);

最後に X 座標・Y 座標を更新して、ボールを動かします。
 
 
 

アプリを実行する

ここで一度、アプリを実行してみます。

このようにオレンジボールが出てくれば成功です。

 
 
 

黒のトゲトゲを動かす

次は黒のトゲトゲを動かしてみましょう。
 

4~10行目を追加します。

 

オレンジとほとんど同じですが、少しだけ追記です。
 

4行目

blackX -= 16;

オレンジは orangeX -= 12 でしたが、黒は 16 にしました。

これによって黒の方が少しだけ速く動くようになっています。
 

6行目

blackX = screenWidth + 10;

オレンジでは + 20 にしていましたが、黒は + 10 にしました。

これもオレンジより少しだけ早いタイミングで画面に出てくるようにしています。
 
 

好きな数値に変更して、ボールの動きを確認してみてください
 
 
 

ピンクボールを動かす

オレンジ・黒と同じようにピンクボールも動かします。
 

4~10行目を追加します。

 

ピンクボールは他の2つよりも更に速いスピードで動くようにしました。

screenWidth + 5000 とすることで、表示頻度も少なくなるようにしています。
 
 
 

アプリを実行する

アプリを実行してみてください。このように動いていれば成功です!

 

上手く動かない場合は、一番下にここまでのコードを貼ってあるのでご確認ください。
 
 
 

次に行うこと

次回は青いボックスとボールの衝突判定・スコアラベルの更新をしていきます。

第6回 「衝突判定とスコアラベル更新」に進む
 

 
 
 
Android Studioアプリ開発のメニューはこちら
 
 

ここまでのコード

 
 

 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
挫折しないプログラミング講座

 

 
Code for Fun プログラミング講座では「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで学ぶことができます。

  • 何か一つ形にしてみたい!
  • 次に何をして良いか分からない…
  • プログラミングに挫折しそう…

という方にオススメです。

詳しくみる

guest
0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx