ゲームアプリ (Catch the Ball)

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

ここまでの記事はこちら
 

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

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


 

動画

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

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

 
 

解説

不要なコードの削除

前回 onTouchEvent 内で boxY = box.getY(); を書いたので、不要になった onCreate 内の boxY = 500.0f; を削除します。

  black.setX(-80.0f);
  black.setY(-80.0f);
 
  boxY = 500.0f; ← 削除します。
}
 
public void changePos() {

 

スクリーンサイズを取得

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

前回取得した 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

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

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

 
 

アプリを実行する

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

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

 
 

黒のトゲトゲを動かす

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

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

 

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

blackX -= 16;

オレンジは orangeX -= 12 でしたが、黒は 16 にしました。これによって、黒の方が少しだけ速く動くようになっています。
 

blackX = screenWidth + 10;

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

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

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

ピンクボールを動かす

最後は、オレンジ・黒と同じようにピンクボールを動かします。

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

 

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

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

アプリを実行する

アプリを実行してみてください。

このように動いていれば成功です!

 

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

次に行うこと

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

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

ここまでのコード

 
 

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

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA