0
信息:我目前正在开发一款游戏,并希望在开始之前了解一下开始菜单,然后继续前进,因为这将有助于我的游戏的其他部分。设计。基本上我需要它,所以当我按START GAME
时,游戏将开始,当我按HELP
它会显示帮助页面,当我按QUIT
游戏将退出。到目前为止,当QUIT
被按下时,游戏退出,这很简单,但我坚持开始游戏。Pygame,游戏停止,如果鼠标移动
问题: 当我按开始游戏时,它会显示播放器精灵以及时钟。时钟和帧一样,直到鼠标移动。
守则
import pygame, random, time
pygame.init()
#Screen
SIZE = width, height = 1280, 720 #Make sure background image is same size
SCREEN = pygame.display.set_mode(SIZE)
pygame.display.set_caption("Cube")
#Events
done = False
menu_on = True
#Colors
BLACK = 0, 0, 0
WHITE = 255, 255, 255
#Fonts
FONT = pygame.font.SysFont("Trebuchet MS", 25)
MENU_FONT = (FONT)
#Info
time = 0
minute = 0
hour = 0
day = 0
year = 0
counter = 0
blink_clock = 0
blink = 0
#Year
YEARFONT = FONT.render("Year:{0:03}".format(year),1, BLACK) #zero-pad day to 3 digits
YEARFONTR=YEARFONT.get_rect()
YEARFONTR.center=(885, 20)
#Day
DAYFONT = FONT.render("Day:{0:03}".format(day),1, BLACK) #zero-pad day to 3 digits
DAYFONTR=DAYFONT.get_rect()
DAYFONTR.center=(985, 20)
#Hour
HOURFONT = FONT.render("Hour:{0:02}".format(hour),1, BLACK) #zero-pad hours to 2 digits
HOURFONTR=HOURFONT.get_rect()
HOURFONTR.center=(1085, 20)
#Minute
MINUTEFONT = FONT.render("Minute:{0:02}".format(minute),1, BLACK) #zero-pad minutes to 2 digits
MINUTEFONTR=MINUTEFONT.get_rect()
MINUTEFONTR.center=(1200, 20)
#Characters
def load_image(cube):
image = pygame.image.load(cube)
return image
class Menu:
hovered = False
def __init__(self, text, pos):
self.text = text
self.pos = pos
self.set_rect()
self.draw()
def draw(self):
self.set_rend()
SCREEN.blit(self.rend, self.rect)
def set_rend(self):
self.rend = MENU_FONT.render(self.text, 1, self.get_color())
def get_color(self):
if self.hovered:
return (255, 255, 255)
else:
return (100, 100, 100)
def set_rect(self):
self.set_rend()
self.rect = self.rend.get_rect()
self.rect.topleft = self.pos
class Cube(pygame.sprite.Sprite):
def __init__(self):
super(Cube, self).__init__()
self.images = []
self.images.append(load_image('Fine.png'))
self.index = 0
self.image = self.images[self.index]
self.rect = pygame.Rect(440, 180, 74, 160)
def update(self):
self.index += 1
if self.index >= len(self.images):
self.index = 0
self.image = self.images[self.index]
class Blink(pygame.sprite.Sprite):
def __init__(self):
super(Blink, self).__init__()
self.images = []
self.images.append(load_image('Blink.png'))
self.index = 0
self.image = self.images[self.index]
self.rect = pygame.Rect(440, 180, 74, 160)
def update(self):
self.index += 1
if self.index >= len(self.images):
self.index = 0
self.image = self.images[self.index]
class Blank(pygame.sprite.Sprite):
def __init__(self):
super(Blank, self).__init__()
self.images = []
self.images.append(load_image('Blank.png'))
self.index = 0
self.image = self.images[self.index]
self.rect = pygame.Rect(440, 180, 74, 160)
def update(self):
self.index += 1
if self.index >= len(self.images):
self.index = 0
self.image = self.images[self.index]
allsprites = Cube()
group = pygame.sprite.Group(allsprites)
blink = Blink()
blinking = pygame.sprite.Group(blink)
blankcube = Blank()
blankgroup = pygame.sprite.Group(blankcube)
start_game = [Menu("START GAME", (140, 105))]
help_ = [Menu("HELP", (140, 155))]
quit_ = [Menu("QUIT", (140, 205))]
#Game Speed
clock = pygame.time.Clock()
FPS = 60
CLOCKTICK = pygame.USEREVENT+1
pygame.time.set_timer(CLOCKTICK, 1000)
game_start = False
SCREEN.fill(WHITE)
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if menu_on == True:
for Menu in help_:
if Menu.rect.collidepoint(pygame.mouse.get_pos()):
Menu.hovered = True
else:
Menu.hovered = False
Menu.draw()
for Menu in quit_:
if Menu.rect.collidepoint(pygame.mouse.get_pos()):
Menu.hovered = True
if event.type == pygame.MOUSEBUTTONDOWN:
done = True
else:
Menu.hovered = False
Menu.draw()
for Menu in start_game:
if Menu.rect.collidepoint(pygame.mouse.get_pos()):
Menu.hovered = True
if event.type == pygame.MOUSEBUTTONDOWN:
game_start = True
else:
Menu.hovered = False
Menu.draw()
group.update()
group.draw(SCREEN)
if event.type == CLOCKTICK:
blink_clock=blink_clock + 1
if blink_clock == 60:
blink_clock = 0
if blink_clock == 0:
blink = random.randint(0, 1)
if blink == 1:
blinking.update()
blinking.draw(SCREEN)
if blink_clock == 41:
blink = 0
blankgroup.update()
blankgroup.draw(SCREEN)
if game_start == True:
menu_on = False
if event.type == CLOCKTICK:
minute = minute + 1
if minute == 60:
hour = hour + 1
minute = 0
if hour == 24:
day = day + 1
hour = 0
if day == 365:
year = year + 1
day = 0
SCREEN.fill(WHITE)
MINUTEFONT = FONT.render("Minute:{0:02}".format(minute), 1, BLACK)
SCREEN.blit(MINUTEFONT, MINUTEFONTR)
HOURFONT = FONT.render("Hour:{0:02}".format(hour), 1, BLACK)
SCREEN.blit(HOURFONT, HOURFONTR)
DAYFONT = FONT.render("Day:{0:03}".format(day), 1, BLACK)
SCREEN.blit(DAYFONT, DAYFONTR)
YEARFONT = FONT.render("Year:{0:03}".format(year), 1, BLACK)
SCREEN.blit(YEARFONT, YEARFONTR)
group.update()
group.draw(SCREEN)
if event.type == CLOCKTICK:
blink_clock=blink_clock + 1
if blink_clock == 60:
blink_clock = 0
if blink_clock == 0:
blink = random.randint(0, 1)
if blink == 1:
blinking.update()
blinking.draw(SCREEN)
if blink_clock == 41:
blink = 0
blankgroup.update()
blankgroup.draw(SCREEN)
clock.tick(FPS)
pygame.display.flip()
pygame.quit()
任何帮助表示赞赏,我希望能看到您的反馈:)