python - 可以弄清楚为什么在其他玩家获胜后我的获胜图像不会出现
问题描述
我很难弄清楚为什么在一名球员获胜后它不会显示另一名球员获胜。当一名玩家获胜时,它应该说“玩家(1 或 2)获胜,请按 r 重新开始”,但在一个人获胜后,它不会显示其他玩家获胜选项卡。这是占用大量页面的代码,所以我使用粘贴箱 https://pastebin.com/MaCnFChE 感谢任何帮助高级注释的人——它非常草率,我知道我需要修复它,哈哈
hi
解决方案
这是一个如何重组代码以利用列表的示例。我没有你的图片,所以我实际上无法运行它,这意味着你的原始问题可能仍然存在。
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()
推荐阅读
- python - 将 Pandas 时间戳转换为 python 本机日期时间不起作用
- python - 仅在按下键时启动计时器(表明用户已开始键入)
- couchbase - 在 N1Ql couchbase 查询中将相似的键值分组到数组中
- spring - spring.data.jpa.repositories.bootstrap-mode 的 Spring 数据默认值
- android - 无法在后台线程上调用 setValue
- ios - 错误:exportArchive:找不到签名证书“iOS 开发”
- codenameone - 更改 iOS VKB 工具栏的背景颜色
- sharepoint - 如何根据同一列表中另一列的值在线过滤sharepoint中列的下拉值?
- python - Django:如何从在views.py 之外创建的views.py 访问会话数据
- angular - 使用 FormGroups 数组时,Angular 无法使用 FormGroup 找到控件