On 03/08/2013 01:40, kevin4f...@gmail.com wrote:
I'm trying to create a game of Go Fish in Python. But I've stumbled onto a 
little problem that I can't seem to figure out how to deal with.

There is a human player (player 0) and three computer players (from 1-3). The 
human player goes first and chooses a target player. And then a card rank (for 
example, the player could target player two and choose jacks, then the computer 
would have to give the player all its jacks).

What I have so far is below but the problem I'm having is right at the bottom 
of the code. So far, the code generates a deck, creates hands for every player, 
and then shows the player his/her cards. Then the player is asked which 
computer player he/she wants to target as well as the rank of cards.

The problem I'm having is with the last set of lines (the def player_0_hitman) 
at the bottom of the code. Any help would be much appreciated. There are 
basically three issues I'm having problems with.

     Basically, my code is ignoring the if's and else's. I don't get why. 
Everything appears to be positioned correctly, but for some odd reason, even 
after an if, the program also runs the else as well.

     the "hit" is not being returned. Even though in the definition, I have the 
hit set to hit = hit - 1 for the last else, it still reruns the whole definition again as 
if it the hit was 1

     I'm trying to use the count line to count how many cards are being 
transferred so the program will tell the player how many cards he gains when he 
gets a successful guess but I only get a statement saying I got 1 card each 
time no matter what (whether I get no cards or I get more than one).

I understand the basics of what I need to do but I can't seem to get a working code for this. I've tried 
changing the "for" to "if" but I get all sorts of errors so I don't think that will work. 
Then I tried converting "hit" into another code before entering the definition, changing it while 
inside, then converting it back before returning it but that also seems to do nothing, and I still get the 
same issues.

[snip]

def player_0_hitman(hit):
     for card in pHands[target_player]:
         if target_card[0] == card[0]:
             count = pHands[target_player].count(card)
             pHands[0].append(card)
             pHands[target_player].remove(card)
             ShowMessage("HIT: " + str(count) + " card(s) transferred")
     else:
         if target_card[0] != card[0]:
             top_card = GetTopCard(sDeck)
             pHands[0].append(top_card)
             if top_card[0] == target_card[0]:
                 ShowMessage("HIT: LUCKILY Player 0 has fished up a rank <" + 
str(top_card[0]) + ">!!!")
             else:
                 ShowMessage("MISS: You fished up the rank <" + str(top_card[0]) + 
">")
                 hit = hit - 1
             return hit

You have "else" lined up with "for".

In Python a "for" loop can have an "else" clause, which is run if it didn't "break" out of the loop but finished.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to