коды пасьянсов
Не могли бы вы сказать мне, что означают приведенные ниже коды в Карточном классе пасьянса:
deck.pile.remove (this); deck = value; deck.add(this); if (DeckChanged != null) DeckChanged(this, null); }
Вот класс колоды
public class Card { public static boolean IsAceBiggest = true; private char rank; private String suit; public String Color; public String NumberString() { switch (rank) { case 'A': return "Ace"; case 'J': return "Jack"; case 'Q': return "Queen"; case 'K': return "King"; default: return ""+rank; } } private DeckPile deck; public DeckPile Deck() { if (deck.Game != value.Game) throw new InvalidOperationException("The new deck must be in the same game like the old deck of the card."); if (deck != value) { deck.pile.remove(this); deck = value; deck.add(this); if (DeckChanged != null) DeckChanged(this, null); } } private boolean visible = true; public boolean Visible { get { return visible; } set { if (visible != value) { visible = value; if (VisibleChanged != null) VisibleChanged(this, null); } } } private boolean enabled = true; public boolean Enabled { get { return enabled; } set { enabled = value; } } private boolean isDragable = true; public boolean IsDragable { get { return isDragable; } set { isDragable = value; } } public Card(CardRank rank, CardSuit suit, Deck deck) { this.rank = rank; this.suit = suit; this.deck = deck; this.deck.Game.Cards.Add(this); } public Card(int number, CardSuit suit, Deck deck) { this.rank = (CardRank)number; this.suit = suit; this.deck = deck; this.deck.Game.Cards.Add(this); } public int CompareTo(Card other) { int value1 = this.Number; int value2 = other.Number; if(Card.IsAceBiggest) { if (value1 == 1) value1 = 14; if (value2 == 1) value2 = 14; } if (value1 > value2) return 1; else if (value1 < value2) return -1; else return 0; } public void MoveToFirst() { MoveToIndex(0); } public void MoveToLast() { MoveToIndex(Deck.Cards.Count); } public void Shuffle() { MoveToIndex(Deck.Game.random.Next(0, Deck.Cards.Count)); } public void MoveToIndex(int index) { Deck.Cards.Remove(this); Deck.Cards.Insert(index, this); } public override string ToString() { return this.NumberString + " of " + this.Suit.ToString(); } }
Chandrasekharan P
Как мы узнаем, как выглядит класс карт?? Неужели на сайте не было объяснения, откуда вы взяли этот код?
Keith Barrow
[Переведено из ОП - не мой ответ]
Да потому что это относится к кодам классов созданных например CardPile и Solitaire построенных на Eclipse Java
Keith Barrow
Я отформатировал ваш код: Пожалуйста, сделайте это в будущем, так как это облегчает чтение вопроса и повышает вероятность ответа!
Keith Barrow
Можете ли вы подтвердить: код, который вы опубликовали, выглядит как c#, вы сказали, что вопрос был на c++ до того, как я его отредактировал, и вы прокомментировали, что используете Java. Какой язык вы используете? Вы переходите с одного языка на другой?
mpondu
да, я преобразовал его из c# в java-коды
Keith Barrow
В этом случае мой ответ ниже расскажет вам, что делает код. Надеюсь, это поможет!