1. HOME
  2. »
  3. プログラミング・Web
  4. »
  5. Androidアプリ開発
  6. »
  7. 【Android Studio】じゃんけんゲームの作り方(アプリ開発の基本)

【Android Studio】じゃんけんゲームの作り方(アプリ開発の基本)

限りなくじゃんけんが弱い@It_is_Rです。

Androidアプリ開発、11回目となりました。
そろそろ何かアプリを作ってみたいですよね。基本は大事ですが、一番つまらないですね。

そこで今回は、アプリ開発の基本を学びながら、じゃんけんゲームを作ってみましょう。

このシリーズの前回の記事はこちらです。
【Android Studio】 GridLayout の使い方。複雑なレイアウトを表現する方法

今回はこんな感じのゲームを作ります。
android studio

目次
  1. じゃんけんゲームの画面を作る
  2. ゲームが動くようにプログラムを作る
  3. 完成
  4. まとめ

じゃんけんゲームの画面を作る

まずはじゃんけんゲームの画面を作ってみましょう。
今回、TextViewも使いたいので、最初から入っているTextViewはそのままにしておきます。

ボタンを作る

じゃんけんゲームですので、「グー」、「チョキ」、「パー」のボタンが必要です。
このボタンは横一列に並べたいので、LinearLayout(horizontal)を使います。
android studio

ボタンを3つ作ります。
android studio

ボタンが一番上ではタップしにくいので、下の方に配置したいですね。
今回はLinearLayoutの高さを低くし、LinearLayoutごと一番下に持ってくる方法にしたいと思います。

LinearLayoutを選択し、layout_heightを60dpにします。
android studio

LinearLayoutの下の白い丸を一番下にドラッグします。
android studio

すると、レイアウトを下の方に配置することができます。

ボタンのテキストとIDを変更

次に、それぞれのボタンのテキストとIDを変更します。
それぞれのボタンを選択し、下の画像の様にtextとIDの部分を変更してください。
android studio

  • ID:rock text:グー
  • ID:scissors text:チョキ
  • ID:paper text:パー

といった感じにします。
android studio

TextViewの表示を変更

テキストビューのテキストを変更します。
Hello World! となっている部分を「じゃんけん」に変更しました。
android studio

また、テキストサイズの変更もします。
中央寄せはどちらでもいいと思いますがとりあえず。
android studio

IDはtextに変更しました。
android studio

こんな感じになります。
android studio

更にもう一つTextViewを追加します。
ボタンのレイアウトを配置した要領で、TextViewの上の白い丸を一番上までドラッグします。
android studio

IDを「subtext」
textを「最初はグー」
textSizeを「20sp」にしました。
android studio

こんな感じになります。
android studio

これで画面全体が完成しました。

ゲームが動くようにプログラムを作る

では、ゲームが動く様にしていきましょう。

MainActivity.java にプログラムを書いていきます。

MainActivity.java

package com.example.r.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView text = (TextView)findViewById(R.id.text);
        final TextView subtext = (TextView)findViewById(R.id.subtext);
        Button rock = (Button)findViewById(R.id.rock);
        Button scissors = (Button)findViewById(R.id.scissors);
        Button paper = (Button)findViewById(R.id.paper);

        //opponentHand 1  "rock"
        //opponentHand 2  "scissors"
        //opponentHand 3  "paper"
        rock.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int opponentHand = decideOpponentHand();
                String opponentHandText = changeTextOpponentHand(opponentHand);
                decideGame(1, opponentHand, subtext);
                text.setText(opponentHandText);
            }
        });
        scissors.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int opponentHand = decideOpponentHand();
                String opponentHandText = changeTextOpponentHand(opponentHand);
                decideGame(2, opponentHand, subtext);
                text.setText(opponentHandText);
            }
        });
        paper.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int opponentHand = decideOpponentHand();
                String opponentHandText = changeTextOpponentHand(opponentHand);
                decideGame(3, opponentHand, subtext);
                text.setText(opponentHandText);
            }
        });
    }
    String changeTextOpponentHand(int hand) {
        String handText = "";
        if (hand == 1) handText = "グー";
        else if (hand == 2) handText = "チョキ";
        else if (hand == 3) handText = "パー";
        return handText;
    }
    int decideOpponentHand() {
        Random rnd = new Random();
        int hand = rnd.nextInt(3)+1;
        return hand;
    }
    void decideGame(int playerHand, int opponentHand, TextView decidetext) {
        String decision;
        if(playerHand == opponentHand) decision = "あいこ";
        else if((playerHand == 3 && opponentHand == 1) || (playerHand+1 == opponentHand)) decision = "勝ち";
        else decision = "負け";
        decidetext.setText(decision);
    }
}

17〜21行目
findViewByIdを使って、テキストやボタンを取得します。

26, 35, 44行目
グーチョキパーそれぞれのボタンが押された時の処理です。ここで、相手の出す手を考え、判定し、setTextで画面上のテキストを変更します。

54行目
相手の手の変数の数値によって、文字列を作るメソッドです。

61行目
相手の手をランダムで決定するメソッドです。

66行目
ゲームの判定をするメソッドです。

完成

完成したアプリはこんな感じです。
android studio

まとめ

今回はAndroidアプリ開発らしく、じゃんけんゲームを作りました。
ようやくアプリ開発をしたかって感じです。

このシリーズの一覧はこちら

  1. Android StudioをMacにインストールする方法
  2. 【Android Studio】新規プロジェクトを作成する方法
  3. 【Android Studio】エミュレータを起動してプログラムを実行する方法!
  4. 【Android Studio】開発したアプリの実機テストを行う方法。
  5. 【Android Studio】アプリ開発の基本とそれぞれのファイルの役割を覚える。
  6. 【Android Studio】TextView を使ってテキストを変更、追加する方法。
  7. 【Android Studio】Button(ボタン)を作る基本中の基本。
  8. 【Android Studio】TextView 文字の色やサイズ、書体を変更する方法。
  9. 【Android Studio】レイアウト( Layout )の種類を覚えよう!
  10. 【Android Studio】 GridLayout の使い方。複雑なレイアウトを表現する方法
  11. 【Android Studio】じゃんけんゲームの作り方(アプリ開発の基本)

スポンサードリンク

関連コンテンツ

オススメ記事

HTML5とCanvasを使うべ!

HTML5とCanvasを使ってみよう! 小学生からのプログラミング入門

小学生からのプログラミング講座《こうざ》、こんかいもはじめていきましょう! これまでの講座《こうざ》では、JavScriptの基本《きほん》について学び、キャラクターの操作《そうさ》ができるよ

プログラミングのクラスってなぁに?

【JavaScript】クラスの概念をしっかりと理解しよう! 小学生からのプログラミング入門

小学生からのプログラミング講座《こうざ》、今回もはじめていきましょう! 前回はマップ上をキャラクターが自由に動くことができるようにしました。 今回はES6から使われるようになった「クラス

【Android Studio】レイアウト( Layout )の種類を覚えよう!

服に膝を入れるのが癖です。@It_is_Rです。 Androidアプリ開発、9回目となりました。 さて今回は、ボタンやテキストのレイアウトを整える方法を、解説していきたいと思います。 水平(Ho

【Git】リモートリポジトリへPushする方法

こんにちは、@It_is_Rです。 前回「【Git】ブランチを使って履歴を分岐させる方法」では、ブランチを使うことの便利さを学びました。第五回目の今回は、GitHubのリモートリポジトリを作成

【Gulp4】gulpfile.jsを複数ファイルに分割して、作業効率を上げよう!

Gulpを使って開発を進めているいると、だんだんとgulpfile.jsが複雑になり、どこになにが書いてあったか分からなくなることがあります。そんなときは、gulpfile.jsを分割して管理すると

Windows10にPythonをインストールする方法

みなさんこんにちは。@It_is_Rです。今回はWindows10にPythonをインストールする方法を紹介します。 Pythonのインストーラをダウンロード では、Python

小学校プログラミング必修化。どんなことを学べばいいの?

2020年からのプログラミング必修化において、お子さんのいる方は、「いったいどんなことを学べばいいんだろう?」、「プログラミングなんてまったく分からないのに、どうやって教えてあげればいいんだろう……

【Unity】開発したiOSゲームをiPhoneで実機テストする方法

こんにちは。現在、最新ゲーム熱意製作中の@It_is_Rです。個人での開発はとても大変で、時間がかかってしまっていますが、すこしずつ形にしていっています。 さて、今回はUnityで開発したiO

wordpress

WordPress – デフォルトで用意されたショートコード一覧と使い方。

昔は WordPress の画面が真っ白になって、頭も真っ白になったこともありました。@It_is_Rです。 WordPress では、プラグインを使ったりしない限り、投稿記事のなかで php

enchant.js100行未満!!本格シューティングゲーム作り方

昨日歩き回ったせいで、足がかなり痛い@It_is_Rです。 さて、今回はenchant.jsのネタです。enchant.jsを使うと、javascriptのプログラムがものすごく簡単に書けてし

コメントを残す(コメントは承認後に反映されます)

メールアドレスが公開されることはありません。