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

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

ただいまの
回答率

90.62%

  • Java

    13466questions

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

ブラックジャック作成

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 273
退会済みユーザー

退会済みユーザー

javaのクラスを勉強中で、現在クラスを使用したブラックジャックの作成を行っている者です。現在、作成途中なのですがつまずいてしまい、ご教授して頂きたく質問させて頂きました。

抽象クラス・フィールド・抽象メソッドの宣言をして、その抽象クラスを継承したクラスを別途作成して、実装まで一応書き上げたのですが、実行クラスでのインスタンス化とメソッド呼び出し等の処理を、どうすれば良いのか分からず、止まってしまっています。どのようにコードを書いていけば良いでしょうか?

<詳細>
〇環境:Windows、NetBeansのjavaクラス使用。

〇条件 
・トランプのマークは気にせず、1-13×4の52枚。
・チップの概念なし。
・1は1と11で計算OK。1に固定してもOK。
・全自動でOK。プレイヤーにHitの判断をさせる必要なし。

〇実装処理
1.Humanという抽象クラス作成し、以下実装。
・openという抽象メソッド。
・setCardというArrayListを引数とした、抽象メソッド。
・checkSumという抽象メソッド。
・myCardsというArrayListの変数。

  1. 1で作成した抽象クラスを継承して、以下のクラスを作成。
    ・Dealerクラス
    ・Userクラス

①cardsというArrayListの変数を用意し、初期処理でcardsに全てのトランプを持たせる。
②dealという公開メソッドを用意し、cardsからランダムで2枚のカードをArrayListにして返えす。
③hitという公開メソッドを用意し、cardsからランダムで1枚のカードをArrayListにして返えす。

④DealerとUser両方に必要な処理を実装。
⑤setCardは、ArrayListで受けたカード情報をmyCardsに追加する。
⑥checkSumは、myCardsを確認し、まだカードが必要ならtrue、必要無ければfalseを返えす。
⑦openは、myCardsのカードの合計値を返えす。
⑧DealerとUserクラスを使い、BlackJackを行う。 
⑩カードのやり取りは自動。カードの変化と最終結果を表示すること。

import java.util.ArrayList;



public abstract class Human {


        protected ArrayList<Integer> myCards = new ArrayList<>();



        abstract public int open();
        abstract public void setCard(ArrayList<Integer> n);
        abstract public boolean checkSum();
   }
import java.util.ArrayList;
import java.util.Random;




public class Dealer extends Human {


      protected ArrayList<Integer> cards = new ArrayList<>();


       public void Dealer(){          

           for(int i=0; i<4; i++){

               for(int j=1; j<=13; j++){                                  
                   cards.add(j);//
               }
       }
}


       public ArrayList<Integer> deal(){

           ArrayList<Integer>num=new ArrayList<>();

           Random rand = new Random();

        for(int i=0; i<2; i++){

        Integer index= rand.nextInt(cards.size());
        num.add(cards.get(index));

        num.remove(index);
        }

           return num;
}

       public ArrayList<Integer> hit(){

           ArrayList<Integer>num1=new ArrayList<>();

           Random rand = new Random();

           for(int i=0; i<1; i++){

           Integer index= rand.nextInt(cards.size());
           num1.add(cards.get(index));

           num1.remove(index);
           }

           return num1;
        }


       public void setCard(ArrayList<Integer> n){
             for(int i=0; i<n.size(); i++){
               myCards.add(n.get(i));
           }
       }


       public boolean checkSum(){
           int result=0;
           for(int i=0; i<myCards.size(); i++){
               result+=myCards.get(i);
           }


           if(num<16){
               return true;
           }

           else{
               return false;
           }
       }


       public int open(){
           int result=0;
           for(int i=0; i<myCards.size(); i++){
               result+=myCards.get(i);
           }
                return result;
       }
}
import java.util.ArrayList;



//Userクラス
public class User extends Human {




       public void setCard(ArrayList<Integer> n){

           for(int i=0; i<n.size(); i++){
               myCards.add(n.get(i));
           }
       }


       public boolean checkSum(){
        int result=0;    
        for(int i=0; i<myCards.size(); i++){
            result+=myCards.get(i);
        }


           if(result<16){
               return true;
           }

           else{
               return false;
           }
       }


       public int open(){
           int result=0;
           for(int i=0; i<myCards.size(); i++){
               result+=myCards.get(i);
           }
                return result;
       }
}
//実行クラス
public class Black {

    public static void main(String[]arg){

        User data=new User();        
        Dealer data1=new Dealer();


        data1.Dealer();
        System.out.println(data1.cards);

        data1.deal();


実行クラスにどのようなコードを書いていけばよいのでしょうか
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • tkturbo

    2018/06/22 16:42 編集

    実装処理を見ると「カードを配る」が抜けている気がする。最初にカードを配らないとゲームが始まらないのでは?

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/06/22 16:59

    確かに!抜けてますね!ありがとうございます。

    キャンセル

回答 2

checkベストアンサー

0

こんにちは、直接的な回答ではありませんが、
以前 似たような質問がありました。

https://teratail.com/questions/122097

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/22 17:01

    自分で色々処理を書いていたらできました!!
    回答をして下さりありがとうございました!!

    キャンセル

  • 2018/06/22 17:15

    ご自身で理解した上で過去質問を紹介してますよね・・・?
    これで突っ込まれたら責任もって追加回答できるんでしょうか(かなり不安)

    キャンセル

0

自分で色々処理を書いていたらできました!!
質問と回答して下さった方々、ありがとうございました!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/22 17:17

    どのように解決されたのでしょうか?
    https://teratail.com/help/question-tips#questionTips4-2
    > もしあなたが自身で解決できたら、解決方法を回答欄に書きシェアしてください。
    あなたがどのように解決したかを書き残しておくことで、あなたの質問は貴重なコンテンツ資産となります。

    キャンセル

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    社員情報のプログラム

    社員情報のプログラム (JAVA) プログラの機能 (1)社員情報の追加 入力項目としては、社員番号、氏名(性、名)、生年月日(年、月、日) (3)で読み込んだ情報を追加する仕

  • 解決済

    重複しない乱数の発生方法(Collections.shuffleの処理速度)

    リストをシャッフルする Collections.shuffle というメソッドがありますが、かなり大量のリスト(1000以上)をシャッフルするとなるとやはり処理時間がかかるでし

  • 解決済

    フォルダの中にあるファイルを1つずつ読み込む

    最近Javaで開発を始めました。 複数のファイルが入っているフォルダがあります。 このフォルダから1ファイルずつ開き中身をバッファか配列に読み込むコードを書きたいです。

  • 解決済

    配列へランダムに数字を入れたいです。

    前提・実現したいこと javaで156個の配列にランダムでそれぞれ1~13の数字を同じ数だけ入れたいです。 マークが関係なくジョーカーが入っていないトランプを3組混ぜるイメージ

  • 解決済

    Javaでマス当てゲームを作りたい

    前提・実現したいこと Javaで5*5のマス目から当たりを見つけるプログラムを作りたいと考えています。 インターネットで下記のプログラムを見つけ応用できないかと思っています。

  • 解決済

    改行区切りでの出力

    ランダムな整数を改行区切りで3個出力したくて以下のコードを打ってみたんですが間違いといわれました。どこが違うのか指摘お願いします  public class Main {  p

  • 解決済

    Java Hit&Blow

    Hit&Blowのコードです。 答えの4桁の数字が重複しないためのコードはどのように書けばいいのでしょうか? import java.util.Scanner; class

  • 解決済

    ファイルの書き出し

    前提・実現したいこと csvファイルから読み込んだものをソートして別のcsvファイルに書き出しを行いたいです。 発生している問題・エラーメッセージ 書き出しが行われない。

同じタグがついた質問を見る

  • Java

    13466questions

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