17
1:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:41:47.714 ID:3KdwvMGi0.net

初心者向けに1から教えていくよー


スポンサードリンク
7:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:44:53.667 ID:3KdwvMGi0.net

・講座内容
 Android Studioでゲームアプリの開発

・所要時間
 1時間

・必要なもの
 パソコン
 インターネット


8:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:46:49.370 ID:3KdwvMGi0.net

1.JDKのインストール
まず最初にJDKのインストール
Javaでプログラミングするのに必要

ここからダウンロード
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Java SE Development Kit 7u79の下のAccept License Agreementをクリックして自分のOSを選んでダウンロード
OSが32bitの場合はx86、64bitの場合はx64
『次」を連打でインストール


9:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:47:28.428 ID:LQBpvWx70.net

へー面白そう
Androidstudio入れるだけ入れて止まってたから見たいな


11:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:49:23.384 ID:3KdwvMGi0.net

>>9
今から一緒に作ろうぜ!
とりあえず簡単なゲームを作れるぐらいまでは教えようと思う


10:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:49:18.682 ID:Y6KwG/7c0.net

javaは理解してる前提?


15:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:51:43.570 ID:3KdwvMGi0.net

>>10
今回はコピペでも作れるゲーム教えるけど自分で作ろうと思ったらjavaは理解してないと


16:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:52:16.500 ID:3KdwvMGi0.net

2.Android Studioのインストール
Androidアプリの開発に必要

ここからダウンロード
http://developer.android.com/intl/ja/sdk/index.html

同意にチェックを入れてダウンロード
「I Agree」と「Next」連打でインストール
Android Studioが起動したら準備完了


18:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:56:14.056 ID:3KdwvMGi0.net

こんな画面が出てきたら成功


Android Studioを起動してStart a new Android Studio projectをクリック

Application name:
プロジェクトの名前
とりあえず「New Game」と入力
Company Domain:
アプリのパッケージネーム(固有IDみたいなの)に使われる
今回は「vip.com」と入力

「Next」をクリック


19:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:58:51.242 ID:3KdwvMGi0.net

あんまり需要ない?


20:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:59:23.958 ID:iU2rb5TS0.net

少しはある


22:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:00:56.460 ID:3KdwvMGi0.net

Phone and TabletのMinimum SDKの選択
アプリが対応しているAndroidのバージョンを選ぶ
数が小さいほど多くのAndroidに対応している
Help me chooseをクリックすると現在使われているAndroidの割合が表示される
今回は「API 8:Android 2.2(Froyo)」を選択

「Next」をクリック


25:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:03:38.777 ID:3KdwvMGi0.net

Empty Activityを選択して「Next」
そのまま「Finish」でプロジェクトの完成


26:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:03:59.343 ID:EDqFwa3/d.net

2.2なの?
もう4でもいいんじゃね?


27:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:08:36.185 ID:3KdwvMGi0.net

>>26


一応これ見たら2.2ならだいたい対応できるから
今回はそんな新しいAPIの機能使わないから2.2にしてる


29:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:13:47.332 ID:EDqFwa3/d.net

androidはよく知らんが4って2と完全に互換性有るの?


30:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:16:25.917 ID:3KdwvMGi0.net

>>29
上位互換だから2で動くやつは4で動く
Minimum SDKを4とか5にすると2では動かない


28:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:12:38.706 ID:3KdwvMGi0.net

ちょっとまってこんな画面になったら成功


31:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:20:23.366 ID:3KdwvMGi0.net

次はパソコンでAndroidを動かすエミュレーターの設定

まずAVD Managerをクリック


32:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:26:37.870 ID:3KdwvMGi0.net

Create Virtual Deviceをクリック

デフォルトでNexus 5が選択されてるからそのままNext

さっきAPI 8:Android 2.2(Froyo)を選んだからFroyo 8 armeabi Android2.2の
一番上のやつをクリックしてダウンロード

ダウンロードできたらNextを押してそのままFinish


33:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:36:10.634 ID:iU2rb5TS0.net

とりあえずソフトインストールした


35:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:41:47.366 ID:3KdwvMGi0.net

>>33
この通りにやればとりあえずゲームができるから頑張って


34:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:39:40.674 ID:3KdwvMGi0.net

できたエミュレーターをクリックしてAndroidが立ち上がったら成功

とりあえずShift+F10を押してアプリを実行する
Launch emulatorを選んでさっき作ったエミュレーターを選択してOK

エミュレーターが起動してHello worldが表示されれば成功


38:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:50:36.112 ID:3KdwvMGi0.net

あとは適当にコードを書いて



アプリを実行すれば



出来上がり!
お疲れ様でした!


39:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:52:44.295 ID:/Q42qMST0.net

これでは開発環境構築講座じゃないか


40:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:54:04.857 ID:zAvFPr640.net

しね


41:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:58:53.277 ID:3KdwvMGi0.net

うそですごめんなさい

コードが書けない人は

これをコピペしてください

Download:http://blog.livedoor.jp/itsoku/sample/693195.txt


42:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:02:25.127 ID:3KdwvMGi0.net

本当は頑張ってアプリ作ったから宣伝したかっただけなんです
もし良かったらプレイしてくださいお願いします
https://play.google.com/store/apps/details?id=com.autumn_room.hardest2


80:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:05:39.082 ID:Mk7kAfav0.net

>>1は本業の人?


83:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:16:59.654 ID:M9BCVU7Z0.net

>>80
ほとんど趣味の個人のアプリ開発者かな
まだ食えるほど収入はないけどいずれこれだけでやっていけたらとは思う


50: ◆SUISEImM0U 2016/01/08(金) 23:15:33.765 ID:fNh6/60hM.net

ホントの素人でも100円くらい取れるレベルの作れる?


54:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:20:34.234 ID:3KdwvMGi0.net

>>50
わかんないけど広告つければ多少はお金が入ってくる
いかに宣伝するかが大事だからSNSとかブログとかで宣伝してダウンロードされれば
100円ぐらいは余裕じゃない?


53:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:16:54.187 ID:leCn5jMQ0.net

googleplayとかに登録するときに金かかるんだっけ


56:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:23:35.108 ID:3KdwvMGi0.net

>>53
最初に登録料が2000円ぐらいかかる
Appleは毎年10000円ぐらいかかるからもっと大変
ちなみにAppleは登録しないと実機テストすらできない


57: ◆SUISEImM0U 2016/01/08(金) 23:25:36.154 ID:fNh6/60hM.net

>>56
やっぱり胴元が儲かるようにできてるのか当たり前だが


44:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:05:42.001 ID:5/bq7Srw0.net

こういうのさっぱりだから出来る奴は素直にゴイスーだと思ってる


47:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:11:44.890 ID:3KdwvMGi0.net

>>44
ありがとう!
さっきのコードコピペして動いたら自分で改変して遊んでもらえたらと思います
たとえば47行目からのIROKAZUとかTATEとかの数字をいじるとルールを変えたりできます
そうやって自分でいじってみてプログラミングの楽しさを感じてもらえたら嬉しいです


43:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:04:54.692 ID:3KdwvMGi0.net

もうちょっとコードの書き方も教えようと思ったけど
あまり需要がなさそうなんでこれで終わります
ありがとうございました


45:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:07:38.421 ID:06KLsZvW0.net

需要はあるだろ


49:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:14:16.836 ID:3KdwvMGi0.net

なんかあまり人いないからどうなのかと思って
需要あるならもう少し続けようか
アプリ開発の質問とかも答えるよ


51:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:15:57.297 ID:9UToKYxD0.net

続けろ


54:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:20:34.234 ID:3KdwvMGi0.net

>>51
あざっす
じゃあ簡単なゲームの作り方でも教えようか


55:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:20:56.699 ID:R6SteI5s0.net

ROMってる兄弟たちが100人くらいいるから続けて!!


58:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:25:52.116 ID:3KdwvMGi0.net

>>55
ありがとう!
じゃあ準備するからちょっと時間かかるかも


59:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:30:03.440 ID:9UToKYxD0.net

アプリやりながら待ってるよー


60:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:38:29.386 ID:3KdwvMGi0.net

とりあえず>>34まで出来ていることが前提

まずはさっきのコードにこれを貼り付けてアプリの実行

白い画面が出たら成功

Download:http://blog.livedoor.jp/itsoku/sample/693263.txt


61:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:46:43.379 ID:3KdwvMGi0.net

コードの左の灰色の部分を左クリックしてShow line numberにチェックを入れると
行数が表示されてわかりやすい

ポイントはまず56行目までは無視してOK
58行目で解像度の設定
Androidはスマホごとに解像度が違うからそれを合わせる必要がある
getWidthでスマホの横の解像度を取得して
それを自分のアプリの解像度で割って(ここでは540px)dwに代入
これでアプリの解像度とスマホの解像度の比率が出るから今後はこの数字をかけていく
例えば1080pxの解像度だと1080/540=2となるからアプリの座標x2をすれば表示する位置を揃えることができる


62:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:48:34.092 ID:R6SteI5s0.net

ふむふむ


63:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:50:13.890 ID:3KdwvMGi0.net

次に62行目の画面の更新
73行目の100,100は100ミリ秒(0.1秒)で72行目のdraw()(画面の表示)を実行するということ
ここではつまり10fpsで画面が更新される


64:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:52:23.760 ID:3KdwvMGi0.net

つまり簡単に言うと
・これから表示を合わせるために座標の数字にはdwをかけるよ!
・10fpsで更新するよ!fpsを変えたかったら73行目を変えてね!
ってこと


65:以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:58:59.965 ID:R6SteI5s0.net

とりあえずあげ


66:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:01:43.954 ID:M9BCVU7Z0.net

そしていよいよ81行目からゲームの表示

まずはこれを81行目にコピペして実行

//画像の書式を決める
Paint p_maru=new Paint();
p_maru.setColor(Color.RED);
//まるの表示
canvas.drawCircle(270* dw, 480 * dw, 30 * dw,p_maru);



こんなまるが表示されれば成功


68:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:07:15.356 ID:M9BCVU7Z0.net

簡単に説明すると
まずp_maruっている名前のPaint(図形の書式)を作成
p_maru.setColorで画像の色を決める
ここの中のColor.REDをColor.BULEとかBLACKとかにしたら色が変わる
次のcanvas.drawCircleでまるの表示
中の数字は,で区切られ順に(x座標の位置,y座標の位置,まるの大きさ,書式(さっき作ったやつ))
でまるの位置や大きさを決める


71:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:17:23.193 ID:M9BCVU7Z0.net

次にまるを動かすよ!

まず33行目に

private int x=30;
private int y=400;

を追加
そして87行目(canvas.drawCircleの行)を消して

x+=10;
y-=20;
canvas.drawCircle(x* dw, y * dw, 30 * dw,p_maru);

を貼り付け
まるが斜めに動いていけば成功!


73:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:27:40.147 ID:M9BCVU7Z0.net

解説としてはまず33行目から変数の宣言
つまりxとyっていう数字の代わりを作ってそこに30と400を入れるよ
そしてx+=10とy-=20で毎回+10と-20をそれぞれにするよってこと
10fpsだから1秒にxは100px、yは-200px動く


74:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:36:23.643 ID:M9BCVU7Z0.net

次に条件式の追加
まずy-=20;の下に

//条件式
if(x>540){
x=0;
}
if(y<0){
y=600;
}

を追加
まるが画面を出たらワープしたら成功


75:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:38:52.739 ID:M9BCVU7Z0.net

ifは条件式で()の中の式が成り立つときに{}のなかが実行される
ここではもしxが540を超えたらxを0にする
もしyが0より減ったら600にする


76:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:48:20.382 ID:M9BCVU7Z0.net

次は画面のタッチの処理
    //ここまで
holder.unlockCanvasAndPost(canvas);
}
の下に


@Override
//タッチイベントの処理
public boolean onTouchEvent(MotionEvent e) {
if(e.getPointerCount()>1)return true;
//タッチの座標
float ex=e.getX();
float ey=e.getY();
//アクションのスイッチ
switch(e.getAction()){
case MotionEvent.ACTION_DOWN:
x=(int)(ex/dw);
y=(int)(ey/dw);
return true;
}
return false;
}

を追加
タッチの位置にまるが移動すれば成功


77:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:49:39.630 ID:JIZKgyMv0.net

Androidってどんな感じなんだ
タッチされたところの座標とかはどう受けとるんだ


78:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:53:14.683 ID:M9BCVU7Z0.net

まずこのeにタッチの情報が入っている
e.getX()とe.getY()でタッチの位置を取得
e.getAction()デタッチの種類を取得
MotionEvent.ACTION_DOWN(画面にタッチした時)で
xとyにタッチした座標を代入(スマホの座標とアプリの座標を合わせるためにdwで割る)


79:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:59:19.215 ID:JIZKgyMv0.net

スマホにより画面の大きさが違うのはどうなってるの?
縦と横の幅も取得できるのか?


81:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:10:39.336 ID:M9BCVU7Z0.net

>>79
>>61でスマホの解像度を取得してアプリの解像度で割ることでスマホとアプリの解像度の
比率を出してる
その比率を座標にかけることで解像度を合わせてる
今回は横幅だけで合わせてるから縦の大きさはアプリによって変わってくる
でもスマホの大きさは今は大体16:9だから横が540pxだったら大体縦は960pxぐらい
だから大体縦は800px以内に収めるとかもっと小さくしてバナー広告を下に入れたりして調整するといいと思う


84:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:21:48.337 ID:M9BCVU7Z0.net

最後にゲームっぽくするための仕上げ

35行目に

private int score;

を追加

private int x=30;
private int y=400;

の部分を

x+=(int)(-30+60*Math.random());
y+=(int)(-30+60*Math.random());

に変更

x=(int)(ex/dw);
y=(int)(ey/dw);

の部分を

if(x>(int)(ex/dw)-10&&x<(int)(ex/dw)+10
&&y>(int)(ey/dw)-10&&y<(int)(ey/dw)+10) {
score++;
System.out.println(score);

に変更
まるがランダムに動いてまるをタッチしたらコードの下の部分に数字が表示されれば成功
結構早く動くから意外と難しいと思う


85:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:31:02.350 ID:M9BCVU7Z0.net

解説
Math.random()は0から1までの間のランダムな数字(小数点)を取得
それに60をかけると0~59のランダムな数字になる
(int)は少数を捨てて整数にするため

MotionEvent.ACTION_DOWN:の下は当たり判定
タッチした座標がまるの中心の+-10px以内だとscoreを++(+1のこと)する
&&は数学のかつ(∧)と一緒

System.out.println(score); でスコアをコードの下に表示

これでゲームアプリ「マルゲッチュ!」の完成!(適当)


86:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:33:00.753 ID:M9BCVU7Z0.net

とりあえずコードをおいておきます

Download:http://blog.livedoor.jp/itsoku/sample/693417.txt


87:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:38:08.912 ID:M9BCVU7Z0.net

時間かかった割に適当解説&クソゲーでほとんど意味なかったと思うけど
これで終了します

あと興味がある人はtimer変数とか作って時間制限を作ったりandroid canvas text
とかでググってスコアを表示してみたりしてまともなゲームにしてみてください


88:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:39:19.795 ID:L/JG/AsD0.net


スレ保存して今度やってみる


89:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:45:08.788 ID:M9BCVU7Z0.net

>>88
ありがとう!
そう言ってもらえるだけで今回やった甲斐があるわ
コピペでもコードが動いてゲームができるってのは結構楽しいと思う
そうやってもっとアプリ作る人が増えてけばいいと思う


90:以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 02:01:16.290 ID:AyNxfwLS0.net

もっと早く見れば良かった…
俺もこれ参考にしながら明日やってみよう


元スレ: http://viper.2ch.sc/test/read.cgi/news4vip/1452256907/