12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package cards
- import "fmt"
- // карта
- type Card struct {
- N Number
- S Suit
- }
- // проверка, корректно ли объявлена карта
- func (s *Card) IsValid() bool {
- // масть у джокера отсутствует
- if s.N == Joker {
- return true
- }
- // для остальных карт, кроме джокера, проверяем корректно объявленные порядок и масть
- return s.N.IsValid() && s.S.IsValid()
- }
- // полное наименование карты
- func (s *Card) Name() string {
- return fmt.Sprintf("%s %s", s.N.Name(), s.S.Name())
- }
- // краткое наименование карты
- func (s *Card) NameShort() string {
- // XX выводим, если карта объявлена некорректно
- if !s.IsValid() {
- return "XX"
- }
- // джокер. выводим только порядок
- if !s.S.IsValid() {
- return s.N.NameShort()
- }
- // для остальных карт кроме джокера выводим порядок и масть
- return fmt.Sprintf("%s%s", s.N.NameShort(), s.S.NameShort())
- }
- // строковое представление карты
- func (s *Card) String() string {
- return s.NameShort()
- }
|