package j2.lesson04;
import java.io.*;
import j2.lesson04.card.CardDeck;
/**
* 課題1704 - 解答例 (1/2).
* ポーカーゲーム.
* @author arakawa
* @version $Id: Poker_java.rps,v 1.1 2006/03/06 12:56:14 java2005 Exp $
*/
public class Poker {
/**
* ポーカーを開始する.
* @param args 無視される
* @throws IOException 入力中に例外が発生した場合
*/
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
CardDeck deck = new CardDeck();
deck.shuffle();
PokerHand hand = new PokerHand(
deck.takeFirst(),
deck.takeFirst(),
deck.takeFirst(),
deck.takeFirst(),
deck.takeFirst()
);
System.out.println("ポーカーを開始します。");
showHand(hand);
System.out.print("チェンジするカードを選択 (例-acd):");
int[] change = inputToChangeList(reader.readLine());
if (change.length == 0) {
System.out.println("チェンジはしません。");
}
else {
System.out.println(change.length + "枚チェンジ。");
for (int i = 0; i < change.length; i++) {
int at = change[i];
System.out.print("[change] ");
System.out.print(hand.get(at));
hand.change(at, deck.takeFirst());
System.out.print(" -> ");
System.out.println(hand.get(at));
}
showHand(hand);
}
System.out.println("役: " + hand.getRank());
}
/**
* 手札を表示する。
* @param hand 表示する手札
*/
private static void showHand(PokerHand hand) {
System.out.println("a: " + hand.get(0));
System.out.println("b: " + hand.get(1));
System.out.println("c: " + hand.get(2));
System.out.println("d: " + hand.get(3));
System.out.println("e: " + hand.get(4));
}
/**
* 入力を元にチェンジするカードの位置を整数の配列に変換する
* @param input 入力された文字列
* @return 変換すべきカードの位置が入った配列
*/
private static int[] inputToChangeList(String input) {
boolean[] target = new boolean[5];
char[] norm = input.toLowerCase().toCharArray();
int count = 0;
for (int i = 0; i < norm.length; i++) {
char c = norm[i];
if (c == 'a') {
target[0] = true;
count++;
}
else if (c == 'b') {
target[1] = true;
count++;
}
else if (c == 'c') {
target[2] = true;
count++;
}
else if (c == 'd') {
target[3] = true;
count++;
}
else if (c == 'e') {
target[4] = true;
count++;
}
}
int[] list = new int[count];
int index = 0;
for (int i = 0; i < target.length; i++) {
if (target[i]) {
list[index] = i;
index++;
}
}
return list;
}
}
|