为什么我的python pygame代码不起作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的python pygame代码不起作用?相关的知识,希望对你有一定的参考价值。

我正在观看由newsboston http://www.youtube.com/watch?v=9YWzFcHMz78&feature=share&list=EC8E21BDD0981FDF66在youtube上的教程,我正在复制他的代码,但我的工作不起作用。每当我按下向下箭头键时,整个程序就会冻结,不会让我退出。我正在使用python 3.3。请帮忙。这是我的代码。

grey="grey.jpg"
circle="circle.png"

import pygame, sys
from pygame.locals import*

pygame.init()
screen=pygame.display.set_mode((1278,990),0,32)

background=pygame.image.load(grey).convert()
pic=pygame.image.load(circle).convert()

x,y=0,0
movex,movey=0,0

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type==KEYDOWN:
            if event.key==K_LEFT:
                movex=-1
            elif event.key==K_RIGHT:
                movex=+1
            elif event.key==K_UP:
                movey=-1
            elif event.key==K_DOWN:
                movey=+1
        if event.type==KEYUP:
            if event.key==K_LEFT:
                movex=0
            elif event.key==K_RIGHT:
                movex=0
            elif event.key==K_UP:
                movey=0
            elif event.key==K_Down:
                movey=0
    x+=movex
    y+=movey

    screen.blit(background, (0,0))
    screen.blit(pic,(x,y))

    pygame.display.update()
答案

快速运行代码:

$ python test1.py 
Traceback (most recent call last):
  File "test1.py", line 37, in <module>
    elif event.key==K_Down:
NameError: name 'K_Down' is not defined

程序在向下箭头按下时崩溃时显示错误。

崩溃是由于一个错字,当你需要“K_DOWN”时你有“K_Down”。

更正代码:

grey="grey.jpg"
circle="circle.png"

import pygame, sys
from pygame.locals import*

pygame.init()
screen=pygame.display.set_mode((1278,990),0,32)

background=pygame.image.load(grey).convert()
pic=pygame.image.load(circle).convert()

x,y=0,0
movex,movey=0,0

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type==KEYDOWN:
            if event.key==K_LEFT:
                movex=-1
            elif event.key==K_RIGHT:
                movex=+1
            elif event.key==K_UP:
                movey=-1
            elif event.key==K_DOWN:
                movey=+1
        if event.type==KEYUP:
            if event.key==K_LEFT:
                movex=0
            elif event.key==K_RIGHT:
                movex=0
            elif event.key==K_UP:
                movey=0
            elif event.key==K_DOWN:
                movey=0
    x+=movex
    y+=movey

    screen.blit(background, (0,0))
    screen.blit(pic,(x,y))

    pygame.display.update()

以上是关于为什么我的python pygame代码不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

在游戏循环、Python2 和 Pygame 中实现主菜单

pip install pygame 在 Windows 8.1 中不起作用,但是我已经通过( C:\Python34\ )给出了路径。我该怎么办? [复制]

Pygame blit图像与鼠标事件

pyAudio 中生成的声音在 Pygame 中不起作用

在 buildozer 上使用 pygame 构建 apk 不起作用

为啥我的 python 串行代码不起作用,而从 arduino 串行监视器发送相同的数据?