百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

「好课堂在线」用python和pygame游戏编程入门-控制角色移动

off999 2024-10-14 12:16 53 浏览 0 评论

在上一节中我们知道了事件,以及如何捕捉键盘事件进行响应,本届我们结合第一节和上一节的内容,做一个用键盘控制角色移动的功能,代码如下:

# 用python和pygame游戏编程入门-控制角色移动 #

# 指定文件名 
background_image_filename = "C:/陈国华/好课堂资料/python/python资料/海底世界3.jpg"
mouse_image_filename = 'C:/陈国华/好课堂资料/python/python资料/章鱼1.png'
# 导入pygame库 
import pygame
# 导入一些常用的函数和常量 
from pygame.locals import *

# 初始化pygame,为使用硬件做准备 
pygame.init()

# 创建一个窗口
screen = pygame.display.set_mode([881,591], 0, 32)
# 设置窗口标题
pygame.display.set_caption("海底世界")
# 加载并转换图像
background = pygame.image.load(background_image_filename).convert()
kcursor = pygame.image.load(mouse_image_filename).convert_alpha()

# 游戏主循环
running = True
x, y = 400, 300
move_x, move_y = 0, 0

while running:
    for event in pygame.event.get():
        # 接收到退出事件后退出程
        if event.type == QUIT:
            running = False
        if event.type == KEYDOWN:
            # 键盘有按下
            if event.key == K_LEFT:
                # 按下的是左方向键的话,把 x 坐标减一
                move_x = -10
            elif event.key == K_RIGHT:
                # 右方向键加一
                move_x = 10
            elif event.key ==K_UP:
                move_y = -10
            elif event.key == K_DOWN:
                move_y = 10
        elif event.type ==KEYUP:
            # 如果用户开放了键盘,图就不要动了
            move_x = 0
            move_y = 0

        # 计算出新的坐标
        x += move_x
        y += move_y

        # screen.fill([0, 0, 0])
    # 将背景图画上去
    screen.blit(background, (0, 0))
    screen.blit(kcursor, (x, y))
    # 刷新一下画面
    pygame.display.update()

pygame.quit()

当我们运行这个程序的时候,按下方向键就可以把章鱼移动,但是等等!为什么我只能按一下动一下啊……

因为KEYDOWN事件只有在你按下键的那一刻才发生一次,也就是for循环需要有事件发生才会再次执行,你可以试试在按下方向键不松开的时候不停的移动鼠标,这时候章鱼就会一直移动了。

啊??这么麻烦,怎么修改呢?

因为当你按下按键的时候变量值已经进行了修改,所以只需要把计算新坐标后面的代码缩进调整一下,放在跟for循环并列的位置,这样事件发生只会修改坐标的变化数据,不断更新坐标的任务就在while循环里执行了。

修改后的代码;


# 用python和pygame游戏编程入门-控制角色移动 #

# 指定文件名 
background_image_filename = "C:/陈国华/好课堂资料/python/python资料/海底世界3.jpg"
mouse_image_filename = 'C:/陈国华/好课堂资料/python/python资料/章鱼1.png'
# 导入pygame库 
import pygame
# 导入一些常用的函数和常量 
from pygame.locals import *

# 初始化pygame,为使用硬件做准备 
pygame.init()

# 创建一个窗口
screen = pygame.display.set_mode([881,591], 0, 32)
# 设置窗口标题
pygame.display.set_caption("海底世界")
# 加载并转换图像
background = pygame.image.load(background_image_filename).convert()
kcursor = pygame.image.load(mouse_image_filename).convert_alpha()

# 游戏主循环
running = True
x, y = 400, 300
move_x, move_y = 0, 0

while running:
    for event in pygame.event.get():
        # 接收到退出事件后退出程
        if event.type == QUIT:
            running = False
        if event.type == KEYDOWN:
            # 键盘有按下
            if event.key == K_LEFT:
                # 按下的是左方向键的话,把 x 坐标减一
                move_x = -1
            elif event.key == K_RIGHT:
                # 右方向键加一
                move_x = 1
            elif event.key ==K_UP:
                move_y = -1
            elif event.key == K_DOWN:
                move_y = 1
        elif event.type ==KEYUP:
            # 如果用户开放了键盘,图就不要动了
            move_x = 0
            move_y = 0

        # 计算出新的坐标
    x += move_x
    y += move_y

    # screen.fill([0, 0, 0])
    # 将背景图画上去
    screen.blit(background, (0, 0))
    screen.blit(kcursor, (x, y))
    # 刷新一下画面
    pygame.display.update()



相关推荐

千千静听官网(十大免费音乐网站)

千千静听起源于2002年,千千静听是一款完全免费的音乐播放软件,集播放、音效、转换、歌词等众多功能于一身。其小巧精致、操作简捷、功能强大的特点,深得用户喜爱,被网友评为中国十大优秀软件之一,并且成为目...

成品ppt网站国外(免费生成ppt的网站)

免费ppt成品怎么下载?不确定您要下载哪类的ppt。如果想要下载初中语文课件的话,免费成品ppt可以通过无忧无虑中学语文网下载,上面按照年级,教材版本分门别类的课件资源,教案参考,还有相应的练习题,甚...

免费的连连看游戏大全(连连看游戏app推荐)

在4399小游戏里,点击儿童小游戏,里面就有不及时的连连看。《连连看》只要将相同的两张牌用三根以内的直线连在一起消除即可。连连看,又称对对卡,是指图案配对的一种益智游戏,有多种形式,如卡片游戏、电子...

图片文字提取免费工具(图片文字提取免费工具在线)

1.打开手机,进入图库,点击打开一张图片。2.点击【分享】图标进入页面。3.点击【提取文字】。注意,只有手机已安装WPS才会出现此图标。第一种方法需要用到我们的聊天神器:QQ,进入任一聊天框并给...

一键群发500微信群软件(有没有微信一键群发5000人的软件)
一键群发500微信群软件(有没有微信一键群发5000人的软件)

1/8进入设置打开微信进入个人页面后,点击【设置】。2/8进入通用点击【通用】。3/8进入辅助功能点击【辅助功能】。4/8进入群发助手点击【群发助手】。5/8开始群发点击【开始群发】。6/8新建群发点击下方【新建群发】。7/8选择好友在这里...

2026-01-23 06:43 off999

万能驱动离线安装包(万能驱动离线版win10)

一、驱动人生()1、驱动人生为了针对用户的离线使用需求,专门推出了离线版的软件,能够在没有网络的情况下使用。2、通过内置的网卡驱动程序,帮助用户优先安装网卡驱动,进而可以连接网络并继续在网上下载安装驱...

中国象棋天天象棋(中国象棋天天象棋手机版)

天天象棋中的专区对局就是ai区,也就是软件区,专门给引擎下棋的,以前3.0版本里有,我玩过,没啥特别的,一开始匹配的都是新手,因为那个模式有独立的段位机制,后面更新之后就给禁掉了,跟ai对局没意思,还...

百度图片(百度图片官网)
  • 百度图片(百度图片官网)
  • 百度图片(百度图片官网)
  • 百度图片(百度图片官网)
  • 百度图片(百度图片官网)
苹果恢复大师(苹果恢复大师收费吗)

苹果恢复大师是可靠的苹果手机数据恢复软件,兼容Windows和Mac平台,支持iOS设备上的多种数据恢复和备份,如微信聊天记录,短信,通讯录,照片等,具体操作也是十分简单。苹果恢复大师一共有三种恢复模...

gg修改器下载安装(gg修改器下载安装免root)

OPPO手机下载gg修改器方法如下:可以打开在桌面找的浏览器,我们打开进入,然后再浏览器上面搜索框,搜索GG修改器,找到之后,我们点击GG修改器官网,然后就可以在GG修改器里面的官网下载了,之后我们点...

磁力吧最佳的磁力(磁力吧最佳的磁力是多少)

磁力片玩具是一种可以激发儿童创造力和想象力的玩具,市面上有许多品牌可以选择。在选择磁力片玩具时,可以考虑以下因素:品牌信誉:选择知名品牌,可以更加放心地使用。质量:质量好的磁力片玩具可以使用更长时间,...

文件恢复(文件恢复大师是真的吗)

方法一:从回收站恢复删除文件回收站是操作系统提供的一个文件夹,用来临时存放用户删除的各种数据。存放于回收站中的资料,可以被还原到删除之前的原始位置,也可以从回收站中删除。因此,回收站给用户提供了一个&...

腾讯怎么找到真人客服(微信怎么直接打人工)
  • 腾讯怎么找到真人客服(微信怎么直接打人工)
  • 腾讯怎么找到真人客服(微信怎么直接打人工)
  • 腾讯怎么找到真人客服(微信怎么直接打人工)
  • 腾讯怎么找到真人客服(微信怎么直接打人工)
世界公认十大手游排行榜(全球排名第一的游戏)
世界公认十大手游排行榜(全球排名第一的游戏)

传奇十大金牌指挥:霸气王者战犯、布拉格佛祖、乱世征战英豪、传奇人物深蓝、湖北焦点、傲天メ皇霸道、湖南小三、湖南鱼刺、湖南求剑客、江西小毛拓展资料:《热血传奇》是盛趣游戏2001年推出的一款大型多人在线角色扮演游戏(MMO...

2026-01-23 04:15 off999

英语单词记忆方法技巧(英语单词记忆方法技巧操场怎么写)

记单词的方法很多,比如直拼法、拆分法、增减字母法、对比记忆法、构词法、联想记忆法、分类记忆法、以旧带新法、语境记忆法等。接下来具体介绍五种快速记忆法。直拼法直拼法也叫自然拼读法。是英语单词记忆比较省力...

取消回复欢迎 发表评论: