使用python和pygame在不同的脚本中使用类

时间:2014-02-25 09:26:35

标签: python class pygame

我最近开始使用python和pygame制作游戏,我有一个主脚本,其中导入了我的所有其他脚本,然后它全部运行,但我有两个主要问题。第一个是当我在主脚本中运行第一个脚本时,它似乎在该类之后停止,而不是继续使用另一个脚本。

我想让游戏做什么:

将这些图片显示为开场演职员表。 (工作)

然后一旦完成学分就启动一个菜单,此时这只是一个播放按钮和一个Rect,它将有一个碰撞响应来检测玩家是否点击了它。 (不工作)

这是我的脚本:

RUN.py(将所有内容组合在一起的主要游戏):

import pygame, random, math, sys, os, time
import startUp, Menu
from pygame.locals import *
pygame.init()

#classes setup
Begin = startUp.Begin()
Menu = Menu.HUD()
while True:

    #quit button 
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()



    #show 3 pics for the opening credits
    Begin.Run()

    #bring up the menu once the opening credits are done
    Menu.Run()

然后是Menu.py(游戏菜单)

import pygame, time, random
from pygame.locals import *
pygame.init()

class HUD(object):

    def __init__(object):
        object.playButtonUp = "playButtonUp.png"
        object.playButtonUpHover = "playButtonUpHover.png"
        object.playButtonDown = "playButtonDown.png"

        object.Black = (0, 0, 0)
        object.Red = (0, 255, 0)
        object.screen = pygame.display.set_mode((1440, 720), 0, 32)

        object.playButtonUp = pygame.image.load(object.playButtonUp).convert_alpha()
        object.playButtonUpHover = pygame.image.load(object.playButtonUpHover).convert_alpha()
        object.playButtonDown = pygame.image.load(object.playButtonDown).convert_alpha()

    def Run(object):
        #object.screen.fill(object.Black)

        #creat rects
        object.playButtonRect = Rect(464, 232, 256, 128)

        #blit imagers
        object.screen.blit(object.playButtonUp, (464, 232))

没有错误消息,它似乎有效,但图像未显示在屏幕上。

谢谢你的时间和帮助!

1 个答案:

答案 0 :(得分:1)

您的结构不正确。您已合并了两种不同的方法。

你有一个Run脚本应首先显示3张图片,然后显示菜单。

现在,你有一个while循环调用Begin和Menu的run函数,直到你关闭游戏。

相反,文件应如下所示:

import pygame, random, math, sys, os, time
import startUp, Menu
from pygame.locals import *
pygame.init()

#classes setup
Begin = startUp.Begin()
Begin.run()

Menu = Menu.HUD()
Menu.run()

Menu.py

class HUD(object):
    def run(object):
        while True:
            object.playButtonRect = Rect(464, 232, 256, 128)
            object.screen.blit(object.playButtonUp, (464, 232))
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()