python - 如何解决分配前引用的这个局部变量?
问题描述
我正在为 Python 中的新手制作一个简单的石头剪刀布游戏,当您的分数达到 -5 时创建了一个游戏循环后,在分配问题之前引用了一个局部变量,我不知道如何解决?
你能给我任何建议或方法来解决这个问题吗?这段代码有什么问题吗?非常感谢你帮助我
import pygame
from random import randint
pygame.init()
dis=pygame.display.set_mode((800,500))
pygame.display.set_caption('OAN TU TI')
keo_y=300
keo_x=100
bua_y=300
bua_x=350
bao_y=300
bao_x=600
computer_y=50
computer_x=350
KEOCOM=pygame.image.load('keocom.png')
BUACOM=pygame.image.load('buacom.png')
BAOCOM=pygame.image.load('baocom.png')
keo=pygame.image.load('keo.png')
bua=pygame.image.load('bua.png')
bao=pygame.image.load('bao.png')
red = (255, 0, 0)
blue = (0, 0, 255)
green = (0, 255, 0)
font=pygame.font.SysFont("san",50)
ketqua =""
computer = ""
player =""
diem = 0
if computer == player:
print("HOA")
ketqua="HOA"
else:
if player == "BAO":
if computer == "BUA":
print("THANG")
ketqua="THANG"
else:
print("THUA")
ketqua="THUA"
elif player == "BUA":
if computer == "KEO":
print("THANG")
ketqua="THANG"
else:
print("THUA")
ketqua="THUA"
elif player == "KEO":
if computer == "BAO":
print("THANG")
ketqua="THANG"
else:
print("THUA")
ketqua="THUA"
def gameLoop():
game_over = False
game_close = False
while not game_over:
while game_close == True:
dis.fill(white)
message("You Lost! Press Q-Quit or C-Play Again", red)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
mouse_x, mouse_y = pygame.mouse.get_pos()
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.MOUSEBUTTONDOWN:
if 100 < mouse_x < 265 and 300 < mouse_y < 475:
player = player + "KEO"
print (player)
computer = randint(0,2)
if computer == 0:
computer= "KEO"
if computer == 1:
computer= "BUA"
if computer == 2:
computer= "BAO"
if 350 < mouse_x < 507 and 300 < mouse_y < 475:
player = player + "BUA"
print (player)
computer = randint(0,2)
if computer == 0:
computer = "KEO"
if computer == 1:
computer = "BUA"
if computer == 2:
computer = "BAO"
if 600 < mouse_x < 745 and 300 < mouse_y < 475:
player = player + "BAO"
print (player)
computer = randint(0,2)
if computer == 0:
computer= "KEO"
if computer == 1:
computer= "BUA"
if computer == 2:
computer= "BAO"
print (computer)
if computer == "KEO":
may = KEOCOM_rect=dis.blit(KEOCOM,(computer_x,computer_y))
elif computer == "BUA":
may = BUACOM_rect=dis.blit(BUACOM,(computer_x,computer_y))
else:
may = BAOCOM_rect=dis.blit(BAOCOM,(computer_x,computer_y))
if ketqua == "THANG":
diem = diem + 1
elif ketqua == "HOA":
diem = diem + 0
else:
diem = diem - 1
if diem == -5:
game_close = True
pygame.quit()
quit()
gameLoop()
这就是问题
UnboundLocalError Traceback (most recent call last)
<ipython-input-19-08d74ca39527> in <module>
143 quit()
144
--> 145 gameLoop()
<ipython-input-19-08d74ca39527> in gameLoop()
136
137
--> 138 if diem == -5:
139 game_close = True
140
UnboundLocalError: local variable 'diem' referenced before assignment
解决方案
推荐阅读
- r - 在另一个字段上使用正则表达式在 R data.table 中创建新字段
- python - 写入大型 CSV - 内存使用与随机磁盘访问
- ruby-on-rails - Trix 所见即所得编辑器更改文本字段的默认行/垂直高度
- c++ - OpenGL C++、立方体贴图、顶点着色器
- ios - 无法使用 NSUserDefaults 保存整数
- angularjs - 未加载的标题标签导致闪烁
- ios - 如何在 iOS 10.3.3 的移动 Safari 中更改此自定义复选标记颜色?
- python - 线性回归(sklearn)拟合数据形状误差
- git - 强制推送后如何下载特定的git树或提交
- javascript - JS 对象循环返回未定义,而 Lodash 映射返回值