使用Pygame引入一个在屏幕上显示的函数



我正在为我的学校项目做一个数学程序,我已经准备好了游戏的菜单和游戏的过程,基本上就是做无穷无尽的循环,直到你失败,每个正确的答案给你5分(将来我计划把它连接到SQLite库,因为它会问你的名字和年龄)。无论如何,这是合计代码和菜单:

https://www.sololearn.com/Discuss/2848691/help-me-to-turn-this-into-a-function-and-make-this-infinite-school-projecthttps://www.sololearn.com/Discuss/2856421/making-the-school-project-menu-with-pygame-menu-school-project

(更新)问题在于,当我试图使总和的代码出现在按下"Comencem"后菜单产生的窗口中时,总和出现在Python控制台上,但不在窗口中。我想让它出现在窗口中,但是我不知道怎么做。请帮忙好吗?

import pygame
import pygame_menu
from pygame import mixer
import random
pygame.init()
#Mida i nom de la finestra
surface = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Projecte MatZanfe")
#Logotip de la finestra
logotip = pygame.image.load("calculator.png")
pygame.display.set_icon(logotip)
font = pygame_menu.font.FONT_8BIT
font1 = pygame_menu.font.FONT_NEVIS
def start_the_game():
# Variables
puntuacio = 0
while True:
x = random.randint(0, 10)
y = random.randint(0, 10)
z = x + y
print(str(x) + "+" + str(y))
resultat = int(input())
if resultat == z:
print("Correcte")
puntuacio = puntuacio + 5
print("Tens aquests punts:", puntuacio)
else:
if resultat != z:
print("Malament!")
parar = input("Vols parar? ")
if parar == ("si"):
print("Has aconseguit " + str(puntuacio) + " punts")
break
else:
continue
menu = pygame_menu.Menu('Projecte MatZanfe', 600, 400,
theme=pygame_menu.themes.THEME_SOLARIZED)
menu.add.text_input('Usuari: ', font_name = font1, font_color = 'blue')
mixer.music.load('MusicaMenu.wav')
mixer.music.play(-1)
menu.add.text_input('Edat: ', font_name = font1,font_color = 'Black')
menu.add.button('Comencem', start_the_game,font_name = font, font_color = 'green')
menu.add.button('Sortir', pygame_menu.events.EXIT, font_name = font,font_color = 'red')
menu.mainloop(surface)
有些词是加泰隆尼亚语的,但我想你能看懂。如果你不能,我就改。

下面是如何在pygame中呈现文本的一个非常简单的例子:

import pygame

pygame.init()
screen = pygame.display.set_mode((500, 400))
font = pygame.font.SysFont('comicsans', 50)
x = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
screen.fill((0, 0, 0))
text = font.render(str(x), True, (255, 255, 255))
screen.blit(text, (0, 0))
pygame.display.update()
x += 1

函数应该是这样的:

import pygame
import random
pygame.init()
surface = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Projecte MatZanfe")
font = pygame.font.SysFont('comicsans', 50)

def start_the_game():
# Variables
points = 0
while True:
x = random.randint(0, 10)
y = random.randint(0, 10)
z = x + y
surface.fill((0, 0, 0))
text = font.render(str(x) + "+" + str(y), True, (255, 255, 255))
surface.blit(text, (0, 0))
pygame.display.update()
result = int(input())
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
if result == z:
print("Correcte")
points += 5
print("Tens aquests punts:", points)
else:
if result != z:
print("Malament!")
parar = input("Vols parar? ")
if parar == "yes":
print("Has aconseguit " + str(points) + " punts")
break
else:
continue

start_the_game()

问题是input不允许脚本运行冻结窗口

来源:

  • pygame.fontdocs

最新更新