python 写游戏好简单啊,我用键盘可以随意控制角色了【python 游戏实战 04】

news/2025/1/11 2:04:32/

前言

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。

若有想学习的内容可以在评论区留言,根据大家的要求持续更新。点赞过十万就算化成灰我也更新下一篇。(肯定不到,也会更的。)

有问题也可以在评论区留言,也可以私聊我加我好友共同交流一起进步~

我的其它教程

教程点击进去将会有目录

《看聊天记录都学不会C语言?太菜了吧(1)我在大佬群里问基础问题没人理?——学习建议

《大学生C语言作业、习题100例白话详解》

目录

《看聊天记录都学不会Python到游戏实战?太菜了吧》python 写游戏好简单啊,我用键盘可以随意控制角色了【python 游戏实战 04】—— 键盘控制角色移动

《看聊天记录都学不会Python到游戏实战?太菜了吧》游戏角色开始动起来了,真帅!【python 游戏实战 03】—— 角色移动

《看聊天记录都学不会Python到游戏实战?太菜了吧》这是我第一次使用代码创建出一个窗口【python 游戏实战 02】—— 创建游戏场景

《看聊天记录都学不会Python到游戏实战?太菜了吧》这是我第一次使用代码创建出一个窗口【python 游戏实战 01】—— 创建窗口

《看聊天记录都学不会Python到游戏实战?太菜了吧》(12)python 的列表我从没想过会那么好用—— 列表

《看聊天记录都学不会Python到游戏实战?太菜了吧》(11)python里面while到底有多少知识点—— break continue

《看聊天记录都学不会Python到游戏实战?太菜了吧》(10)无底洞的循环—— 循环初窥

《看聊天记录都学不会Python到游戏实战?太菜了吧》(9)集万家之长不死 python—— 导包

《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧—— 数字游戏开始做 导包

《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马—— 自定义函数

《看聊天记录都学不会Python到游戏实战?太菜了吧》(6)不会这个知识点代码越写越难—— and or 逻辑运算

《看聊天记录都学不会Python到游戏实战?太菜了吧》(5)用前朝的剑斩今朝的官——if…else

《看聊天记录都学不会Python到游戏实战?太菜了吧》(4)小白不知道这个知识点将会错漏百出——if 与 层级

《看聊天记录都学不会Python到游戏实战?太菜了吧》(3)都说123是字符不是数字——输入与类型

《看聊天记录都学不会Python到游戏实战?太菜了吧》(2)在python中加号竟然如此善变——变量与运算

《看聊天记录都学不会Python到游戏实战?太菜了吧》(1)装载Python神器!亮剑!——helloworld


作者简介

作者名:1_bit

简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。

博客地址:https://i1bit.blog.csdn.net


🐰小C:小媛,上一节我们绘制了一个场景,移动了角色,那么这一节我们就开始控制主角并且让他进行移动吧?

👸小媛:我怎么感觉你突然变得好心了,以前每一节就讲一点内容,然后就开始跟我拌嘴水字数,这一节怎么直奔主题?😂

🐰小C:有嘛?是你跟我拌嘴的好嘛?你不信去看聊天记录。

👸小媛:真的吗?那还不是你在水字数。

🐰小C:哈哈哈,这一节不水了,开始玩真的吧。

👸小媛:赶紧的,你又水了 224 个md字数了。😂

🐰小C:行,我们先看一下我们上一节的代码。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
hero=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
pygame.display.set_icon(icon)
heroX=250 #x坐标
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()heroX=heroX-3screen.blit(bg,(0,0))screen.blit(hero,(heroX,680))pygame.display.update()

🐰小C:上一节我们只是使用了代码对主角进行移动,那么现在我们改一下,我们按上,主角就往上走、按下主角就往下走,其它按键依次类推如何?

👸小媛:行,你说啥就是啥,终于不废话了。 😰

🐰小C:不不不,还是需要点情节来让整个氛围轻松的。

👸小媛:赶紧吧,别废话,真是禁不起夸。

🐰小C:哈哈哈,其实我们刚刚已经获取到了这个游戏中发生的所有事件 pygame.event.get(),我们只是从获取的事件中判断是否做了退出事件,那么在这里我们只需要再判断是否按下了特定的键,那么就可以对特定的键做出反应了。

👸小媛:然后根据上一节所学,我们只需要根据不同按键控制这个主角下一次绘制所在的位置就可以了吧?

🐰小C:是的,我们首先判断按下什么键吧。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
hero=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()if event.type==pygame.KEYDOWN:if event.key == pygame.K_RIGHT:print('→')elif event.key == pygame.K_LEFT:print('←')elif event.key == pygame.K_UP:print('↑')elif event.key == pygame.K_DOWN:print('↓')screen.blit(bg,(0,0))screen.blit(hero,(heroX,680))pygame.display.update()

👸小媛:if event.key == pygame.K_RIGHT 就是判断是否按下的键吗?

🐰小C:是的,event.key 表示具体按下了什么键,如果 event.key 等于 pygame.K_RIGHT 那么就表示按下了右键头,那么就运行 print('→') 输出打印出 → 箭头。

👸小媛:明白了。然后 pygame.K_LEFT 是按下了左键、pygame.K_UP 表示按下上键、pygame.K_DOWN 表示按下了下键? 😶

🐰小C:是的,但是我们需要注意,必须是按下键后这个时间才会有 event.key 中的 key 这个类型,如果你没按下是判断不出来按下了什么键,所以前面 if event.type==pygame.KEYDOWN: 这句代码至关重要,表示了你按下键后才进行判断。你可以运行程序感受一下。

👸小媛:哈哈哈,好好玩,我按下什么就显示什么。 😎

🐰小C:都正确响应了吧?

👸小媛:是的。

🐰小C:那么我们接下来就需要控制角色进行移动了。

👸小媛:我觉得有点会了,但是还需要你写出来看一下,我总感觉我会出错。

🐰小C:我们先控制角色左右移动吧?

👸小媛:可以呀,没问题。 😎

🐰小C:我们知道,在这个屏幕中左右是控制 X 坐标,X越大那么越靠右,X越小那么就越靠左,我们按下左键的时候 X 轴的值就应该变小,如果按下右键那么 X 轴的值就应该越大。我们只需要在按下左右键的时候给一个变量赋予一个正值或者负值,正值表示往右负值表示往左,并且每次 hero 主句的 X 轴的值加上这个值就可以了。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
hero=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
heroX=250
heroY=680
stepX=0
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()if event.type==pygame.KEYDOWN:if event.key == pygame.K_RIGHT:stepX=5elif event.key == pygame.K_LEFT:stepX=-5elif event.key == pygame.K_UP:print('↑')elif event.key == pygame.K_DOWN:print('↓')heroX+=stepXscreen.blit(bg,(0,0))screen.blit(hero,(heroX,heroY))pygame.display.update()

👸小媛:你在按下右键的时候给予了 stepX 变量正值,按下左键给予了 stepX 键负值,然后每次循环 heroX 就加上这个 stepX 值,这样按下左就可以一直往左?按下右就可以一直往右?

🐰小C:是的。

👸小媛:所以你把 hero 的 Y 值使用了变量 heroY,这样也是为了方便操作吧?

🐰小C:是的,观察挺仔细,注意,我在循环前是创建了这几个变量的。

heroX=250
heroY=680
stepX=0

👸小媛:明白。

🐰小C:那我给你一个完整的代码吧。

import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
hero=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
heroX=250
heroY=680
stepX=0
stepY=0
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()if event.type==pygame.KEYDOWN:if event.key == pygame.K_RIGHT:stepX=5elif event.key == pygame.K_LEFT:stepX=-5elif event.key == pygame.K_UP:stepY=-5elif event.key == pygame.K_DOWN:stepY=5heroX+=stepXheroY+=stepYscreen.blit(bg,(0,0))screen.blit(hero,(heroX,heroY))pygame.display.update()

👸小媛:上面的 stepY 就是新创建的变量用来判断是按上还是按下?

🐰小C:是的,跟 stepX 一样。

👸小媛:哈哈哈,可以移动了。 😎


http://www.ppmy.cn/news/157867.html

相关文章

PyGame键盘

一、游戏设备 玩过游戏的都知道鼠标和键盘是游戏的不可或缺的输入设备。键盘可以控制有限的方向和诸多的命令操作,而鼠标更是提供了全方位的方向和位置操作。不过这两个设备并不是为游戏而生,专业的游戏手柄给玩家提供了更好的操作感,加上力反…

linux umask值的用法

概念 user\group\others:rwx-rwx-rwxr-read,数值w-write,数值2x-execute,数值1root账号对目录的操作权限777,对文件的操作权限为666。普通账号对目录默认权限是777-022755,对文件的操作权限是666-022644 命令行 who…

【游戏引擎Easy2D】三分钟学会游戏的控制移动,键盘识别详解

【游戏引擎Easy2D】三分钟学会游戏的控制移动,键盘识别详细 🧛‍♂️iecne个人主页:点赞关注收藏评论支持哦~💡每天关注iecne的作品,一起进步✨一起学习内容专栏:C保姆级入门教程 C每日一题 C游戏设计教程…

常见的五种排序

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…

谷歌前搜索与AI部门老大昨日刚卸任,今天就被苹果挖走向库克汇报

▼ 点击上方蓝字 关注网易智能 为你解读AI领域大公司大事件,新观点新应用 图:约翰詹南德雷亚(John Giannandrea) 【网易智能讯 4月4日消息】苹果公司今日宣布聘请昨日离职的谷歌前搜索与AI部门高级副总裁约翰詹南德雷亚&#xff0…

【文章汇总】嵌入式Linux公众号

据悉,深圳某工程师沦为C语言笔试枪手 修改cmdline 把内存改成512MB 上拉电阻的作用

没有今天的百度,难道它真的天亮了?

loonggg 读完需要 10分钟 速读仅需 4 分钟 百度,昨天在港二次上市。 百度一艘被移动互联网时代落下的大船,总感觉从 10 年到 20 年,这十年间像是被搁浅了一般。 但是,现实却真的如此呢?在 2000 年 - 2010 年之间&#…

模型部署到移动端_模型压缩+编译器优化,使AI算法在移动端性能超越专用硬件...

作者 | 王言治,美国东北大学电子与计算机工程系助理教授 出品 | AI科技大本营(ID:rgznai100) 近年来,机器学习(Machine Learning)领域的研究和发展可谓是与日俱新,各式各样与机器学习相关的研究成果与应用层出不穷(如图像识别,自动…