请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 14815|回复: 8

pygame键盘输入无效问题

[复制链接]

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-5 12:24:21 |显示全部楼层
在学一个pygame 的时候,遇到了按键没响应的问题(没报错),希望帮忙解决下,打算学完这个小游戏后分享给大家@crossin先生,pygame1.91;python2.7;win32;
#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

用到的图片我加在附件上了,使用的时候需要改一下加载路径


castle.png
dude.png
grass.png
回复

使用道具 举报

0

主题

0

好友

19

积分

新手上路

Rank: 1

发表于 2013-9-5 12:41:31 |显示全部楼层
使用wasd键
回复

使用道具 举报

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-5 13:08:02 |显示全部楼层
ixifanny 发表于 2013-9-5 12:41
使用wasd键

就是按得wasd键啊,但是没反应,你试了行不行啊?
回复

使用道具 举报

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-5 14:24:05 |显示全部楼层
额,问题解决了,原因是if event.type == pygame.KEYDOWN:代码块里的 keys[n] == True 改为 keys[n] = True ........低级错误,一开始怎么也看不出来,下午又仔细检查了一边才发现。。。。
回复

使用道具 举报

0

主题

0

好友

65

积分

注册会员

Rank: 2

发表于 2013-9-5 15:31:05 |显示全部楼层

player = pygame.image.load('resources/images/dude.png')

这个路径要怎么设置啊?

我直接和源代码放在一起,直接
player = pygame.image.load('dude.png')

显示 can't open 啊。。。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-5 19:13:35 |显示全部楼层
liqing215 发表于 2013-9-5 15:31
player = pygame.image.load('resources/images/dude.png')

这个路径要怎么设置啊?

你是从哪里运行的?,命令行下的话,你得进入到代码所在目录
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-5 19:13:37 |显示全部楼层
liqing215 发表于 2013-9-5 15:31
player = pygame.image.load('resources/images/dude.png')

这个路径要怎么设置啊?

你是从哪里运行的?,命令行下的话,你得进入到代码所在目录
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

65

积分

注册会员

Rank: 2

发表于 2013-9-5 21:09:54 |显示全部楼层
crossin先生 发表于 2013-9-5 19:13
你是从哪里运行的?,命令行下的话,你得进入到代码所在目录

直接在IDLE里啊, 图片和代码是放在一起的。。

和之前打飞机那个一样
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-5 21:25:27 |显示全部楼层
liqing215 发表于 2013-9-5 21:09
直接在IDLE里啊, 图片和代码是放在一起的。。

和之前打飞机那个一样

那不应该啊
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-10-8 04:02 , Processed in 0.017370 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部