为了账号安全,请及时绑定邮箱和手机立即绑定

如何在pygame中将两个文件放在一起?

如何在pygame中将两个文件放在一起?

当年话下 2023-05-23 10:19:47
我正在使用 pygame 制作游戏,我将每个部分制作在一个单独的文件中,例如主页、说明页面、实际游戏等,但我不知道如何将它们放在一起。我考虑过使用这段代码from graphics import*w = GraphWin("Window", 600,400)playing = Truewhile playing:    click = w.getMouse()    potato = click.getX()    carrot = click.getY()    if potato < 300 and carrot < 200:        newWin = GraphWin("New", 200, 200)    if potato > 300 and carrot > 200:        w.setBackground("blue")    if potato < 300 and carrot > 200:        playing = False    w.close()    n = GraphWin("Homepage", 500, 200)    n.getMouse()    n.close()但我仍然不知道如何将它们放在一起。你能帮我看看如何把这两个文件放在一起吗?这个文件是主页:from graphics import* import pygameimport sysimport random from time import sleeppadWidth = 500 #the width the of game padHeight = 600 # the length of the gamewhite = (255,255,255)black = (0,0,0)red = (255,0,0)def writeIns(text):    global gamePad    textfont = pygame.font.Font('Ranchers-Regular.ttf', 29) #textfont of the game message     text = textfont.render(text, True, red) #red text    textpos = (158,417)    gamePad.blit(text, textpos) #print the text    pygame.display.update()    def drawObject(obj, x, y):    global gamePad    gamePad.blit(obj, (int(x), int(y)))def initGame():    global gamePad, clock, background    pygame.init()    gamePad = pygame.display.set_mode((padWidth, padHeight))    pygame.display.set_caption('Shooting game') #the title of the game    clock = pygame.time.Clock()def runGame():    global gamePad, clock, background        onGame = False    while not onGame:        for event in pygame.event.get():            if event.type in [pygame.QUIT]:                pygame.quit()                sys.exit()                        drawObject(background, 0, 0) #display the background                 pygame.draw.rect(gamePad, black, (120,400,250,70))        writeIns('INSTRUCTIONS')                pygame.display.update()        clock.tick(60)    pygame.quit()       initGame()runGame()
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

要合并这些文件,您需要进行两个关键更改:

  • 将其他源文件导入主文件

  • 将导入的源代码转换为类以防止变量和函数重叠

这是工作代码。起始文件是 gamex.py,导入文件是 ghome.py 和 ginstructions.py。

gamex.py

from graphics import *


# import home and instructions

from ghome import home

from ginstructions import instructions



# call home screen

h = home()  # create instance of home

h.initGame()

h.runGame()


# call instructions screen

i = instructions()  # create instance of instructions

i.initGame()

i.runGame()



w = GraphWin("Window", 600,400)


playing = True

while playing:

    click = w.getMouse()

    potato = click.getX()

    carrot = click.getY()


    if potato < 300 and carrot < 200:

        newWin = GraphWin("New", 200, 200)

    if potato > 300 and carrot > 200:

        w.setBackground("blue")

    if potato < 300 and carrot > 200:

        playing = False


    w.close()

    n = GraphWin("Homepage", 500, 200)

    n.getMouse()

    n.close()    

ghome.py


from graphics import* 

import pygame

import sys

import random 

from time import sleep


class home():

    def __init__(self):

        self.padWidth = 500 #the width the of game 

        self.padHeight = 600 # the length of the game

        self.white = (255,255,255)

        self.black = (0,0,0)

        self.red = (255,0,0)


    def writeIns(self, text):

        global gamePad

        textfont = pygame.font.Font('Ranchers-Regular.ttf', 29) #textfont of the game message 

        text = textfont.render(text, True, self.red) #red text

        textpos = (158,417)

        gamePad.blit(text, textpos) #print the text

        pygame.display.update()

        

    def drawObject(obj, x, y):

        global gamePad

        gamePad.blit(obj, (int(x), int(y)))


    def initGame(self):

        global gamePad, clock, background

        pygame.init()

        gamePad = pygame.display.set_mode((self.padWidth, self.padHeight))

        pygame.display.set_caption('Shooting game') #the title of the game

        clock = pygame.time.Clock()


    def runGame(self):

        global gamePad, clock, background

        

        onGame = False

        while not onGame:

            for event in pygame.event.get():

                if event.type in [pygame.QUIT]:

                    pygame.quit()

                    sys.exit()

            if event.type == pygame.MOUSEBUTTONDOWN: break


#            self.drawObject(background, 0, 0) #display the background 

            pygame.draw.rect(gamePad, self.black, (120,400,250,70))

            self.writeIns('INSTRUCTIONS')

            pygame.display.update()

            clock.tick(60)


        pygame.quit()

ginstructions.py


import pygame

import sys

import random 

from time import sleep


class instructions():

    def __init__(self):

        self.padWidth = 500 #the width the of game 

        self.padHeight = 600 # the length of the game

        self.red = (255,0,0)


    def writeExit(self,text):

        global gamePad

        textfont = pygame.font.Font('Ranchers-Regular.ttf', 20) #textfont of the game message 

        text = textfont.render(text, True, self.red) #black text

        textpos = (625, 60)

        gamePad.blit(text, textpos) #print the text

        pygame.display.update()

        

    def drawObject(self,obj, x, y):

        global gamePad

        gamePad.blit(obj, (int(x), int(y)))


    def initGame(self):

        global gamePad, clock, instructions

        pygame.init()

        gamePad = pygame.display.set_mode((self.padWidth, self.padHeight))

        pygame.display.set_caption('shooting game') #the title of the game

        instructions = pygame.image.load('instructions.png') #import the background image

        clock = pygame.time.Clock()


    def runGame(self):

        global gamePad, clock, instructions

        onGame = False

        while not onGame:

            for event in pygame.event.get():

                if event.type in [pygame.QUIT]:

                    pygame.quit()

                    sys.exit()

            if event.type == pygame.MOUSEBUTTONDOWN: break

            self.drawObject(instructions, 0, 0)

            pygame.display.update()


            clock.tick(60)

            

        pygame.quit()


查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信