/// <summary> /// Koncowka lewy, wykonuje sie po wykonaniu ruchu przez gracza /// </summary> private void EndTrick() { GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); Canvas.SetZIndex(Player4Trick, 4); bool renons; for (int i = 1; i < WistPlayerNumber; i++) { Deck playerXMoves = new Deck(PlayersHandDecks[i - 1].Deck); playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[i - 1].Deck, WistCard, out renons); PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[i - 1], PlayersUsedCards[i - 1], PlayersAlgorithms[i - 1]); PlayersHandDecks[i - 1].Deck.Sort(); //sprawdz czy dolozyl do koloru, jezeli nie to ustaw krotkosc if (renons) { PlayersUsedCards[i - 1].CardRenons[WistCard.Suit] = true; } Canvas.SetZIndex(PlayersTricks[i - 1], 4 + i); } GameShape.MouseLeftButtonDown += new MouseButtonEventHandler(GameShape_MouseLeftButtonDown); GameShape.KeyUp += new KeyEventHandler(GameShape_KeyUp); //BeginTrick(); }
private void GameShape_CardMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //zablokuj eventy //GameShape.CardDrag -= new CardDragEventHandler(GameShape_CardDrag); GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); bool renons; //klikniecie na karte sprobuje zagrac karte var cardShapeClicked = (CardShape)sender; CardShape card = (CardShape)sender; var gameShape = GameShape.GetGameShape(card.Card.Deck.Game); var oldDeckShape = gameShape.GetDeckShape(card.Card.Deck); if (oldDeckShape.Name == "Player4Hand") { //wygeneruj mozliwe ruchy gracza Deck player4Moves = new Deck(Player4Hand.Deck); player4Moves = GameRules.PossibleMoves(Player4Hand.Deck, WistCard, out renons); Player4Hand.Deck.Sort(); //karta ktora chce zagrac gracz Card userPlayedCard = new Card(card.Card.Rank, card.Card.Suit, player4Moves); //sprawdz czy karta ktora chce zagrac gracz jest w jego mozliwych ruchac if (player4Moves.Has(userPlayedCard.Rank, userPlayedCard.Suit)) { Player4UsedCards.AddPlayed(userPlayedCard); Player4UsedCards.SortHigh(); //jezeli graz jest wistujacym to jego ruch staje sie karta wistujaca if (WistPlayerNumber == 4) { WistCard = userPlayedCard; } //jezeli nie jest to sprawdz czy nie ma krotkosci else if (renons) { Player4UsedCards.CardRenons[WistCard.Suit] = true; } PlayCard(Player4Hand.Deck, Player4Trick.Deck, card.Card); //card.Card.Deck = Player4Trick.Deck; currentTrick.Add(userPlayedCard); EndTrick(); return; } } //Nie zagral prawidlowej karty - odblokuj klikanie GameShape.CardMouseLeftButtonDown += GameShape_CardMouseLeftButtonDown; //GameShape.CardMouseLeftButtonDown += new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); //gameShape.GetDeckShape(card.Card.Deck).UpdateCardShapes(); UpdateAllCardShapes(); //Canvas.SetZIndex(oldDeckShape, 0); }
/// <summary> /// Poczatek lewy, wykonuje sie przed wykonaniem ruchu przez gracza /// </summary> private void BeginTrick() { GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); bool renons; int i; if (DetermineWhichPlayerHand(WistPlayerNumber).Deck.Cards.Count == 0) { //zakoncz gre EndGame(); return; } if (WistPlayerNumber == 4) { GameShape.CardMouseLeftButtonDown += new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); return; //jezeli gracz jest wistujacym to skoncz } //zaczyna od numeru gracza wistujacego - gdy wistujacym jest gracz nie wejdzie ani razu for (i = WistPlayerNumber; i < 4; i++) { Deck playerXMoves;// = new Deck(PlayersHandDecks[i-1].Deck); //pierwszy gracz jest wistujacym if (i == WistPlayerNumber) { playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[i - 1].Deck, null, out renons); WistCard = new Card(PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[i - 1], PlayersUsedCards[i - 1], PlayersAlgorithms[i - 1])); } //kolejni gracze musze dostosowac ruchy do wistujacego else { playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[i - 1].Deck, WistCard, out renons); PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[i - 1], PlayersUsedCards[i - 1], PlayersAlgorithms[i - 1]); //sprawdz czy dolozyl do koloru, jezeli nie to ustaw krotkosc if (renons) { PlayersUsedCards[i - 1].CardRenons[WistCard.Suit] = true; } } Canvas.SetZIndex(PlayersTricks[i - 1], i); PlayersHandDecks[i - 1].Deck.Sort(); } GameShape.CardMouseLeftButtonDown += new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); return; }
//graj sam //NIESKONCZONA - chyba juz skonczona private void PlayAutoTrick(int @howManyTricks = 13) { GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown); bool renons; int i; if (PlayersHandDecks[WistPlayerNumber - 1].Deck.Cards.Count == 0) { //zakoncz gre EndGame(); return; } for (i = 0; i < 4; i++) { int index = (WistPlayerNumber - 1 + i) % 4; Deck playerXMoves = new Deck(PlayersHandDecks[index].Next.Deck); //pierwszy gracz jest oczywiscie wistujacym if (i == 0) { playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[index].Deck, null, out renons); WistCard = new Card(PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[index], PlayersUsedCards[index], PlayersAlgorithms[index])); } //kolejni gracze musze dostosowac ruchy do wistujacego else { playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[index].Deck, WistCard, out renons); PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[index], PlayersUsedCards[index], PlayersAlgorithms[index]); //sprawdz czy dolozyl do koloru, jezeli nie to ustaw krotkosc if (renons) { PlayersUsedCards[index].CardRenons[WistCard.Suit] = true; } } Canvas.SetZIndex(PlayersTricks[index], i); PlayersHandDecks[index].Deck.Sort(); } GameShape.MouseLeftButtonDown += new MouseButtonEventHandler(GameShape_MouseLeftButtonDown); }