首页 > 解决方案 > 可以弄清楚为什么在其他玩家获胜后我的获胜图像不会出现

问题描述

我很难弄清楚为什么在一名球员获胜后它不会显示另一名球员获胜。当一名玩家获胜时,它应该说“玩家(1 或 2)获胜,请按 r 重新开始”,但在一个人获胜后,它不会显示其他玩家获胜选项卡。这是占用大量页面的代码,所以我使用粘贴箱 https://pastebin.com/MaCnFChE 感谢任何帮助高级注释的人——它非常草率,我知道我需要修复它,哈哈

hi

标签: pythonpygame

解决方案


这是一个如何重组代码以利用列表的示例。我没有你的图片,所以我实际上无法运行它,这意味着你的原始问题可能仍然存在。

import pygame as pg
 
pg.init()
HEIGHT = 700
WIDTH = 600
FPS = 60
BGCOLOR = (0, 0, 0)
Moves = 0
game_over = False
player = True
x = [1000] * 18
y = [1000] * 18
wins = 0
green = (0, 255, 0)
black = (0, 0,0)
go, go1 = 1000, 1000
 
#wins text
font = pg.font.SysFont('chalkduster.ttf', 72)
def update():
    wins_ = font.render(str(wins), True, black)
    screen.blit(wins_, [560,647])
 
# create the game window and set the title
screen = pg.display.set_mode((WIDTH, HEIGHT))
pg.display.set_caption("Tick Tac Toe")
# start the clock
clock = pg.time.Clock()
 
#load game images
BG = pg.image.load('sprites/background.png')
Player_X = pg.image.load('sprites/X.png')
Player_X = pg.transform.scale(Player_X, (100, 130))
Player_C = pg.image.load('sprites/circle.png')
Player_C = pg.transform.scale(Player_C, (130, 130))
game_overimg = pg.image.load('sprites/game_over.png')
game_overimg1 = pg.image.load('sprites/game_over1.png')
 
#keeps track of board

b = [0]*9

def pgame_screen():
    global go, wins, game_over, go1, player_win
    go1 -= 1000
    wins -= 1
    game_over = True

def p1game_screen():
    global go, wins, game_over, go1, player_win
    go -= 1000
    wins += 1
    game_over = True

def win_check():
    global go, wins, player_win
    if not game_over:
        return

    win = 0
    if (b[0] == b[1] == b[2]) or (b[0] == b[3] == b[6]):
        win = b[0]
    elif b[3] == b[4] == b[5] or (b[1] == b[4] == b[7]) or (b[0] == b[4] == b[8]) or (b[2] == b[4] == b[6]):
        win = b[4]
    elif b[6] == b[7] == b[8] or (b[2] == b[5] == b[8]):
        win = b[8]

    if win == 1:
        p1game_screen()
    elif win == 2:
        pgame_screen()

    return win != 0
 
def restart():
    global b, x, y, Moves, game_over, player
    b = [0]*9
    Moves = 0
    game_over = False
    player = True
    #player_win == False
    x = [1000]*18
    y = [1000]*18

#change player
def player_switch():
    global player
    player = not player
 
 
#where mouse is clicked
def def_placement():
    global wins, b, player, x, y

    # Which box was clicked?

    col = -1
    if 45 <= mX <= 190:
        col = 0
        yy = 955
    elif 240 <= mX <= 375:
        col = 1
        yy = 765
    elif 410 <= mX <= 560:
        col = 2
        yy = 580
    else:
        return

    row = -1
    if 45 <= mY <= 190:
        col = 0
        xx = 928,950
    elif 240 <= mY <= 375:
        col = 1
        xx = 740,763
    elif 410 <= mY <= 560:
        col = 2
        xx = 757,590
    else:
        return

    # If the cell is occupied, skip.

    box = row * 3 + col
    if b[box]:
        return

    # Claim it.

    if player:
        b[box] = 1
        x[box*2] = xx[0]
        y[box*2] = yy
    else:
        b[box] = 2
        x[box*2+1] = xx[1]
        y[box*2+1] = yy

    player_switch()
    print(player)
 
 
run = True
while run:
    global SysFont
    # row 1
    screen.blit(BG, [0,0])
    for i in range(0,18,2):
        screen.blit( Player_X, [x[i  ], y[i  ]] )
        screen.blit( Player_C, [x[i+1], y[i+1]] )
    screen.blit(game_overimg, [go,go])
    screen.blit(game_overimg1, [go1,go1])
    update()
 
    for event in pg.event.get():
 
        if event.type == pg.QUIT:
            run = False
        if event.type == pg.KEYDOWN:
            if event.key == pg.K_r:
                restart()
                print('restarted')
                go += 1000
                go1 += 1000
        if event.type == pg.KEYDOWN:
            if event.key == pg.K_ESCAPE:
                run = False
        if event.type == pg.MOUSEBUTTONDOWN and not game_over:
            mX = event.pos[0] # x
            mY = event.pos[1] # y
            def_placement()
            mX = 0
            mY = 0
            if not game_over:
                win_check()
 
    clock.tick(20)
 
    pg.display.update()
# close the window
pg.quit()

推荐阅读