初次尝试pygame,遇到了按键盘没响应的问题,求助

林夕_信仰 发布于 2013/09/05 11:10
阅读 1K+
收藏 0
跟着那个12岁的少年学pygame的时候,遇到点问题,原文地址:青少年如何使用Python开发游戏

http://www.oschina.net/translate/beginning-game-programming-for-teens-with-python?p=1#comments

做完第三步之后,怎么按键盘都反应,也没有报错,win32,pygame1.9.1,python2.7

#1 - Import library
import pygame
from pygame.locals import *

#2 - Initialize the game
pygame.init()
width, height = 640, 480
screen = pygame.display.set_mode((width, height))
keys = [False, False, False, False]
playerpos = [100, 100]

#3 - Load images
player = pygame.image.load('resources/images/dude.png')
grass = pygame.image.load('resources/images/grass.png')
castle = pygame.image.load('resources/images/castle.png')

#4 - keep looping through
while 1:
    #5 - clear the screen before drawing it again
    screen.fill(0)
    
    #6 - draw the screen elements
    for x in range(width/grass.get_width()+1):
        for y in range(height/grass.get_height()+1):
            screen.blit(grass,(x*100, y*100))
    screen.blit(player, playerpos)
    screen.blit(castle, (0,30))
    screen.blit(castle, (0,135))
    screen.blit(castle, (0,240))
    screen.blit(castle, (0,345))
    
    
    #7 - update the screen
    pygame.display.flip()
    
    #8 - loop through the events
    for event in pygame.event.get():
        #check if the event is the X button
        if event.type == pygame.QUIT:
            #if it is quit the game
            pygame.quit()
            exit(0)
        if event.type == pygame.KEYDOWN:
            if event.key == K_w:
                keys[0] == True
            elif event.key == K_a:
                keys[1] == True
            elif event.key == K_s:
                keys[2] == True
            elif event.key == K_d:
                keys[3] == True
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_w:
                keys[0] = False
            elif event.key == pygame.K_a:
                keys[1] = False
            elif event.key == pygame.K_s:
                keys[2] = False
            elif event.key == pygame.K_d:
                keys[3] = False
                
    #9 - Move player
    if keys[0]:
        playerpos[1] -= 5
    elif keys[2]:
        playerpos[1] += 5
    if keys[1]:
        playerpos[0] -= 5
    elif keys[3]:
        playerpos[0] += 5

 

加载中
0
林夕_信仰
林夕_信仰
问题已解决。。。原因是if event.type == pygame.KEYDOWN:代码块里的 keys[n] == True 改为 keys[n] = True ........低级错误,一开始检查了很多遍,怎么也看不出来,下午又仔细检查了一边才发现。。。。
返回顶部
顶部