私は単純なBlackJack
ゲームを文字入力で動かそうとしていますが、後の部分では多くの問題があります。Java - BlackJackプロジェクト - I/Oとサイクルに関する問題
私は悩みを与えている部分にコメントしました。残りはエラーがないように見えて、私はユニットテストをしました。 私は何をしましたか?私は描かれたカードを保持し、それらを管理するクラスを作成しました、テーブル、プレーヤー、ディーラーは両方ともテーブルのインスタンスです。 テーブルには最大5枚のカードがあります(簡単にするために)、すべてのカードオブジェクトは、カードオブジェクトにデータを追加する方法を持つCardクラスから取り出されます。
メインクラスはプログラムを駆動し、決定はキーボードからの文字入力で行われるため、その時点で問題が発生します。
import java.io.IOException;
class Table{
Card[] hand = new Card[5];
int counter = 1;
Table() {
for (int i=0; i<hand.length; i++) {
hand[i]=new Card();
}
hand[0].GetCard();
}
void ReadCards(){
for(int i= 0;i<counter;i++) {
System.out.println("The card "+(i+1)+" is " + hand[i].name + " "+ hand[i].seed + "." );
}
}
void DrawCards() {
hand[counter].GetCard();
counter++;
}
boolean isOut() {
int sum = 0;
for(int i= 0;i<counter;i++) {
sum += hand[i].value;
if(sum >21) {
return true;
}
}
return false;
}
int TheSum() {
int sum = 0;
for(int i= 0;i<counter;i++) {
sum += hand[i].value;
}
return sum;
}
boolean isWIN(Table p2) {
int sum = 0;
int sump2 = 0;
for(int i= 0;i<counter;i++) {
sum += hand[i].value;
}
for(int i= 0;i<p2.counter;i++) {
sump2 += p2.hand[i].value;
}
if (sum>sump2) {
return true;
}
else return false;
}
class Card {
public int value = 0;
public String name = "";
public String seed = "";
void GetCard(){
int positive = 0;
do {
positive = (int) (Math.random()*100) % 10;
}while(positive == 0);
value = positive;
if(value<10) {
name = String.valueOf(value);
}
else {
positive = 0;
do {
positive = (int) (Math.random()*100) % 3;
}while(positive == 0);
switch(positive) {
case 1:
name = "J";
break;
case 2:
name = "Q";
break;
case 3:
name ="K";
break;
}
}
positive = 0;
do {
positive = (int) (Math.random()*100) % 4;
}while(positive == 0);
switch(positive) {
case 1:
seed = "CLUB";
break;
case 2:
seed = "DIAMOND";
break;
case 3:
seed ="SPADE";
break;
case 4:
seed ="HEART";
break;
}
}
}
}
public class BlackJack {
public static void main(String args[])throws IOException {
System.out.println("Welcome to the BlackJack's table! Press y to start! ");
char flag;
do {
flag = (char)System.in.read();
}while(flag != 'y');
Table dealer = new Table();
Table player = new Table();
System.out.println("DEALER");
dealer.ReadCards();
System.out.println("PLAYER");
player.ReadCards();
flag = ' ';
System.out.println("Do you want to draw a card? I'll draw until you'll press n");
/*
flag = (char)System.in.read();
while(flag != 'n') {
player.DrawCards();
player.ReadCards();
if (player.isOut()) {
System.out.println("YOU LOSE");
System.exit(0);
}
flag = (char)System.in.read();
}
System.out.println("The dealer will draw");
while(dealer.TheSum()<18) {
dealer.DrawCards();
dealer.ReadCards();
if (dealer.isOut()) {
System.out.println("YOU WIN");
System.exit(0);
}
}
*/
System.out.println("WHO WON?");
if (player.isWIN(dealer)){
System.out.println("YOU WIN");
}
else System.out.println("YOU LOSE");
}
}
はい、私はjavaに慣れていません。 Console screenshot of the output here!
だけの質問は、これは割り当てのためにありますか?または個人学習のため。 – corsiKa
あなたは[ask]とhttps://ericlippert.com/2014/03/05/how-to-debug-small-programs/を見てください。 – pvg
個人学習、私は数年間Javaを避けました、一週間前に買った本と私はここにいる。 私は主に私が間違ったI/Oメソッドを使用しているのかと疑問に思っています。なぜなら、あまりにも多くのメソッドがあり、私はすでにC++、C#、Pythonがありません。 – Daru