从零开始学Python游戏编程31-类3

发布于:2025-04-23 ⋅ 阅读:(19) ⋅ 点赞:(0)

2.6 run()方法

run()方法的作用是在while循环中调用以上方法,运行游戏。代码如图11所示。

图11 run()方法代码

其中,第43行控制while循环的是实例属性running,在图7所示的__init__()方法中定义;第44-46行代码分别调用了processInput()、update()和render()方法;第47行代码通过实例属性clock设置游戏的帧率。

3 通过实例化Game类运行游戏

在定义了游戏循环模式Game类之后,通过实例化该类,实现游戏的运行,代码如图12所示。

图12 通过实例化Game类运行游戏的代码

其中,图12所示的代码可以看作是整个游戏的主程序,当游戏代码运行后,首先执行的是第48行所示的代码。第48行队Game类进行实例化,即创建了该类的实例game;第49行通过实例game调用run()方法运行游戏;该方法会一直运行,直到当玩家按下了ESC按键或者游戏窗口右上角的关闭按键后,才会结束;第50行代码释放pygame加载的资源,整个游戏结束。

4 游戏完整代码

游戏完整代码如下所示。

import pygame

class Game():
    def __init__(self):
        pygame.init()
        self.window = pygame.display.set_mode((640, 480))
        pygame.display.set_caption('矩形移动游戏')
        pygame.display.set_icon(pygame.image.load('1.png'))
        self.clock = pygame.time.Clock()
        self.x = 120
        self.y = 120
        self.running = True
    def processInput(self):
        eventList = pygame.event.get()
        for event in eventList:
            if event.type == pygame.QUIT:
                self.running = False
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    self.x -= 8
                if event.key == pygame.K_RIGHT:
                    self.x += 8
                if event.key == pygame.K_UP:
                    self.y -= 8
                if event.key == pygame.K_DOWN:
                    self.y += 8
                if event.key == pygame.K_ESCAPE:
                    self.running = False
        
    def update(self):
        pass
    def render(self):
        self.window.fill((0,0,0))
        pygame.draw.rect(self.window, (0,0,255),(self.x, self.y, 400, 240))
        pygame.display.update()
    def run(self):
        while self.running:
            self.processInput()
            self.update()
            self.render()
            self.clock.tick(60)
game = Game()
game.run()
pygame.quit()


网站公告

今日签到

点亮在社区的每一天
去签到