[解決済み] Javaでカードゲーム。"手札 "の作成
2022-02-19 09:34:11
質問内容
これは宿題ではなく、完全なJavaプログラムをより理解するためにJavaで取り組んでいるペットプロジェクトであり、うまくいけば自分自身のGUIを作る最初の試みになることを最初に言っておきたいと思います。
それはさておき、現在のコードからカードの手札を作ることについて質問です。現状では、メインクラスとして
DummyRummy
カードを作成するクラス、標準的なデッキを作成するクラス(ジョーカーを含み、新しいデッキを作成するときにデッキをシャッフルします)、および
PlayerHands
クラスがあります。私は厳密には
ArrayList
は、すべてのコードで
PlayersHands
クラスは2つの
ArrayList
が使用されます。しかし
PlayerHands()
メソッドを
public static void main()
,
PlayerHands
がなぜか配置できない...。以下は、そのコードです。
PlayerHands
:
package dummyrummy;
public class PlayerHands {
private Card[] playerOneCards;
private Card[] playerTwoCards;
private int[] value;
PlayerHands(deck d, int round)
{
value = new int[round+3];
playerOneCards = new Card[round+2];
playerTwoCards = new Card[round+2];
//(round+2) is the handsize at any given time
for (int x=0; x<round+3; x++)
{
playerOneCards[x] = d.drawFromDeck(); //fills up one hand.
playerTwoCards[x] = d.drawFromDeck(); //fills up second hand.
}
}
}
以下は
DummyRummy
クラスがあります。
package dummyrummy;
import java.util.*;
public class DummyRummy {
public static void main(String[] args) {
deck testDeck;
testDeck = new deck();
System.out.println(testDeck.getTotalCards());
System.out.println(testDeck.getClass());
int round = 1;
PlayerHands(testDeck, round); //This is where the error is occurring
}//End of arguments
}//End of DummyRummy class
以下は
Card
クラスがあります。
package dummyrummy;
public class Card
{
private short rank, suit;
private static String[] suits = { "Hearts", "Spades", "Diamonds", "Clubs", "Joker" };
private static String[] ranks = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
private static String[] jokers = {"Joker", "Joker"};
private static String[] ranks2 = {"0", "0"};
public static String rankAsString( int __rank ) {
if (__rank != 0){
return ranks[__rank];
}//End of if statement
return ranks2[__rank];
}//End of rankAsString class
Card(short suit, short rank)
{
this.rank=rank;
this.suit=suit;
}//End of Card Initializer
public @Override String toString()
{
if(suit == 5){
return "Joker";
}//End of if statement that calls jokers
if(rank == 0){
return "Joker";
}
return ranks[rank] + " of " + suits[suit];
}//End of toString method
public short getRank() {
return rank;
}//End of getRank method
public short getSuit() {
return suit;
}//End of getSuit method
}//End of Card
そして最後に、ここで
deck()
クラスがあります。
package dummyrummy;
import java.util.Random;
import java.util.ArrayList;
public class deck {
private ArrayList<Card> cards;
deck()
{
cards = new ArrayList<Card>();
int index_1, index_2;
Random generator = new Random();
Card temp;
short jokerSuit=5;
short jokerRank = 0;
cards.add(new Card(jokerSuit, jokerRank));
cards.add(new Card(jokerSuit,jokerRank));
for (short suit=0; suit<=3; suit++)
{
for (short rank=0; rank<=12; rank++)
{
cards.add(new Card(suit,rank));
}
}//End of for-loop
int deckSize = 54;
for (int i=0; i<1000; i++)
{
index_1 = generator.nextInt( cards.size() );
index_2 = generator.nextInt( cards.size() );
temp = cards.get( index_2 );
cards.set( index_2 , cards.get( index_1 ) );
cards.set( index_1, temp );
}//End of for-loop
}//End of deck()
public Card drawFromDeck()
{
/*
* This method removes the top card of the already shuffled deck.
* The next step to take with this class is put the drawn card into another
* array that represents a players hand.
* This will take two arrays, and must be called depending on what player 'drawsFromDeck'.
*/
return cards.remove( 0 );
}//End of drawFromDeck()
public int getTotalCards()
{
return cards.size();
}//End of getTotalCards()
}//End of class deck
お忙しい中、ありがとうございました。また、必要であれば、私の他のコードも提供させていただければ幸いです。
EDITです。 上記のクラスとパッケージを追加しました。
解決方法は?
PlayerHands(deck, int)
はコンストラクタです。したがって、次のように呼び出す必要があります (クラス内の
DummyRummy
):
new PlayerHands(testDeck, round);
そして、作成したインスタンスで作業したいのでしょうから、その参照を変数に保存しておくとよいでしょう。
PlayerHands playerHands = new PlayerHands(testDeck, round);
関連
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み】文字列中の � を置換する方法
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件