User 13897807 Ответов: 1

JAVA: сумасшедшая восьмерка модельная игра с абстракцией


- Привет!
Я пытаюсь создать модельный класс сумасшедшей восьмерки игры, которая использует абстракцию из класса игрока. Модель следует этим правилам:

1. Игра начинается с того, что каждому игроку дается некоторое количество карт из колоды.

2. одна карта берется из колоды и помещается поверх стопки сброса (и видна игроку).

3. ход игрока состоит из взятия нуля или более карт из колоды (добавление их в свою руку), а затем разыгрывания карты на вершине стопки сброса (удаление ее из своей руки).

4. игрок всегда может разыграть карту из своей руки, которая имеет тот же ранг, что и верхняя карта в колоде сброса.

5. игрок всегда может разыграть карту из своей руки, которая имеет ту же масть, что и верхняя карта в колоде сброса.

6. игрок всегда может разыграть карту с рангом 8. Когда игрок играет 8, ему разрешается изменить масть карты на любую из четырех мастей по своему выбору. (Вы сделаете это, удалив восьмерку из вашей руки, а затем вернув новый карточный объект с нужной мастью.)

7. игроку разрешается (несколько раз) взять карту из колоды, прежде чем разыгрывать карту в колоду сброса. Вы должны играть в карты, если вы в состоянии. Если в колоде заканчиваются карты, игра заканчивается.

8. игрок, который сбрасывает все свои карты первым, является победителем. Если колода исчерпана до того, как любой игрок сможет разыграть все свои карты, то победителя нет.

9. Вы не реализуете сумасшедшую игру восьмерок. Вы строите классы, которые были бы необходимы для такой игры. Вы создаете модель для игры.

10. игрок не должен "уметь жульничать" в игровом методе.

//This is my parent Player class that the CrazyEightsPlayer class works off of:

public abstract class Player{
  protected Hand hand;

  public Player(Hand hand){ this.hand = hand; }

  /* play a card from the player's hand */
  /* returns null if they cannot play a card and the deck becomes empty */
  /* do NOT return null unless you cannot play a card and the deck is empty 
  */
  public abstract Card play(Card top_of_discard_pile, Deck deck);

  public final int cardsLeft(){ return this.hand.numberOfCards(); }

 }



//This is my subclass CrazyEightsPlayer:

public class CrazyEightsPlayer extends Player {
  public CrazyEightsPlayer(Hand hand) {
    super(hand);
  }

  @Override
  public Card play(Card top_of_discard_pile, Deck deck) {
     while ((deck != null) && hand != null) {
        if ( ){

        } else {

        }
     }
     return ;
   }
 }


Что я уже пробовал:

Я только что сделал много набрав и backspacing, вводя кучу разных вещей, чтобы попытаться заставить его работать. Я новичок в кодировании, поэтому я много борюсь, пытаясь придумать способы заставить вещи работать".;
Пожалуйста, помогите!

CHill60

Почему вы удалили текст вашего вопроса? Вам было бы лучше просто удалить свой пост. Теперь люди увидят ваш пост и зададутся вопросом, Что же это за решение! Это означает, что участник может в конечном итоге получить отрицательные отзывы и, возможно, даже сообщения о "не по теме" или "нет ответа", или "неясно или неполно", или "неточно / вводит в заблуждение" ... а все потому, что вы решили удалить текст вашего вопроса.
Просто удалите сообщение ... Я вижу, что вы все равно собираете downvotes ... удаление вашего поста положит этому конец

1 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
Я только что сделал много набрав и backspacing, вводя кучу разных вещей, чтобы попытаться заставить его работать.
И это ваша проблема.

Хватит печатать.
Нет, серьезно - хватит печатать. Начните думать вместо этого.
Посмотрите на правила и определите, что они требуют от вас делать, когда вы играете. Затем возьмите себе колоду карт и следуйте правилам вручную. Запишите - в виде текстового описания - что вам нужно на самом деле сделать, чтобы следовать правилам, какие действия вам нужны, какие данные вы должны хранить.

Когда вы будете счастливы, что у вас есть этот Даун-ПЭТ, у вас будет текстовое описание классов, которые вам нужно реализовать, чтобы компьютеризировать проблему.

Это задача анализа, а не в первую очередь кодирования: правило 9 делает это очень, очень ясным. Так что анализируйте проблему вместо того, чтобы прыгать в код!