1

我刚刚下载了 python 3.3.2 和pygame-1.9.2a0.win32-py3.3.msi. 我决定在 youtube 上尝试一些教程,看看它们是否有效。

我已经尝试过 thenewboston 的“游戏开发教程 - 2 - 基本 Pygame 程序”,看看它是否有效。它应该产生一个黑色背景和一个鼠标球(或者我认为)。当我尝试运行它时会出现语法错误,如果我删除它只会产生一个黑色的 pygame 窗口。这是代码:

bgg="bg.jpg"
ball="ball.png"

import pygame, sys
from pygame.locals import *

pygame.init()
screen=pygame.display.set_mode((540,341),0,32)

background=pygame.image.load(bgg).convert()
mouse_c=pygame.image.load(ball).convert_alpha()

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

    screen.blit(background), (0,0))

screen.blit(bakcgorund, (0,0))命令是问题所在,当它出现语法错误时,它会突出显示命令最右侧的第二个括号。如果我删除它,它只会显示一个黑色的 pygame 窗口。谁能帮我?

4

2 回答 2

1

你的括号不平衡;有 2 个左括号和 3 个右括号;那是一个右括号太多了:

screen.blit(background), (0,0))
#     -----^    ------^    ---^ 

您可能希望在 之后删除右括号background

screen.blit(background, (0,0))
于 2013-07-20T16:32:31.593 回答
1

我更新了你的代码:

import pygame
from pygame.locals import * 
#about: pygame boilerplate

class GameMain():
    # handles intialization of game and graphics, as well as game loop
    done = False

    def __init__(self, width=800, height=600):
        """Initialize PyGame window.

        variables:
            width, height = screen width, height
            screen = main video surface, to draw on

            fps_max = framerate limit to the max fps
            limit_fps = boolean toggles capping FPS, to share cpu, or let it run free.
            now = current time in Milliseconds. ( 1000ms = 1second)
        """
        pygame.init()

        # save w, h, and screen
        self.width, self.height = width, height
        self.screen = pygame.display.set_mode(( self.width, self.height ))
        pygame.display.set_caption( "pygame tutorial code" )        

        self.sprite_bg = pygame.image.load("bg.jpg").convert()
        self.sprite_ball = pygame.image.load("ball.png").convert_alpha()


    def main_loop(self):
        """Game() main loop."""
        while not self.done:
            self.handle_events()        
            self.update()
            self.draw()

    def draw(self):
        """draw screen"""
        self.screen.fill(Color('darkgrey'))

        # draw your stuff here. sprites, gui, etc....        
        self.screen.blit(self.sprite_bg, (0,0))
        self.screen.blit(self.sprite_ball, (100,100))


        pygame.display.flip()

    def update(self):
        """physics/move guys."""
        pass

    def handle_events(self):
        """handle events: keyboard, mouse, etc."""
        events = pygame.event.get()
        kmods = pygame.key.get_mods()

        for event in events:
            if event.type == pygame.QUIT:
                self.done = True
            # event: keydown
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE: self.done = True

if __name__ == "__main__":         
    game = GameMain()
    game.main_loop()    
于 2013-07-20T23:44:50.363 回答