📅  最后修改于: 2023-12-03 15:07:46.063000             🧑  作者: Mango
Pygame是一个Python库,用于创建计算机游戏。在开始游戏时创建一个菜单通常是一个好主意。在此处,我们将探讨如何在Pygame中创建开始菜单。
在我们开始编写代码之前,我们需要确保已正确安装Pygame并导入它。以下是我们应该包含它的一行代码:
import pygame
在我们编写任何代码之前,我们需要初始化Pygame库。以下是初始芝士:
pygame.init()
在我们开始使用Pygame绘制菜单之前,我们需要定义一些全局变量,以便我们可以轻松地使用它们。这里有几个我们需要的:
# 颜色定义
white = (255, 255, 255)
black = (0, 0, 0)
# 屏幕大小
display_width = 800
display_height = 600
# 创建屏幕
gameDisplay = pygame.display.set_mode((display_width,display_height))
# 定义游戏标题
pygame.display.set_caption('开始菜单')
我们需要定义一个绘制菜单的函数。以下是一个例子:
def game_intro():
# 菜单是否处于循环状态
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
# 获得屏幕的长度和宽度
w = gameDisplay.get_width()
h = gameDisplay.get_height()
# 创建屏幕背景
gameDisplay.fill(white)
# 屏幕上写字
largeText = pygame.font.Font('freesansbold.ttf', 115)
TextSurf, TextRect = text_objects("开始菜单", largeText)
TextRect.center = ((w / 2), (h / 2))
gameDisplay.blit(TextSurf, TextRect)
# 创建两个矩形按钮 (button(文字, x坐标, y坐标, 宽, 高, 颜色, 高亮颜色))
button("开始", 150, 450, 100, 50, black, bright_green, game_loop)
button("退出", 550, 450, 100, 50, black, bright_red, quitgame)
# 更新屏幕
pygame.display.update()
clock.tick(15)
我们还需要编写按钮点击事件的处理程序。以下是一些样例代码:
# 按钮的样式(高亮颜色和点击颜色)
bright_green = (0,255,0)
bright_red = (255,0,0)
# 创建按钮
def button(msg,x,y,w,h,ic,ac,action=None):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
# 如果鼠标在按钮内部则高亮
if x+w > mouse[0] > x and y+h > mouse[1] > y:
pygame.draw.rect(gameDisplay, ac,(x,y,w,h))
if click[0] == 1 and action != None:
action()
else:
pygame.draw.rect(gameDisplay, ic,(x,y,w,h))
# 写上按钮上的文字
smallText = pygame.font.Font("freesansbold.ttf",20)
textSurf, textRect = text_objects(msg, smallText)
textRect.center = ( (x+(w/2)), (y+(h/2)) )
gameDisplay.blit(textSurf, textRect)
# 开始游戏
def game_loop():
# 退出菜单
intro = False
# 游戏循环
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
# 添加你的游戏功能在这里
# 更新屏幕
pygame.display.update()
# 退出 Pygame
pygame.quit()
quit()
# 退出 Pygame
def quitgame():
pygame.quit()
quit()
# 写字
def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
# 设置时钟
clock = pygame.time.Clock()
以下是包含所有代码的完整程序,您可以将其复制并粘贴到Pygame脚本中进行测试:
import pygame
white = (255, 255, 255)
black = (0, 0, 0)
display_width = 800
display_height = 600
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('开始菜单')
def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
def button(msg,x,y,w,h,ic,ac,action=None):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+w > mouse[0] > x and y+h > mouse[1] > y:
pygame.draw.rect(gameDisplay, ac,(x,y,w,h))
if click[0] == 1 and action != None:
action()
else:
pygame.draw.rect(gameDisplay, ic,(x,y,w,h))
smallText = pygame.font.Font("freesansbold.ttf",20)
textSurf, textRect = text_objects(msg, smallText)
textRect.center = ( (x+(w/2)), (y+(h/2)) )
gameDisplay.blit(textSurf, textRect)
def game_intro():
intro = True
while intro:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
w = gameDisplay.get_width()
h = gameDisplay.get_height()
gameDisplay.fill(white)
largeText = pygame.font.Font('freesansbold.ttf', 115)
TextSurf, TextRect = text_objects("开始菜单", largeText)
TextRect.center = ((w / 2), (h / 2))
gameDisplay.blit(TextSurf, TextRect)
button("开始", 150, 450, 100, 50, black, bright_green, game_loop)
button("退出", 550, 450, 100, 50, black, bright_red, quitgame)
pygame.display.update()
clock.tick(15)
def game_loop():
intro = False
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
gameDisplay.fill(white)
# 添加游戏功能在这里
pygame.display.update()
pygame.quit()
quit()
def quitgame():
pygame.quit()
quit()
bright_green = (0,255,0)
bright_red = (255,0,0)
clock = pygame.time.Clock()
game_intro()
现在,我们已经学习了如何使用Pygame创建开始菜单。为了使您的菜单更加独特,可以尝试实验不同的字体、按钮样式和颜色等。您可以使用此代码作为模板,并根据需要定制它。祝你好运!