当前位置: 首页 > 知识库问答 >
问题:

在youtube上跟随Pyplay/Python教程时的语法错误

蒋岳
2023-03-14

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

我试过Newboston的“游戏开发教程-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))

屏幕。问题出在blit(bakcgorund,(0,0))命令上,当它出现语法错误时,会突出显示命令最右边的第二个括号。如果我删除它,它只会显示一个黑色的pygame窗口。有人能帮我吗?

共有2个答案

王宜
2023-03-14

你的括号不平衡;有2个左括号,3个右括号;这是一个结束括号太多:

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

您可能希望删除背景后面的右括号:

screen.blit(background, (0,0))
伯建安
2023-03-14

我更新了你的代码:

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()    
 类似资料:
  • 我有以下代码: 行:public static void main(String args[}){I得到三个错误:1.令牌“void”的语法错误,@expected 2.令牌的语法错误,classheader的结果相反3.令牌的语法错误,结构放错了 希望你们能帮帮我。 提前道谢。

  • 问题内容: 我正在看这里列出的代码,它们提供了一个非常有趣的结构来在线用Python编写“时钟”。我以前从未见过这种古怪的语法,而且老实说,我不知道它是如何工作的。这在Python中是完全黑魔法。但是,即使这不是编写作者意图的最Python方式,我仍然想知道它是如何工作的。 我的虽然过程: 如果持续时间已过,则返回True 作为int开始,但后来更改为lambda函数? 为什么每个清单的末尾都有清

  • Example Program # trace_example/main.py from recurse import recurse def main(): print('This is the main program.') recurse(2) if __name__ == '__main__': main() Tracing Execution $ pyt

  • 我目前在我的React项目中有一个圆球跟随光标。但是,我希望它只出现在光标悬停在按钮上的时候,而不是其他的。 有没有办法做到这一点? 这是密码本

  • 问题内容: 我正在尝试在Go中执行MERGE语句: 但是我得到了这个错误: 在MySQL中也是如此: 怎么了? 问题答案: 不支持,等效的是 插入…在重复的密钥更新上 尝试这个, 但请确保将其设置为或。

  • 本文向大家介绍易语言窗口平行跟随的操作方法,包括了易语言窗口平行跟随的操作方法的使用技巧和注意事项,需要的朋友参考一下 易语言其他窗口跟随启动窗口平行移动! 1、新建一个程序并设置好启动窗口的高度跟宽度。插入窗口(窗口1),将窗口1的高度跟启动窗口的高度设置为同等高度。 我这里设置的高度为400 2、左键双击启动窗口,进入到启动窗口程序集。 在启动窗口创建完毕的子程序下写入代码: 目的是为为了让窗