1: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:41:47.714 ID:3KdwvMGi0
初心者向けに1から教えていくよー


7: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:44:53.667 ID:3KdwvMGi0
・講座内容
 Android Studioでゲームアプリの開発

・所要時間
 1時間

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

8: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:46:49.370 ID:3KdwvMGi0
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
へー面白そう
Androidstudio入れるだけ入れて止まってたから見たいな

11: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:49:23.384 ID:3KdwvMGi0
>>9
今から一緒に作ろうぜ!
とりあえず簡単なゲームを作れるぐらいまでは教えようと思う

10: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:49:18.682 ID:Y6KwG/7c0
javaは理解してる前提?

15: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:51:43.570 ID:3KdwvMGi0
>>10
今回はコピペでも作れるゲーム教えるけど自分で作ろうと思ったらjavaは理解してないと

16: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 21:52:16.500 ID:3KdwvMGi0
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
Androidアプリ開発の解説

こんな画面が出てきたら成功
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
あんまり需要ない?

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

22: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:00:56.460 ID:3KdwvMGi0
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
Empty Activityを選択して「Next」
そのまま「Finish」でプロジェクトの完成

26: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:03:59.343 ID:EDqFwa3/d
2.2なの?
もう4でもいいんじゃね?

27: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:08:36.185 ID:3KdwvMGi0
>>26
Androidアプリ開発の解説

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

28: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:12:38.706 ID:3KdwvMGi0
Androidアプリ開発の解説

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

29: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:13:47.332 ID:EDqFwa3/d
androidはよく知らんが4って2と完全に互換性有るの?

30: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:16:25.917 ID:3KdwvMGi0
>>29
上位互換だから2で動くやつは4で動く
Minimum SDKを4とか5にすると2では動かない

31: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:20:23.366 ID:3KdwvMGi0
次はパソコンでAndroidを動かすエミュレーターの設定

まずAVD Managerをクリック
Androidアプリ開発の解説

32: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:26:37.870 ID:3KdwvMGi0
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
とりあえずソフトインストールした

35: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:41:47.366 ID:3KdwvMGi0
>>33
この通りにやればとりあえずゲームができるから頑張って

34: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:39:40.674 ID:3KdwvMGi0
できたエミュレーターをクリックしてAndroidが立ち上がったら成功

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

エミュレーターが起動してHello worldが表示されれば成功
Androidアプリ開発の解説

36: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:46:29.425 ID:iU2rb5TS0
エンプティアクティビティないんだけどブランクアクティビティでもいいの?

37: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:47:57.597 ID:3KdwvMGi0
>>36
いいよ!

38: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:50:36.112 ID:3KdwvMGi0
あとは適当にコードを書いて
Androidアプリ開発の解説


アプリを実行すれば
Androidアプリ開発の解説


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

39: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:52:44.295 ID:/Q42qMST0
これでは開発環境構築講座じゃないか

41: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 22:58:53.277 ID:3KdwvMGi0
>>39
うそですごめんなさい

コードが書けない人は
http://iphoneapp.doorblog.jp/code.txt
これをダウンロードしてコピペしてください

42: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:02:25.127 ID:3KdwvMGi0
本当は頑張ってアプリ作ったから宣伝したかっただけなんです
もし良かったらプレイしてくださいお願いします
https://play.google.com/store/apps/details?id=com.autumn_room.hardest2

44: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:05:42.001 ID:5/bq7Srw0
こういうのさっぱりだから出来る奴は素直にゴイスーだと思ってる

47: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:11:44.890 ID:3KdwvMGi0
>>44
ありがとう!
さっきのコードコピペして動いたら自分で改変して遊んでもらえたらと思います
たとえば47行目からのIROKAZUとかTATEとかの数字をいじるとルールを変えたりできます
そうやって自分でいじってみてプログラミングの楽しさを感じてもらえたら嬉しいです

43: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:04:54.692 ID:3KdwvMGi0
もうちょっとコードの書き方も教えようと思ったけど
あまり需要がなさそうなんでこれで終わります
ありがとうございました

45: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:07:38.421 ID:06KLsZvW0
需要はあるだろ

46: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:10:58.891 ID:kOUfLZ5W0
JavaならぬJavaScriptしかやってないからな
Androidアプリ作れない

48: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:13:12.990 ID:06KLsZvW0
JavaScript興味ある

52: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:16:41.319 ID:3KdwvMGi0
>>46,47
JavaScriptはあまりいじったことないな
ブラウザですぐ動くしコンパイルいらないから楽そうで興味あるけど

49: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:14:16.836 ID:3KdwvMGi0
なんかあまり人いないからどうなのかと思って
需要あるならもう少し続けようか
アプリ開発の質問とかも答えるよ

50: ◆SUISEImM0U 2016/01/08(金) 23:15:33.765 ID:fNh6/60hM
ホントの素人でも100円くらい取れるレベルの作れる?

54: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:20:34.234 ID:3KdwvMGi0
>>50
わかんないけど広告つければ多少はお金が入ってくる
いかに宣伝するかが大事だからSNSとかブログとかで宣伝してダウンロードされれば
100円ぐらいは余裕じゃない?

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

54: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:20:34.234 ID:3KdwvMGi0
>>51
あざっす
じゃあ簡単なゲームの作り方でも教えようか

53: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:16:54.187 ID:leCn5jMQ0
googleplayとかに登録するときに金かかるんだっけ

56: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:23:35.108 ID:3KdwvMGi0
>>53
最初に登録料が2000円ぐらいかかる
Appleは毎年10000円ぐらいかかるからもっと大変
ちなみにAppleは登録しないと実機テストすらできない

55: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:20:56.699 ID:R6SteI5s0
ROMってる兄弟たちが100人くらいいるから続けて!!

58: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:25:52.116 ID:3KdwvMGi0
>>55
ありがとう!
じゃあ準備するからちょっと時間かかるかも

59: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:30:03.440 ID:9UToKYxD0
アプリやりながら待ってるよー

60: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:38:29.386 ID:3KdwvMGi0
とりあえず>>34まで出来ていることが前提

まずはさっきのコードにこれを貼り付けてアプリの実行
http://iphoneapp.doorblog.jp/www.dotup.org693263.txt

白い画面が出たら成功

61: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:46:43.379 ID:3KdwvMGi0
コードの左の灰色の部分を左クリックして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
ふむふむ

63: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:50:13.890 ID:3KdwvMGi0
次に62行目の画面の更新
73行目の100,100は100ミリ秒(0.1秒)で72行目のdraw()(画面の表示)を実行するということ
ここではつまり10fpsで画面が更新される

64: 以下、\(^o^)/でVIPがお送りします 2016/01/08(金) 23:52:23.760 ID:3KdwvMGi0
つまり簡単に言うと
・これから表示を合わせるために座標の数字にはdwをかけるよ!
・10fpsで更新するよ!fpsを変えたかったら73行目を変えてね!
ってこと

66: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:01:43.954 ID:M9BCVU7Z0
そしていよいよ81行目からゲームの表示

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

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

Androidアプリ開発の解説

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

67: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:02:48.639 ID:JIZKgyMv0
エミュが使えねえ

69: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:09:33.845 ID:M9BCVU7Z0
>>67
スマホ持ってたらPCと繋げばスマホでも動くよ
android 実機 デバッグとかで検索

68: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:07:15.356 ID:M9BCVU7Z0
簡単に説明すると
まずp_maruっている名前のPaint(図形の書式)を作成
p_maru.setColorで画像の色を決める
ここの中のColor.REDをColor.BULEとかBLACKとかにしたら色が変わる
次のcanvas.drawCircleでまるの表示
中の数字は,で区切られ順に(x座標の位置,y座標の位置,まるの大きさ,書式(さっき作ったやつ))
でまるの位置や大きさを決める

70: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:10:17.855 ID:yE3T4NGq0
このスレAndroid黎明期に見たかったな

72: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:23:45.695 ID:M9BCVU7Z0
>>70
まだ今からでも全然間に合うよ!
流行りとか話題性があればしょぼいアプリでも全然まだ稼げると思う
さっきのアプリの前作も去年出したけどしょぼいアプリだけどそこそこDLされたし

71: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:17:23.193 ID:M9BCVU7Z0
次にまるを動かすよ!

まず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
解説としてはまず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
次に条件式の追加
まずy-=20;の下に

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

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

75: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:38:52.739 ID:M9BCVU7Z0
ifは条件式で()の中の式が成り立つときに{}のなかが実行される
ここではもしxが540を超えたらxを0にする
もしyが0より減ったら600にする

76: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:48:20.382 ID:M9BCVU7Z0
次は画面のタッチの処理
    //ここまで
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
Androidってどんな感じなんだ
タッチされたところの座標とかはどう受けとるんだ

78: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 00:53:14.683 ID:M9BCVU7Z0
まずこの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
スマホにより画面の大きさが違うのはどうなってるの?
縦と横の幅も取得できるのか?

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

82: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:15:54.214 ID:JIZKgyMv0
>>81
なるほど
為になったわありがとう

80: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:05:39.082 ID:Mk7kAfav0
>>1は本業の人?

83: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:16:59.654 ID:M9BCVU7Z0
>>80
ほとんど趣味の個人のアプリ開発者かな
まだ食えるほど収入はないけどいずれこれだけでやっていけたらとは思う

84: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:21:48.337 ID:M9BCVU7Z0
最後にゲームっぽくするための仕上げ

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
解説
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
とりあえずコードをおいておきます
http://iphoneapp.doorblog.jp/code1.txt

87: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:38:08.912 ID:M9BCVU7Z0
時間かかった割に適当解説&クソゲーでほとんど意味なかったと思うけど
これで終了します

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

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

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

89: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 01:45:08.788 ID:M9BCVU7Z0
>>88
ありがとう!
そう言ってもらえるだけで今回やった甲斐があるわ
コピペでもコードが動いてゲームができるってのは結構楽しいと思う
そうやってもっとアプリ作る人が増えてけばいいと思う

90: 以下、\(^o^)/でVIPがお送りします 2016/01/09(土) 02:01:16.290 ID:AyNxfwLS0
もっと早く見れば良かった…
俺もこれ参考にしながら明日やってみよう

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