public override bool CanMoveCards(int whichOne, out int lastOne) { if (PreviousSelected == -1) { throw new BasicBlankException("Cannot find out whether we can move the cards because none was selected"); } lastOne = -1; //until i figure out what else to do. var givList = Piles.ListGivenCards(PreviousSelected); TempList = givList.ListValidCardsAlternateColors(); var thisPile = Piles.PileList[whichOne]; SolitaireCard oldCard; if (thisPile.CardList.Count == 0) { lastOne = TempList.Count - 1; return(true); } oldCard = Piles.GetLastCard(whichOne); if (oldCard.Value == EnumCardValueList.LowAce) { return(false); } return(TempList.CanMoveCardsAlternateColors(oldCard, ref lastOne)); }
public void Redeal() { TempList = new DeckRegularDict <SolitaireCard>(); if (DealNumber == 3) { throw new BasicBlankException("There are only 3 deals allowed. Therefore, there is a problem"); } var thisCol = new DeckRegularDict <SolitaireCard>(); DealNumber++; Piles.PileList.ForEach(thisPile => { thisPile.CardList.ForEach(thisCard => thisCol.Add(thisCard)); }); Piles.ClearBoard(); thisCol.ShuffleList(); int y = 0; 8.Times(x => { foreach (var thisPile in Piles.PileList) { if (y == thisCol.Count) { break; } var tempCard = thisCol[y]; thisPile.CardList.Add(tempCard); y++; } }); PreviousSelected = -1; }
public void ExportToExcel() { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Excel 2007 - 2016|*.xlsx"; sfd.Title = "选择计算文件"; if (sfd.ShowDialog() == DialogResult.OK) { if (File.Exists(sfd.FileName)) { File.Delete(sfd.FileName); } try { var exporttoexcel = new ExportCalculationSheet(Piles.ToList()); Task task = Task.Run(() => exporttoexcel.Export(sfd.FileName)) .ContinueWith(t => MessageBox.Show($"文件已保存至{sfd.FileName}", "保存成功", MessageBoxButtons.OK, MessageBoxIcon.Information), TaskContinuationOptions.OnlyOnRanToCompletion); //MessageBox.Show($"文件已保存至{sfd.FileName}", "保存成功", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception e) { MessageBox.Show(e.ToString(), "输出错误!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void CalcNums() { // Вычислить строку номеров свай var poses = Piles.Select(p => p.Pos); Nums = AcadLib.MathExt.IntsToStringSequence(poses.ToArray()); }
public void AddPile() { var ret = new GroupItemModel(Piles); Piles.Add(ret); Selection = ret; RaisePropertyChanged("Piles"); }
protected override void AfterRemovingFromLastPile(int Lasts) { if (Piles.HasCardInColumn(Lasts) || GlobalClass.MainModel !.Heel1.IsEndOfDeck()) { return; } Piles.AddCardToColumn(Lasts, GlobalClass.MainModel.Heel1.DrawCard()); }
public override bool CanAddSingleCard(int whichOne, SolitaireCard thisCard) { if (Piles.HasCardInColumn(whichOne) == false && GlobalClass.MainModel !.Heel1.IsEndOfDeck()) { return(true); } return(Piles.HasCardInColumn(whichOne) == false && GlobalClass.MainModel !.Heel1 !.CardsLeft() == 1); }
public void addACardToThePlayPile() { Piles pile = new Piles(); pile.addCardToPile(new Card((CardSuite)1, (CardValue)1), (PlayablePiles)0); Assert.AreEqual(1, pile.PlayPiles[0].Count); }
public void placeASecondCardOnThePile() { Piles pile = new Piles(); pile.addCardToPile(new Card((CardSuite)1, (CardValue)1), (PlayablePiles)0); pile.addCardToPile(new Card((CardSuite)1, (CardValue)2), (PlayablePiles)0); Assert.AreEqual(2, pile.PlayPiles[0].Count); }
public override bool CanAddSingleCard(int whichOne, SolitaireCard thisCard) { if (Piles.HasCardInColumn(whichOne) == false) { return(true); } var prevCard = Piles.GetLastCard(PreviousSelected); return(prevCard.Value - 1 == thisCard.Value && prevCard.Color == thisCard.Color); }
public override bool CanAddSingleCard(int whichOne, SolitaireCard thisCard) { if (Piles.HasCardInColumn(whichOne) == false) { return(true); } var oldCard = Piles.GetLastCard(whichOne); return(oldCard.Value - 1 == thisCard.Value && oldCard.Color != thisCard.Color); }
private DeckRegularDict <SolitaireCard> ListValidCards() { var output = Piles.ListGivenCards(PreviousSelected); if (output.Count == 0) { return(new DeckRegularDict <SolitaireCard>()); //decided this instead of error. } return(output.ListValidCardsSameSuit()); }
public override bool CanAddSingleCard(int whichOne, SolitaireCard thisCard) { if (Piles.HasCardInColumn(whichOne) == false) { return(thisCard.Value == EnumCardValueList.King); } var prevCard = Piles.GetLastCard(whichOne); return(prevCard.Value - 1 == thisCard.Value && prevCard.Color != thisCard.Color); }
public void AddPile() { var ret = new GroupItemViewModel() { ItemSource = Piles }; Piles.Add(ret); Selection = ret; RaisePropertyChanged("Piles"); }
public void invalidPileForCardToAdd() { void addCardWithWrongPile() { Piles piles = new Piles(); piles.addCardToPile(new Card((CardSuite)1, (CardValue)1), (PlayablePiles)88); } Assert.Throws(typeof(InvalidPlayPileException), addCardWithWrongPile); }
public void isNotAnAce() { void addCardWithWrongPile() { Piles piles = new Piles(); piles.addCardToPile(new Card((CardSuite)2, (CardValue)3), (PlayablePiles)1); } Assert.Throws(typeof(MustBeAnAceException), addCardWithWrongPile); }
public Pile GetDiscardPile(string identifier) { var discardPile = Piles.SingleOrDefault(p => p.Type == PileType.Discard && p.Identifier == identifier); if (discardPile == null) { throw new DomainException(DomainErrorCode.InconsistentData, $"No discard pile for game {Id}"); } return(discardPile); }
public Pile GetDeckPile() { var deckPile = Piles.SingleOrDefault(p => p.Type == PileType.Deck); if (deckPile == null) { throw new DomainException(DomainErrorCode.InconsistentData, "No deck pile found"); } return(deckPile); }
public void pileDoesNotHaveKing() { Piles pile = new Piles(); for (var i = 1; i <= 12; i++) { pile.addCardToPile(new Card((CardSuite)1, (CardValue)i), (PlayablePiles)0); } Assert.False(pile.checkIfAnyPileHasAKing()); }
protected override void AfterRemovingFromLastPile(int Lasts) { if (Piles.HasCardInColumn(Lasts) || GlobalClass.MainModel !.Heel1 !.IsEndOfDeck() || GlobalClass.MainModel.Heel1.CardsLeft() == 1) { return; } Piles.AddCardToColumn(Lasts, GlobalClass.MainModel.Heel1.DrawCard()); if (GlobalClass.MainModel.Heel1.CardsLeft() == 1) { GlobalClass.MainModel.Heel1.DeckStyle = DeckObservablePile <SolitaireCard> .EnumStyleType.AlwaysKnown; } }
public void addCardToPile(Card card, Piles pile) { if (validatePile(pile)) { int index = (int)pile; this.Pile[index].Add(card); } else { throw new InvalidStoragePileException((int)pile); } }
public void cannotPlaceASecondCardOnThePile() { void addCardWithWrongPile() { Piles piles = new Piles(); piles.addCardToPile(new Card((CardSuite)2, (CardValue)1), (PlayablePiles)1); piles.addCardToPile(new Card((CardSuite)2, (CardValue)5), (PlayablePiles)1); } Assert.Throws(typeof(InvalidCardValueSizeDifferenceException), addCardWithWrongPile); }
public Pile GetPlayerPile(Player player, string identifierSuffix) { var identifier = GetPlayerIdentifier(player, identifierSuffix); var playerPile = Piles.SingleOrDefault(p => p.Type == PileType.PlayerHand && p.Identifier == identifier); if (playerPile == null) { throw new DomainException(DomainErrorCode.InconsistentData, $"No player pile for game {Id} and player {player.Id}"); } return(playerPile); }
public override bool CanMoveToAnotherPile(int whichOne) { SolitaireCard newCard; SolitaireCard oldCard; if (Piles.HasCardInColumn(whichOne) == false) { return(false);// cannot move because the empty piles are never filled } oldCard = Piles.GetLastCard(whichOne); newCard = GetCard(); // i think return(oldCard.Value - 1 == newCard.Value); }
public void RemoveCards(int whichOne) { if (TempList.Count != 13) { throw new BasicBlankException("Must have 13 cards to remove the 13 cards"); } TempList.ForEach(tempCard => Piles.RemoveSpecificCardFromColumn(whichOne, tempCard.Deck)); if (Piles.HasCardInColumn(whichOne)) { var thisCard = Piles.GetLastCard(whichOne); Piles.RemoveFromUnknown(thisCard); } UnselectAllColumns(); }
public override bool CanAddSingleCard(int whichOne, SolitaireCard thisCard) { if (Piles.HasCardInColumn(whichOne) == false) { return(thisCard.Value == EnumCardValueList.King); } var oldCard = Piles.GetLastCard(whichOne); if (thisCard.Suit != oldCard.Suit) { return(false); } return(oldCard.Value - 1 == thisCard.Value); }
private bool CanBuildFromKing(int pile, SolitaireCard thisCard) { if (pile > 1) { throw new BasicBlankException($"Kings must be 0, or 1; not {pile}"); } var oldCard = Piles.GetLastCard(pile); if (oldCard.Suit != thisCard.Suit) { return(false); } return(oldCard.Value - 1 == thisCard.Value); }
public override bool CanAddSingleCard(int whichOne, SolitaireCard thisCard) { if (Piles.HasCardInColumn(whichOne) == false) { if (GlobalClass.MainModel !.Heel1.IsEndOfDeck() == false) { throw new BasicBlankException("If its not at the end of the deck; a card needs to be placed"); } return(true); } var prevCard = Piles.GetLastCard(whichOne); return(prevCard.Value - 1 == thisCard.Value && prevCard.Suit != thisCard.Suit); }
public void returnNullForPileWithKing() { Piles pile = new Piles(); for (var i = 1; i <= 12; i++) { pile.addCardToPile(new Card((CardSuite)1, (CardValue)i), (PlayablePiles)0); } DiscardPile dp = new DiscardPile(); DiscardPile discardPile = pile.getPileWithAKing(dp); Assert.IsNull(discardPile); Assert.False(dp.DiscardedCards.Any()); }
public void getDiscardPileWithAKing() { Piles pile = new Piles(); for (var i = 1; i <= 13; i++) { pile.addCardToPile(new Card((CardSuite)1, (CardValue)i), (PlayablePiles)0); } DiscardPile dp = new DiscardPile(); DiscardPile discardPile = pile.getPileWithAKing(dp); Assert.IsNotNull(discardPile); Assert.AreEqual(13, discardPile.DiscardedCards.Count); }