首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏菜单:调用另一个.py文件

游戏菜单:调用另一个.py文件
EN

Stack Overflow用户
提问于 2013-08-22 16:34:05
回答 1查看 1.2K关注 0票数 2

我通过帮助一位朋友为他的互动TicTacToe游戏制作菜单来学习游戏。这很简单,一个标题和两个按钮,开始和退出游戏。他已经完成了游戏,我只需要链接我的菜单到他的游戏。

在摆弄玩偶之后,我终于完成了在游戏窗口中出现的图片(我从没想过第一次在空白窗口看到文本会如此漂亮!)( T^T)我相信下一步是让图像像按钮一样调用另一个python文件。

下面是菜单的简单代码:

代码语言:javascript
复制
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也应该有特定的格式吗?

谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 22:04:13

如果是一个项目,你可以有‘标题屏幕’状态,和‘游戏’状态。

Psuedo代码:

代码语言:javascript
复制
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

代码语言:javascript
复制
# if Surface
titleImage.get_rect().width

# if Sprite
titleImage.rect.width

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18386198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档