Хорошо, это мой код, и я получаю ошибку: это
, и мне интересно, можете ли вы увидеть любые проблемы с моим кодом. Это как-то связано с выходом Pygame перед выходом из игры. Спасибо, Алекс. В коде есть и другие внешние вещи, но вам нужно просто просмотреть его, если вы можете.
import pygame
import random
import time
pygame.init()
pygame.font.init()
pygame.mixer.init()
width = 1920
height = 1080
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
light_blue = (0,0,255)
blue = (0,0,200)
grey = (200,200,200)
dark_grey = (220,220,220)
greenBlue = (25,252,180)
menucolours = (0,0,255)
rollover_greenBlue = (190,50,200)
rollover_menucolours = (190,50,200)
buttonSound = pygame.mixer.Sound("button_click_s.wav")
clock = pygame.time.Clock()
background = pygame.image.load('background.jpg')
window = pygame.display.set_mode((width,height))
window.blit(background, (0,0))
pygame.display.update()
font = pygame.font.Font('FFFFORWA.TTF',20)
smallText = pygame.font.Font('FFFFORWA.TTF',20)
win = pygame.display.set_mode((1920,1080))
outline=True
def text_objects(text, font, colour = None):
if colour == None:
textSurf = font.render(text, True, black)
else:
textSurf = font.render(text, True, colour)
return textSurf, textSurf.get_rect()
def button(x,y,width,height,ac,ic,msg, act=None, msgColour=None, font = None):
global List
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+width > mouse[0] > x and y+height > mouse[1] > y:
pygame.draw.rect(window, ac, (x,y,width,height))
if click[0] == 1 and act != None:
buttonSound.play()
if act == 'rule':
function.rules()
elif act == 'new':
function.game()
elif act == 'end':
function.end()
elif act == 'menu':
function.menu()
elif act == 'play1':
List = 0
function.place()
elif act == 'play2':
List = 1
function.place()
elif act == 'play3':
List = 2
function.place()
elif act == 'play4':
List = 3
function.place()
elif act == 'play5':
List = 4
function.place()
else:
pygame.draw.rect(window, ic, (x,y,width,height))
if msgColour == None:
textSurf, textRect = text_objects(msg, smallText, dark_grey)
else:
textSurf, textRect = text_objects(msg, smallText, msgColour)
textRect.center = ((x+(width/2)), (y+(height/2)))
window.blit(textSurf, textRect)
class function():
def game():
global win
global letters2
global Letters
global sen1
global sen2
global sen3
global sen4
global sen5
global sen6
global gameLoop
global wordLoop
global finalLoop
global number
global sen
global guesses
words = ['ABOUT','ABOVE','ABUSE','AUDIO','BEGAN','BASIC','JAZZY','FIZZY','PIZZA','JAKEY','JERKY','CHIPS','CHEWS','CHOMP','CLEAN','DRYER','EIGHT','EQUAL','FLANK','STEAK','FLONG','FOOLS','FOOTY','GUARD']
gameLoop = True
pygame.display.update()
window.blit(background, (0,0))
word = []
win = []
randomWord = random.randint(0,13)
word.append(words[randomWord])
letters = list(word[0])
Letters = list(word[0])
letters2 = []
y = 0
for letter in letters:
y = y + 1
for letter in range(0,y):
letter = random.choice(letters)
letters.remove(letter)
letters2.append(letter)
sen = ['_ ' + '_ ' + '_ ' + '_ ' + '_ ', Letters[0] + ' _ ' + '_ ' + '_ ' + '_ ', Letters[0] + ' ' + Letters[1] + ' _ ' + '_ ' + '_ ',
Letters[0] + ' ' + Letters[1] + ' ' + Letters[2] + ' _ ' + '_ ', Letters[0] + ' ' + Letters[1] + ' ' + Letters[2] + ' '+ Letters[3] + ' _ ',
Letters[0] + ' ' + Letters[1] + ' ' + Letters[2] + ' '+ Letters[3] + ' ' + Letters[4]]
gameLoop = True
number = 0
guesses = 5
text.title(sen[number])
while gameLoop:
if len(Letters) == 0:
finalLoop = True
while finalLoop:
window.blit(background, (0,0))
text.title('YOU WIN!')
button(550,500,250,100, rollover_menucolours, menucolours, 'Play Again', 'new', black, smallText)
button(1250,500,250,100, rollover_menucolours, menucolours, 'Main Menu', 'menu', black, smallText)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
elif guesses == 0:
finalLoop = True
while finalLoop:
window.blit(background, (0,0))
text.title('YOU LOSE')
button(550,500,250,100, rollover_menucolours, menucolours, 'Play Again', 'new', black, smallText)
button(1250,500,250,100, rollover_menucolours, menucolours, 'Main Menu', 'menu', black, smallText)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
button(width/2-220, height/2+50, 50, 50 ,rollover_menucolours, menucolours, letters2[0], 'play1', (black), smallText)
button(width/2-120, height/2+50, 50, 50, rollover_menucolours, menucolours, letters2[1], 'play2', (black), smallText)
button(width/2-20, height/2+50, 50, 50, rollover_menucolours, menucolours, letters2[2], 'play3', (black), smallText)
button(width/2+70, height/2+50, 50, 50, rollover_menucolours, menucolours, letters2[3], 'play4', (black), smallText)
button(width/2+170, height/2+50, 50, 50, rollover_menucolours, menucolours, letters2[4], 'play5', (black), smallText)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
def menu():
pygame.mixer.music.load("menu_music.mp3")
pygame.mixer.music.play()
mainLoop = True
clock.tick(1)
while mainLoop:
window.blit(background, (0,0))
text.title('lettermatcher.edu')
button(550, 500, 250, 100, rollover_menucolours, menucolours, 'START', 'new', black, smallText)
button(900, 500, 250, 100, rollover_menucolours, menucolours, 'INSTRUCTIONS', 'rule', black, smallText)
button(1250, 500, 250, 100, rollover_menucolours, menucolours, 'QUIT', 'end', black, smallText)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
mainLoop = False
pygame.quit()
def rules():
global ruleLoop
ruleLoop = True
while ruleLoop:
window.blit(background, (0,0))
text.title('How to Play')
text.display_message('The program will give you 5 letters', white, -50)
text.display_message('You have to click on the letters in order to create the word', white, 0)
text.display_message('If you pick the wrong letter five times you lose.', white, 50)
button(1550, 800, 250, 100, rollover_menucolours, menucolours, 'Main Menu', 'menu', black)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
def place():
global number
global guesses
if len(Letters) == 0:
window.blit(background, (0,0))
wordLoop = False
text.title('YOU WIN')
time.sleep(1)
ruleLoop = False
elif letters2[List] == Letters[0]:
if len(Letters) == 5:
window.blit(background, (0,0))
number += 1
text.title(sen[number])
Letters.remove(Letters[0])
elif len(Letters) == 4:
window.blit(background, (0,0))
number += 1
text.title(sen[number])
Letters.remove(Letters[0])
elif len(Letters) == 3:
window.blit(background, (0,0))
number += 1
text.title(sen[number])
Letters.remove(Letters[0])
elif len(Letters) == 2:
window.blit(background, (0,0))
number += 1
text.title(sen[number])
Letters.remove(Letters[0])
elif len(Letters) == 1:
window.blit(background, (0,0))
number += 1
text.title(sen[number])
Letters.remove(Letters[0])
elif letters2[List] not in Letters:
time.sleep(0.1)
else:
guesses -= 1
window.blit(background, (0,0))
text.title(sen[number])
gSen = 'Try again. you have ' + str(guesses) + ' left'
text.display_message(gSen, red)
time.sleep(0.1)
def end():
pygame.quit()
class text():
def display_message(text, colour = None,y = None, x = None):
screenText = pygame.font.Font('FFFFORWA.ttf',25)
if colour == None:
textSurf, textRect = text_objects(text, screenText)
else:
textSurf, textRect = text_objects(text, screenText, colour)
if y != None:
if x != None:
textRect.center = ((width/2+x),(height/2+y))
else:
textRect.center = ((width/2),(height/2+y))
else:
textRect.center = ((width/2),(height/2))
window.blit(textSurf, textRect)
def title(text):
screenText = pygame.font.Font('FFFFORWA.ttf',80)
textSurf, textRect = text_objects(text, screenText)
textRect.center = ((960),(200))
window.blit(textSurf, textRect)
function.menu()