オブジェクト指向基本問題。ArrayListの練習。

Q1
ArrayListを使って猫集めゲームを作成せよ。
○Collectによって登場する猫のタイプはA,B,Cいずれかのランダムとする。
○遊ぶと親密度が1増える
詳しくは実行例を参照のこと。
■Catクラス
[static field]
任意
[instance field]
type //A or B or C
name //名前
intimacy //親密度
[constructor]
任意
[method]
任意
■アプリケーションクラス
実行例となるようにする

[実行例]

***Cat Collection***
1.Collect 2.Play 3.End>2
You do not have anyone to play with.
1.Collect 2.Play 3.End>1
A-type cat appeared!
Please name this cat>John
John joined!
1.Collect 2.Play 3.End>1
B-type cat appeared!
Please name this cat>Paul
Paul joined!
1.Collect 2.Play 3.End>1
B-type cat appeared!
Please name this cat>George
George joined!
1.Collect 2.Play 3.End>2
0・・・John[A](0)
1・・・Paul[B](0)
2・・・George[B](0)
Who do you play with?>1
Playing with Paul
...
Intimacy is up!!
1.Collect 2.Play 3.End>2
0・・・John[A](0)
1・・・Paul[B](1)
2・・・George[B](0)
Who do you play with?>0
Playing with John
...
Intimacy is up!!
1.Collect 2.Play 3.End>2
0・・・John[A](1)
1・・・Paul[B](1)
2・・・George[B](0)
Who do you play with?>0
Playing with John
...
Intimacy is up!!
1.Collect 2.Play 3.End>3
Game over

Catクラス

public class Cat {
	public static final char[] TYPES={'A','B','C'};
	private char type;
	private String name;
	private int intimacy;
	public Cat(char type,String name){
		this.type=type;
		this.name=name;
	}
	
	public void play(){
		System.out.println("Playing with "+this.name+".");
		System.out.println("...");
		intimacy++;
		System.out.println("Intimacy is up!!");
	}
	public String info(){
		return String.format("%s[%c](%d)", this.name,this.type,this.intimacy);
	}
	public String getName(){
		return this.name;
	}
	public char getType(){
		return this.type;
	}
	public int getIntimacy(){
		return this.intimacy;
	}	
}

アプリケーションクラス

import java.util.*;
public class CatApp{
	public static void main(String[] args) {
		System.out.println("***Cat Collection***");
		Random r = new Random();
		Scanner s = new Scanner(System.in);
		ArrayList<Cat> list = new ArrayList<>();
		while (true) {
			System.out.print("1.Collect Cats 2.Play 3.End>");
			int select = s.nextInt();
			switch (select) {
			case 1:
				int index = r.nextInt(Cat.TYPES.length);
				char type = Cat.TYPES[index];
				System.out.println(type + "-type cat appeared!");
				System.out.print("Please name this cat>");
				String name = s.next();
				Cat c = new Cat(type, name);
				list.add(c);
				System.out.println(name + " joined!");
				break;
			case 2:
				if (list.size() == 0) {
					System.out.println("You do not have anyone to play with.");
				} else {
					for (int i = 0; i < list.size(); i++) {
						System.out.printf("%d・・・%s%n", i, list.get(i).info());
					}
					System.out.print("Who do you play with?>");
					int num = s.nextInt();
					list.get(num).play();
				}
				break;
			case 3:
				System.out.println("Game over");
				s.close();
				return;
			}
		}
	}
}