def initHands(): global talon global hands hands = deck.dealingOut(nbPlayers, nbStartCards, not isDebug) talon = hands[nbPlayers] top = talon.getLast() talon.remove(top, True) pile.insert(top, True) hands[0].sort(SortType.SUITPRIORITY, True) layouts = [0] * nbPlayers for i in range(nbPlayers): layouts[i] = RowLayout(handLocations[i], handWidth) layouts[i].setRotationAngle(90 * i) hands[i].setView(cg, layouts[i]) hands[i].setTargetArea(TargetArea(pileLocation)) if i == 0: layouts[i].setStepDelay(10) hands[i].draw() layouts[0].setStepDelay(0) for i in range(1, nbPlayers + 1): hands[i].setVerso(True) talon.setView(cg, StackLayout(talonLocation)) talon.draw() pile.setView(cg, StackLayout(pileLocation)) pile.draw() hands[0].addCardListener(MyHandsCardListener()) talon.addCardListener( MyTalonCardListener()) # Player 0 reclaims card from talon setMyMove()
def initBids(): for i in range(nbPlayers): bids[i] = Hand(deck) bids[i].setView(cg, StackLayout(bidLocations[i])) bids[i].addCardListener(BitsCardListener()) hands[i].setTargetArea(TargetArea(bidLocations[i])) hands[i].addCardListener(HandsCardListener(i))
def transferToStock(player): for i in range(nbPlayers): bids[i].setTargetArea(TargetArea(stockLocations[player])) card = bids[i].getLast() if card == None: continue card.setVerso(True) bids[i].transferNonBlocking(card, stocks[player], True)
def transferToStock(player): global targetCount targetCount = 0 for i in range(nbPlayers): bids[i].setTargetArea(TargetArea(stockLocations[player])) card = bids[i].getLast() if card == None: continue card.setVerso(True) bids[i].transferNonBlocking(card, stocks[player], True) Monitor.putSleep() stocks[player].draw()
def simulateMove(nbPlayer): for card in hands[nbPlayer].getCardList(): if card.getRank() == Rank.BAUER: # Yes, play it removeTrumpActor() card.setVerso(False) card.transfer(pile, True) hands[nbPlayer].sort(SortType.SUITPRIORITY, True) if checkOver(nbPlayer): return True selectTrumpActor(nbPlayer) cg.delay(500) return True # Get list of cards that are allowed allowed = [] if trumpActor == None: # No trump imposed revealed = pile.getLast() for card in hands[nbPlayer].getCardList(): if card.getRank() == revealed.getRank() or card.getSuit( ) == revealed.getSuit(): allowed.append(card) else: # Trump imposed for card in hands[nbPlayer].getCardList(): if card.getSuit() == trump: allowed.append(card) talon.setTargetArea(TargetArea(handLocations[nbPlayer])) if len(allowed) == 0: # Can't play a card, retrieve one from talon card = talon.getLast() card.transfer(hands[nbPlayer], True) removeTrumpActor() talon.draw() card.setVerso(True) cg.delay(500) # Check if we can play it top = pile.getLast() if card.getRank() == Rank.BAUER or card.getRank() == top.getRank( ) or card.getSuit() == top.getSuit(): card.transfer(pile, True) card.setVerso(False) if card.getRank() == Rank.BAUER: selectTrumpActor(nbPlayer) return checkTalon() selectedCard = allowed[0] # Other strategy here selectedCard.setVerso(False) selectedCard.transfer(pile, True) removeTrumpActor() hands[nbPlayer].sort(SortType.SUITPRIORITY, True) return True
def leftDoubleClicked(self, card): setMouseTouchEnabled(False) card.setVerso(False) talon.setTargetArea(TargetArea(handLocations[0])) card.transfer(hands[0], False) talon.draw()