0

テキストベースのブラックジャックゲームを pygame で刺激しています。プレイヤーの手札の合計を更新できないようです。そのたびに前のテキストに上書きするだけで、読めなくなってしまいます。

コードの関連セクションは次のとおりです。

def update(player, comp):
drawText('Money: $%s' % (money), font, windowSurface, 50, 30)
drawText('Press "H" to hit. Press S to stand', font2, windowSurface, 500, (30))
drawText('Player Total: %s' % (sumHand(player)), font2, windowSurface, 500, (50))
drawText('Dealer Total: %s' % (sumHand(comp)), font2, windowSurface, 650, (50))
pygame.display.update()


        while True:
        update(player, comp)
        mainClock.tick(FPS)
        if sumHand(player) < 22:
            pygame.display.update()
            hCount += 1
            print('Your cards are: %s with a total value of %d' % (player,sumHand(player))) #old
            print('The dealers visible card is %s' % (comp)) #old
            print('Hit or Stand?') #old
            for event in pygame.event.get():
                event = waitForPlayerToPressKey()
                if event.key == ord('h') and hCount == 0:
                    player.append(getCard(cards))
                    cardPrint3(player)
                    update(player, comp)
                elif event.key == ord('h') and hCount == 1:
                    player.append(getCard(cards))
                    cardPrint4(player)
                    update(player, comp)
                elif event.key == ord('h') and hCount == 2:
                    player.append(getCard(cards))
                    cardPrint5(player)
                    update(player, comp)
                elif event.key == ord('h') and hCount == 3:
                    player.append(getCard(cards))
                    cardPrint6(player)
                    update(player, comp)
                    break
                    money+=500
                else:
                    break
            else:
                break

重要なことを見逃した場合は、ここに完全なプログラムのペーストビンがあります。 http://pastebin.com/70EhteQ1

4

1 に答える 1

1

再度描画を開始する前に、画面、または少なくともその関連部分を「クリア」する必要があります。それ以外の場合は、既存の図面の上に描画するだけです。ループの先頭でこれを試してください:

while True:
    windowSurface.fill((255, 255, 255)) # this will draw over the entire screen surface with white
    update(player, comp)
    ...
于 2013-04-23T19:24:40.237 に答える