【初学者】Javaで簡単なRPGゲームを作ってみる①

自己満の備忘録ですのでご容赦ください。

# JavaでRPGゲームを作ってみる
Javaの勉強をしていたらRPGゲームの記事を見つけたので、自分流にアレンジして作ってみたいと思います。
## 構想
敵が現れる→ジャンケンする→勝ち：ダメージ大与える、あいこ：ダメージ小与える、負け：ダメージ食らう→倒す
という流れです。
まあ行き詰まったら変えていくかもしれません。笑

## 実践
### ジャンケンゲームの作成
とりあえず最初にジャンケンゲームを作ってみます。

```Janken.java
import java.util.Scanner;

class Janken {
  public static void main(String[] args) {
    
    System.out.println("最初はグー！じゃんけんぽん！");

    String[] cpuhands = {"グー", "チョキ", "パー"};

    System.out.println("出したい番号を選んでください\n[0]グー\n[1]チョキ\n[2]パー");
    Integer number = new Scanner(System.in).nextInt();

    System.out.println("あなたの出した手： " +cpuhands[number]);
  }
}
```

```:ターミナル
最初はグー！じゃんけんぽん！
出したい番号を選んでください
[0]グー
[1]チョキ
[2]パー
1
あなたの出した手： チョキ
```

まずは自分の出したい手を選ぶという動作ができるようになりました。

### ランダムについて学ぶ
```Janken2.java
class Janken2 {
  public static void main(String[] args) {   
    double d = Math.random();
    System.out.println(d);
  }
}
```

```:ターミナル
0.1831838611927178
0.762839659494738
```

Math.random();で0.0〜1.0未満の乱数を生成できるとのことです。
また、小数点を扱う際はdouble型を使います。

### 0〜2の整数を生成できるようにする
```Janken3.java
class Janken3 {
  public static void main(String[] args) {
    double d = Math.random();
    System.out.println(d);

    int i = (int)(Math.random() * 3);
    System.out.println(i);
  }
}
```

```:ターミナル
0.3986020715932931
0

0.9918706705068715
2

0.4195932748905167
1
```
Math.random()の値に3をかけ、int型変換することにより、0〜2の整数が生成できました。ちなみにこの変換をキャストというとのことです。

### ランダムにグー・チョキ・パーを出せるようにする
```Janken4.java
class Janken4 {
  public static void main(String[] args) {  
    System.out.println("ジャンケンおじさんが現れた！！");
    System.out.println("(^_^)v");
    System.out.println("最初はグー！じゃんけんぽん！");

    String[] cpuhands = {"グー", "チョキ", "パー"};

    double d = Math.random();

    int i = (int)(Math.random() * 3);

    System.out.println("おじさんは" + cpuhands[i] + "を出してきた。");
  }
}
```

```:ターミナル
ジャンケンおじさんが現れた！！
(^_^)v
最初はグー！じゃんけんぽん！
おじさんはグーを出してきた。

ジャンケンおじさんが現れた！！
(^_^)v
最初はグー！じゃんけんぽん！
おじさんはパーを出してきた。
```

ランダムでグー・チョキ・パーが出るようになりました。

### 勝敗がつくようにする
```Janken5.java
import java.util.Scanner;

class Janken5 {
  public static void main(String[] args) {
    
    System.out.println("ジャンケンおじさんが現れた！！");
    System.out.println("(^_^)v");
    System.out.println("最初はグー！じゃんけんぽん！");

    String[] cpuhands = {"グー", "チョキ", "パー"};

    System.out.println("出したい番号を選んでください。[0]グー、[1]チョキ、[2]パー");
    Integer number = new Scanner(System.in).nextInt();

    System.out.println("あなたの出した手： " +cpuhands[number]);

    double d = Math.random();

    int i = (int)(Math.random() * 3);

    System.out.println("おじさんは[" + cpuhands[i] + "]を出してきた。");

    switch (number) {
      case 0:
        if (i == 0) {
          System.out.println("[あいこ]です");
        } else if (i == 1) {
          System.out.println("[勝ち]ました");
        } else if (i == 2) {
          System.out.println("[負け]ました");
        }
      break;
      case 1:
        if (i == 0) {
          System.out.println("[負け]ました");
        } else if (i == 1) {
          System.out.println("[あいこ]です");
        } else if (i == 2) {
          System.out.println("[勝ち]ました");
        }
      break;
      case 2:
        if (i == 0) {
          System.out.println("[勝ち]ました");
        } else if (i == 1) {
          System.out.println("[負け]ました");
        } else if (i == 2) {
          System.out.println("[あいこ]です");
        }
      break;
    }
  }
}
```

```:ターミナル
ジャンケンおじさんが現れた！！
(^_^)v
最初はグー！じゃんけんぽん！
出したい番号を選んでください。[0]グー、[1]チョキ、[2]パー
2
あなたの出した手： パー
おじさんは[チョキ]を出してきた。
[負け]ました

ジャンケンおじさんが現れた！！
(^_^)v
最初はグー！じゃんけんぽん！
出したい番号を選んでください。[0]グー、[1]チョキ、[2]パー
0
あなたの出した手： グー
おじさんは[チョキ]を出してきた。
[勝ち]ました
```
勝敗がつきましたね。

今回の記事はこの辺で終わらせて、また違う記事で続きを書きたいと思います。

## 参考記事
http://pbsb.hatenablog.com/entry/2018/10/09/151551
https://note.com/ganga_1/n/na2959e604fed
https://qiita.com/dk_masu/items/d7bb7a81cbc6e16fbb49

為になりました。ありがとうございます。