Упражнение «Застрял на карте / колода» из официального руководства по Java - PullRequest
2 голосов
/ 26 января 2009

Я застрял в части учебника по Java, в частности в этом упражнении . В упражнении вас попросят:

1- Напишите класс, экземпляры которого представляют одну игральную карту из колода карт. Игральные карты имеют два отличительные свойства: ранг и подходить. Обязательно сохраните свое решение как вам будет предложено переписать его в Типы Enum.

Подсказка: вы можете использовать утверждать заявление, чтобы проверить ваш задания. Вы пишете:

assert(boolean expression to test);  

Если логическое выражение ложно, вы будете получить сообщение об ошибке. Например,

assert toString(ACE) == "Ace"; 

должен вернуть true, чтобы не было ошибок сообщение.

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

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

Я бы очень хотел выполнить это упражнение, но проблема в том, что я никогда не играл в карты, поэтому я понятия не имею, как создать эту программу, какими свойствами должны обладать карты и т. Д. Я посмотрел это в википедии. но получил очень ограниченные знания, которые никогда не позволят мне построить необходимые классы: Card.java , Deck.java и программу DisplayDeck.java .

Что будет хорошим альтернативным упражнением для человека, который не знает карточек, но который проверит те же понятия, что и вышеупомянутое упражнение? (Вероятно, статические и переменные экземпляра и тому подобное)

Спасибо.

Кстати, это не домашний вопрос, я изучаю Java для коммерческого проекта.

Ответы [ 4 ]

4 голосов
/ 26 января 2009

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

Во-первых, держите эту картинку из колоды (вся коллекция карт) открытой для справки.

Идя вертикально вниз по рядам, вы получаете { Пики ♠, Бриллианты ◇, Клубы ♣, Сердца ♡} = 4 костюмы .

Идя горизонтально через колонки, вы получаете { 2 , 3 , ..., 10 , Джек , Королева , Король , Туз } = 13 рангов .

Всего в колоде .

4 х 13 = 52 карты.

Каждая карта идентифицируется парой (ранг, масть) , например. (Ace, Spades ♠) и (10, Diamonds ◇), которые мы читаем как «Ace of Spades» и «Ten of Diamonds», соответственно.

2 голосов
/ 26 января 2009

Основываясь на приведенном выше описании, на самом деле не требуется знания как играть в карты, просто знать, как они выглядят. Как вы упомянули выше, это означает, что класс Card будет иметь 2 свойства (определенных в Enums) rank и suit, где rank имеет одно из следующих значений:

{туз, 2, 3, 4, 5, 6, 7, 8, 9, 10, джек, королева, король}

И костюм один из:

{пики, сердца, бриллианты и булавы}

Колода - это просто структура коллекции, содержащая каждую комбинацию ранга и сюиты.

1 голос
/ 26 января 2009

Упражнение достаточно простое, если вы знаете некоторые основы:

  • В колоде из 52 карт (54, если считать джокеров)
  • В колоде 4 масти - бубны, червы, трефы и пики
  • Каждый костюм содержит цифровые карточки (2-10), валет, дама, король и туз
  • Туз, как правило, считается равным "1" (но для некоторых игр существует множество преимуществ)

Итак, несколько простых тестов:

assert(deck.count == 52); assert(deck.suits.count == 4); assert(deck.suits.contains("Diamonds")); assert(deck.suits.contains("Hearts")); assert(deck.suits.contains("Clubs")); assert(deck.suits.contains("Spades")); assert(deck.suits["Diamonds"].contains("Ace")); //repeat for 2-10, Jack, Queen, King

или что-то в этом роде.

0 голосов
/ 26 января 2009

Вы смотрели статью в Википедии о игральных картах ? Это должно включать все, что вам нужно знать о картах для выполнения упражнения. В основном карта имеет номер от 1 до 13 (ранг) и одну из четырех мастей, пиков, треф, сердец или алмазов (но вы можете называть их A, B, C, D, если хотите). 13x4 дает 52 карты в колоде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...