问题描述
我正在尝试制作“Hangman”游戏,这是我的代码。在我的代码中,我有一个名为 hangman_status=0
的变量,我想在用户每次猜错以及与此相关的图片时增加,但代码没有这样做我会很高兴如果你能帮助我理解什么是问题。
我的代码:
import random
import pygame
import math
pygame.init()
WIDTH,HIGHT =800,500
win=pygame.display.set_mode((WIDTH,HIGHT))
pygame.display.set_caption("hangman")
#button variables
RADIUS =20
GAP=15
letters=[]
startx=round((WIDTH-(RADIUS*2+GAP)*13)/2)
starty=400
A=65
for i in range(26):
x=startx + GAP* 2+ ((RADIUS*2+GAP) * (i % 13))
y=starty +((i // 13) * (RADIUS*2 + GAP))
letters.append([x,y,chr(A+i),True])
#Fonts
LETTER_FONT=pygame.font.SysFont('comicsans',40)
WORD_FONT=pygame.font.SysFont('comicsans',50)
#loading images
image={0:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman0.png'),1:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman1.png'),2:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman2.png'),3:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman3.png'),4:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman4.png'),5:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman5.png'),6:pygame.image.load(r'C:\Users\kimia\PycharmProjects\pythonProject1\images\hangman6.png')}
#hangman_status=0
#for key in image.keys():
# if key==hangman_status:
# images=image.get(key)
hangman_status=0
for i in image:
if i ==hangman_status:
images=image.get(i)
#game variables
WHITE=(255,255,255)
BLACK=(0,0)
file=open('example.txt')
word = file.read().strip('\n')
guessed =[]
#set up of loop
FPS=60
clock=pygame.time.Clock()
run=True
#draw
def draw():
win.fill(WHITE)
#draw word
display_word=''
for letter in word:
if letter in guessed:
display_word+=letter +" "
else:
display_word+="* "
text=WORD_FONT.render(display_word,1,BLACK)
win.blit(text,(400,200))
#buttions
for letter in letters:
x,ltr,visible=letter
if visible:
pygame.draw.circle(win,BLACK,(x,y),RADIUS,3)
text=LETTER_FONT.render(ltr,BLACK)
win.blit(text,(x-text.get_width()/2,y-text.get_height()/2))
win.blit(images,(100,100))
pygame.display.update()
while run:
clock.tick(FPS)
draw()
for event in pygame.event.get():
if event.type==pygame.QUIT:
run=False
if event.type==pygame.MOUSEBUTTONDOWN:
m_x,m_y=pygame.mouse.get_pos()
for letter in letters:
x,visible= letter
if visible:
dis=math.sqrt((x-m_x)**2 + (y-m_y)**2)
if dis < RADIUS:
letter[3]=False
guessed.append(ltr)
if ltr not in word:
hangman_status+=1
pygame.quit()
解决方法
您需要在 images
更改时更改 hangman_status
变量:
while run:
clock.tick(FPS)
draw()
for event in pygame.event.get():
if event.type==pygame.QUIT:
run=False
if event.type==pygame.MOUSEBUTTONDOWN:
m_x,m_y=pygame.mouse.get_pos()
for letter in letters:
x,y,ltr,visible= letter
if visible:
dis=math.sqrt((x-m_x)**2 + (y-m_y)**2)
if dis < RADIUS:
letter[3]=False
guessed.append(ltr)
if ltr not in word:
hangman_status += 1
if hangman_status in image:
images = image.get(hangman_status)