ゲームアプリ (Catch the Ball)

【Android Studio】ゲームアプリ開発入門 第12回「複数の画面サイズに最適化」

Sara

2023年11月 Android Studio Giraffe | 2022.3.1 で動作確認済み。

ここまでの記事はこちら

今回はこのゲームの総仕上げです!

ここまで Nexus4 のエミュレーターを使って開発してきましたが、他の画面サイズでもゲームを楽しめるように、ボックスとボールの動くスピードを調整していきます。

解説

1. 速度の計算方法

機種や画面サイズによって値を変えるには、デバイスの解像度によって定数ファイルを作成するなどいくつか方法があります。

今回は「スクリーンサイズをもとに計算する方法」で実装します。

この方法だと新しくファイルを用意したり、細かい機種分けも考える必要がないのでオススメです。

現在は Nexus4 で開発しているので、ボックスとボールの動くスピードは

  • ボックス 20
  • オレンジボール 12
  • ピンクボール 20
  • 黒いトゲトゲ 16

になっています。

これを既に取得してある screenWidth と screenHeight をもとに計算していきます。

2. 速度を計算する

MainActivity.java を開いて、5~8行目を追加します。

private float blackX;
private float blackY;
// スピード
private int boxSpeed;
private int orangeSpeed;
private int pinkSpeed;
private int blackSpeed;
// Score
private int score = 0;

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

screenWidth = size.x;
screenHeight = size.y;
boxSpeed = Math.round(screenHeight / 60f);
orangeSpeed = Math.round(screenWidth / 60f);
pinkSpeed = Math.round(screenWidth / 36f);
blackSpeed = Math.round(screenWidth / 45f);
orange.setX(-80.0f);
orange.setY(-80.0f);

Nexus4, Nexus5, Nexus6 のそれぞれの速度の計算結果は以下のようになります。

細かい機種の画面サイズを調べるにはこちらのサイトが便利です。

3. 速度をセットする

6・15・24・34・36行目を変更します。

public void changePos() {
hitCheck();
// Orange
orangeX -= orangeSpeed;
if (orangeX < 0) {
orangeX = screenWidth + 20;
orangeY = (float)Math.floor(Math.random() * (frameHeight - orange.getHeight()));
}
orange.setX(orangeX);
orange.setY(orangeY);
// Black
blackX -= blackSpeed;
if (blackX < 0) {
blackX = screenWidth + 10;
blackY = (float)Math.floor(Math.random() * (frameHeight - black.getHeight()));
}
black.setX(blackX);
black.setY(blackY);
// Pink
pinkX -= pinkSpeed;
if (pinkX < 0) {
pinkX = screenWidth + 5000;
pinkY = (float)Math.floor(Math.random() * (frameHeight - pink.getHeight()));
}
pink.setX(pinkX);
pink.setY(pinkY);
// Box
if (action_flg) {
boxY -= boxSpeed;
} else {
boxY += boxSpeed;
}

4. アプリを実行

アプリを複数のエミュレーターで実行してみてください。

動画では Nexus4, Nexus5, Nexus6 でテストしました。

まとめ

お疲れ様でした、以上で完成です!

たくさんコードを書いてきましたが「絶対にこう書かなくてはいけない」という箇所はありません。

何通りもの実装方法があるのもプログラミングの楽しさです。ぜひご自身でアレンジして、オリジナルのゲームアプリを作ってみてくださいね。

そしてオリジナルゲームをリリースした時は、ぜひお知らせください!「こんなゲーム作れたよ」というご報告を頂けるのは本当に嬉しいのですぐチェックしに参ります。

補足:Warning の解消方法

Warning の解消方法を追加しました。

そのままにしておいても今のところプログラム自体に影響はないので、気になる方だけ進めてみてください。

COMMENT

Subscribe
必ずお読みください!

投稿いただいたコメントは管理者の承認後に表示されます。

コードやエラーに関するご質問の場合は、以下の3点

  1. 開発環境(OS / ブラウザ / MAMP 6.6 / Android Studio Chipmunk など)
  2. エラーメッセージ
  3. お試しになったこと

できるだけ具体的に必ず書いてください。

Notify of


2 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ぐっちー
3 years ago

無事ここまでたどりつけました!
最後までたのしくできて、また勉強になりました!

ありがとうございました ^^

ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

2
0
この記事にコメントするx
記事URLをコピーしました