pygame OOP移动一个矩形

时间:2016-01-05 03:09:27

标签: python oop pygame

我正在学习python,而我正在尝试编写一个蛇游戏。 我是一个绝对的初学者,python是我的第一个编程语言,这是我第一次尝试用OOP做事。

我知道已有类似问题的答案,但我对OOP概念的理解太少,无法解决我的问题。 我需要帮助解决我的特定问题和代码。

<ion-tab icon = "ion-ios-medkit" title = "tab1" ui-sref = "tabs.tab1">
 <ion-nav-view name = "tab-tab1"> </ ion-nav-view>
</ ion-tab>
<ion-tab icon = "ion-clipboard" title = "tab2" ui-sref = "tabs.tab2">
 <ion-nav-view name = "tab-tab2"> </ ion-nav-view>
</ ion-tab>
<ion-tab icon = "ion-clipboard" title = "tab3" ui-sref = "tabs.tab3">
 <ion-nav-view name = "tab-tab3"> </ ion-nav-view>
</ ion-tab>

当我运行代码时,矩形会拉伸&#39;按键方向我按下几秒钟后出现大量错误,程序停止。

为了让它发挥作用,我需要更改什么?

1 个答案:

答案 0 :(得分:0)

这可能会让你开始。

import pygame

WHITE = (255,255,255)

class init_window(object): 

    def __init__(self, width, height):
        self.width = width
        self.height = height
        self.gameDisplay = pygame.display.set_mode((self.width, self.height))
        pygame.display.set_caption('Snake')


    def draw_snake(self, startx, starty, width, height):

        pygame.draw.rect(self.gameDisplay, WHITE, [startx, starty, width, height])
        pygame.display.update()
        init_window.move_snake(self, startx, starty, (width, height))


    def move_snake(self, x, y, rectsize):

        FPS = 60        
        clock = pygame.time.Clock()
        rectheight, rectwidth = rectsize

        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()

                if event.type == pygame.KEYDOWN:

                    x_change = 0
                    y_change = 0

                    if event.key == pygame.K_LEFT:
                        x_change = -5
                    if event.key == pygame.K_RIGHT:
                        x_change = 5
                    if event.key == pygame.K_UP:
                        y_change = -5
                    if event.key == pygame.K_DOWN:
                        y_change = 5

                    x += x_change
                    y += y_change

                    self.gameDisplay.fill((0,0,0))

                    pygame.draw.rect(self.gameDisplay, WHITE, [x, y, rectheight, rectwidth])
                    pygame.display.update()

                    clock.tick(FPS)

if __name__ == '__main__':

    width, height = 800, 600
    pygame.init()

    window = init_window(width, height)
    window.draw_snake(width//2, height//2, 50,50)

我刚拿出导致退出的递归。我希望这能实现您的目标。

另请注意,有必要在每次抽奖self.gameDisplay.fill之前清除屏幕,否则矩形会在屏幕周围留下痕迹。