gpt4 book ai didi

python - 使用Python创建游戏: How to add game menu?

转载 作者:行者123 更新时间:2023-12-01 06:48:59 27 4
gpt4 key购买 nike

我创建了一个小游戏。我想添加一个小菜单(开始、退出、字幕)。当用户单击“开始”时,菜单应该消失并且游戏应该开始。当用户单击“信用”时,应出现一个包含信用的新屏幕(请参见屏幕截图)。我尝试过,但我真的不知道如何添加它。现在只有“退出”按钮可以工作。这是我的代码:

from random import randint
import pygame

WIDTH = 800
HEIGHT = 800

apple = Actor("apple")
apple.pos = randint(0, 800), randint(-800, 0)

pear = Actor("pear")
pear.pos = randint(0, 800), randint(-800, 0)

plum = Actor("plum")
plum.pos = randint(0, 800), randint(-800, 0)

donut = Actor("donut")
donut.pos = randint(0, 800), randint(-800, 0)

ice = Actor("ice")
ice.pos = randint(0, 800), randint(-800, 0)

chips = Actor("chips")
chips.pos = randint(0, 800), randint(-800, 0)

happysmiley = Actor("happysmiley")
happysmiley.pos = 300, 750

start = Actor("start")
start.pos = 700,750

quitgame = Actor("quit")
quitgame.pos = 600, 750

creditsinfo = Actor("credits")
creditsinfo.pos = 485, 750

gameover = False
score = 0
gamemode = 1

background = pygame.image.load("images\\background.png")

pygame.mixer.init()
pygame.mixer.music.load("music\\funmusic.mp3")
pygame.mixer.music.play(-1)

def draw():
screen.clear()
if score >= 100:
endoflevel1()
else:
drawgame()

def drawgame():
global game_mode
if gamemode == 1:
screen.clear
screen.blit("background",(0,0))
apple.draw()
pear.draw()
plum.draw()
donut.draw()
ice.draw()
chips.draw()
quitgame.draw()
happysmiley.draw()
start.draw()
creditsinfo.draw()
screen.draw.text("Punkte: " + str(score), (700, 5), color = "black")
elif gamemode == 0:
screen.clear
screen.blit("background",(0,0))
apple.draw()
pear.draw()
plum.draw()
donut.draw()
ice.draw()
chips.draw()
happysmiley.draw()
screen.draw.text("Punkte: " + str(score), (700, 5), color = "black")
elif game_mode == 2:
screen.clear()
screen.fill("orange")
screen.draw.text("Credits", topleft=(10,10), fontsize=40)
pygame.display.flip()


def update():
global score

if score >= 100:
pygame.mixer.music.stop()
return

if apple.y < 800:
apple.y = apple.y + 4
else:
apple.x = randint(0, 800)
apple.y = randint(-800, 0)

if pear.y < 800:
pear.y = pear.y + 4
else:
pear.x = randint(0, 800)
pear.y = randint(-800, 0)

if plum.y < 800:
plum.y = plum.y + 4
else:
plum.x = randint(0, 800)
plum.y = randint(-800, 0)

if donut.y < 800:
donut.y = donut.y + 4
else:
donut.x = randint(0, 800)
donut.y = randint(-800, 0)

if ice.y < 800:
ice.y = ice.y + 4
else:
ice.x = randint(0, 800)
ice.y = randint(-800, 0)

if chips.y < 800:
chips.y = chips.y + 4
else:
chips.x = randint(0, 800)
chips.y = randint(-800, 0)

if keyboard.left:
happysmiley.x = happysmiley.x - 5
elif keyboard.right:
happysmiley.x = happysmiley.x + 5

if happysmiley.collidepoint (apple.x, apple.y):
score = score + 2
effect = pygame.mixer.Sound("sounds\\bonus.wav")
effect.play()
if happysmiley.collidepoint (pear.x, pear.y):
score = score + 1
effect = pygame.mixer.Sound("sounds\\bonus.wav")
effect.play()
if happysmiley.collidepoint (plum.x, plum.y):
score = score + 1
effect = pygame.mixer.Sound("sounds\\bonus.wav")
effect.play()
if happysmiley.collidepoint (donut.x, donut.y):
score = score - 1
effect = pygame.mixer.Sound("sounds\\no.wav")
effect.play()
if happysmiley.collidepoint (ice.x, ice.y):
score = score - 1
effect = pygame.mixer.Sound("sounds\\no.wav")
effect.play()
if happysmiley.collidepoint (chips.y, chips.y):
score = score - 1
effect = pygame.mixer.Sound("sounds\\no.wav")
effect.play()

if score >= 100:
endoflevel1()

def on_mouse_down(pos): # wurde Maustaste gedrückt?
global score
global game_mode
if start.collidepoint(pos):
game_mode = 0
if quitgame.collidepoint(pos):
exit()
if creditsinfo.collidepoint(pos):
game_mode = 2

def endoflevel1():
screen.clear()
global score
screen.fill("green")
screen.draw.text("Congratulations! You have successfully completed the 1st level!", topleft=(100,350), fontsize=30)
pygame.display.flip()

enter image description here

最佳答案

是的,我成功了! :) 我包含了一个名为“gamestart”的变量,并在 on_mouse_down(pos) 函数中添加了一个查询来检查是否单击了“START”按钮。如果是这样,我在更新函数中包含一个查询,仅当 gamestart == 1 时才开始“掉落”糖果和水果。所以我没有添加另一个游戏模式。解释起来比较复杂,代码如下:

def update():
global score, gamestart

if gamestart == 1:

if score >= 200:
pygame.mixer.music.stop()
return

if apple.y < 800:
apple.y = apple.y + 4
else:
apple.x = randint(0, 800)
apple.y = randint(-800, 0)

if pear.y < 800:
pear.y = pear.y + 4
else:
pear.x = randint(0, 800)
pear.y = randint(-800, 0)

if plum.y < 800:
plum.y = plum.y + 4
else:
plum.x = randint(0, 800)
plum.y = randint(-800, 0)

if donut.y < 800:
donut.y = donut.y + 4
else:
donut.x = randint(0, 800)
donut.y = randint(-800, 0)

if ice.y < 800:
ice.y = ice.y + 4
else:
ice.x = randint(0, 800)
ice.y = randint(-800, 0)

if chips.y < 800:
chips.y = chips.y + 4
else:
chips.x = randint(0, 800)
chips.y = randint(-800, 0)

if keyboard.left:
happysmiley.x = happysmiley.x - 5
elif keyboard.right:
happysmiley.x = happysmiley.x + 5

if happysmiley.collidepoint (apple.x, apple.y):
score = score + 2
effect = pygame.mixer.Sound("sounds\\bonus.wav")
effect.play()
if happysmiley.collidepoint (pear.x, pear.y):
score = score + 1
effect = pygame.mixer.Sound("sounds\\bonus.wav")
effect.play()
if happysmiley.collidepoint (plum.x, plum.y):
score = score + 1
effect = pygame.mixer.Sound("sounds\\bonus.wav")
effect.play()
if happysmiley.collidepoint (donut.x, donut.y):
score = score - 1
effect = pygame.mixer.Sound("sounds\\no.wav")
effect.play()
if happysmiley.collidepoint (ice.x, ice.y):
score = score - 1
effect = pygame.mixer.Sound("sounds\\no.wav")
effect.play()
if happysmiley.collidepoint (chips.x, chips.y):
score = score - 1
effect = pygame.mixer.Sound("sounds\\no.wav")
effect.play()


def on_mouse_down(pos): # wurde Maustaste gedrückt?
global score
global gamestart
global gamemode
if start.collidepoint(pos):
gamestart = 1
gamemode = 0
if quitgame.collidepoint(pos):
exit()
if creditsinfo.collidepoint(pos):
gamemode = 2
if back.collidepoint(pos):
gamemode = 1

关于python - 使用Python创建游戏: How to add game menu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59109036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com