質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

2351閲覧

java ブラックジャックの作成 初期処理でcardsというArrayList変数にすべてのトランプを持たせる処理の書き方がわからない

HdNu

総合スコア32

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/02/16 04:50

編集2020/02/16 07:06

前提・実現したいこと

cardsというArrayListの変数を用意し、初期処理でこのcardsに全てのトランプを持たせたい

ArrayListの変数の用意(ArrayList<Integer> cards = new ArrayList<Integer>(); )

そこから初期処理の実装の途中(public Dealer(); )まではできたのですが、そこから

(cardsに全てのトランプを持たせる)これを実現するためのコードの書き方がわからない状態です。

java1Human

1java 2package ブラックジャック2; 3import java.util.ArrayList; 4 5abstract class Human { 6 public static void main(String[] args) { 7 8 9 } 10 public abstract int open(); 11 public abstract void setCard(ArrayList<Integer> list); 12 public abstract boolean checkSun(); 13 ArrayList<Integer> myCards= new ArrayList<Integer>(); 14 15 16} 17

java2Dealer

1package ブラックジャック2; 2import java.util.ArrayList; 3 4class Dealer extends Human{ 5 public static void main(String[] args) { 6} 7 ArrayList<Integer> cards = new ArrayList<Integer>(); 8 9 public Dealer(); 10 11 12}

java1がHumanクラス
java2が Dealerクラスです

試したこと

初期処理の実装方法について調べ、このように書くということが分かった

アクセス修飾子 クラス名(引数1, 引数2, …) {

    // インスタンス生成時に実施すべき事

  }

この中に(cardsに全てのトランプを持たせる)処理を書くと思うのだけど、この持たせるための処理の書き方がわからず、現在調査中ですが何かご指摘があると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2020/02/16 05:03

まず、画像はやめていただきたい。 コードは投稿時や編集時( 投稿した後に編集が可能 ) に "<code>"または "<コード>"のボタンを押して出てるやつの中に書きましょう。 また、コードがあいまいで、仕様もあいまいなので回答ができない。 初期化するにしても、何を初期化したいのかが不明瞭。 第三者が読んでわかるように書くように心がけるべきです。
m.ts10806

2020/02/16 06:24

画像で提示するということは回答者に「画像を見て自分で書け」というのを強いていることになる認識はありますか? コードは書いた通りにしか動かないので、たとえ熟練の回答者であったとしても「コードを目で見て判断」ということはほとんどありませんよ。 手元で動かして確認します。それに回答しようと思ったらコードを伴うことも多いわけですけど、「回答者が1からコードを起こす」なんてことは多くのケースでありえません。
HdNu

2020/02/16 06:51

様々なご指摘感謝いたします。 コードがあいまいだったのですね。かなり投げやりな感じになってしまい申し訳ありません。 この問題はこちらでもうしばらく考えてみることにします。
BeatStar

2020/02/16 07:08 編集

おそらくスペルミスだとは思いますが、両方ともHumanになっていますよ。 コード下に書かれている説明で。 また、まだ情報が足りないです。 Humanは恐らくプレイヤー, Dealer はコンピュータのつもりだと思いますが、 cardはどこからでてきたんでしょうか。 また、HumanやDealerの方にもmainメソッドらしきものがありますが、 ちょっと意味が分かりません。 なんのためにあるのでしょうか。 まず、仕様から考え直したほうがいいかもしれません。
dodox86

2020/02/16 08:16

仕様もそうですが、先のご質問と併せて考えるとJavaの基本的文法部分で停まった話のようにも思います。お言葉ですが、現在「調査」中と言うレベルの疑問ではないような。
dodox86

2020/02/16 08:18

プログラムの(いわば製品としての)仕様で悩んでいるのか、Javaの文法(コードの書き方)で悩んでいるのか、分けて考えましょう。
guest

回答1

0

はやる気持ちは分かりますが、まずは登場するオブジェクト(クラス)の整理から始めましょう。
私はトランプゲームはあまり知らないので、足りない部分があるかもしれません。足りない部分は指摘ください。

・Card
言わずもがなトランプのカードです。ブラックジャックはハートかクローバー等の種類は関係ないみたいなので数字だけでも良いかもしれませんが、カードを区別するためにもあった方が良いかと思います。

属性: カードの種類、数字: 2~9 and A、J、Q、K

・Dealer
プレイヤーと対峙するディーラーです。

属性: 手持ちのカード(複数枚)
操作: カードを引く、手持ちカードの合計点を返す etc...

・Player
ほぼ Dealer と同じです。ただコインを賭けるのであれば持ち金の情報も属性として必要でしょう。また、カードを引く際は、ディーラーの手持ちカードの一部を知ることができるそうなので、そのカードを引数で渡すことが必要なのでしょう。

属性: 手持ちのカード(複数枚)
操作: カードを引く、手持ちカードの合計点を返す etc...

※ブラックジャックの場合、ディーラーもプレイヤーもそれぞれが持つ情報の優劣がないようですから、とても似ています。であれば、ディーラー、プレイヤーの親クラス(Human)を持たせても良いでしょう。ただ、例えば”カードを引く”操作はディーラー側はプログラムが、プレイヤー側はプレイヤー自身が決定する(ヒット、スタンド等)ので、実装の仕方が変わります。そんな場合、親クラスは”カードを引く”メソッドを抽象メソッドとして定義することになります。

・Table
ディーラーとプレイヤー両者のカード合計値を比べ、どちらが21に近いか等の勝敗判定を行います。テーブルクラスとしていますが、要は判定するクラスです。ゲームをコントロールする機能を持たせます。またディーラー、プレイヤーにカードを配ったり、両者から手持ちカードの合計値を取得して判定する必要がありますので、属性として Dealer, Player が必要になるでしょう。

属性: 両者に配るカード(複数枚)、Dealer、Player
操作: カードをシャッフルする、ディーラーとプレイヤーにカードを配る、両者の手持ちカードから勝敗の判定をする etc...

──────────────────────────────────────

あまりルールを詳しく調べていないので、足りないかもしれませんが、ざっとこんな感じのクラスが必要かな、と思います。オブジェクト指向のプログラミングは手続き型のプログラムより、現実に近いイメージを持って考えることが重要です。

また最初からブラックジャックのルールを完璧にプログラムで完成させるよりも、少し簡略化したほうが作りやすいかと思います(ベットしない、相手の手持ちカードの情報はオミット等々)。

トランプゲームはプログラムで表現するには複雑ですが、完成した場合の達成感が強いのも事実です。頑張ってみてください。(^^)/

投稿2020/02/16 12:25

編集2020/02/16 12:38
Mirko_Mug_Cup

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HdNu

2020/02/17 10:53

励みになる言葉ありがとうございます。 頑張ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問