【问题标题】:Pygame Menu: calling another .py filePygame 菜单:调用另一个 .py 文件
【发布时间】:2013-08-22 16:34:05
【问题描述】:

我正在通过帮助朋友为他的交互式井字游戏制作菜单来学习 pygame。它很简单,一个标题和两个按钮用于开始和退出游戏。他已经完成了游戏,我只需要将我的菜单链接到他的游戏即可。

在玩弄了pygame之后,我终于完成了pygame窗口中出现的图片(没想到第一次看到空白窗口中出现的文字会这么好看!T^T)。我相信下一步是让图像像按钮一样调用另一个 python 文件。

这是我的菜单简单代码:

import pygame
from pygame.locals import *
from sys import exit

pygame.init()

resX, resY = 640, 480

windowObj = pygame.display.set_mode((resX,resY))

titleImg = pygame.image.load("title.png")
startImg = pygame.image.load("start.png")
exitImg =  pygame.image.load("exit.png")

def width_center(img):
    """For horizontally setting an image."""
    return resX/2 - x(img)/2

def height_center(img):
    """For vertically setting an image."""
    return resY/2 - y(img)/2

def x(img):
    """Width of object."""
    return img.get_width()
def y(img):
    """Height of object."""
    return img.get_height()

while True:
    pygame.display.update()
    windowObj.fill((255,255,255))

    windowObj.blit(titleImg,(width_center(titleImg), 30))
    #This I want to link:
    windowObj.blit(startImg,(width_center(startImg),height_center(startImg)-10))

    windowObj.blit(exitImg,(width_center(exitImg),height_center(exitImg)+y(startImg)))

    for i in pygame.event.get():
        if i.type == QUIT:
            exit()

简单地说,我想知道如何让 startImg 调用 TTTClick.py。他的 TTTClick.py 也应该有某种格式吗?

谢谢:)

【问题讨论】:

    标签: python import pygame


    【解决方案1】:

    如果是一个项目,可以有'title screen'状态和'game'状态。

    伪代码:

    class Game():
        def __init__(self):
            self.done = False
            self.state = "title"
    
        def game_draw(self):
            # game draw
    
        def game_update(self):
            # game event handling, and physics
    
        def title_draw(self):
            # title draw
    
        def title_update(self):
            # on event click
            self.state = "game"
    
        def loop(self):
            # main loop
            while not self.done:
                if state == 'title':
                    title_update()
                    title_draw()
                elif state == 'game':
                    game_update()
                    game_draw()
    
    if __name__ == "__main__":
        game = Game()
        game.loop()
    

    注意:xheight_center 等。已经存在于pygame.Rect

    # if Surface
    titleImage.get_rect().width
    
    # if Sprite
    titleImage.rect.width
    

    还有更多,rect.centerrect.centerx,请参阅http://www.pygame.org/docs/ref/rect.html 的完整列表

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多