第一次改写游戏代码,按键左右移动相对比较容易查找学习,更在意的是上下移动的问题。
下面举个例子,放代码

settings. py

class Settings():def __init__(self):self.screen_width = 1200self.screen_height = 800self.bg_color = (230,230,230)#火箭的速度self.rocket_speed_factor = 1.5

rocket. py

import pygameclass Rocket():def __init__(self,lr_settings,screen):self.screen = screenself.lr_settings =lr_settings#加载游戏图像和初始化规格属性self.image = pygame.image.load('images/rocket.bmp')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()#设置初始位置self.rect.centerx = self.screen_rect.centerxself.rect.centery = self.screen_rect.centery#在火箭的属性center中存储小数值self.centerx = float(self.rect.centerx)self.centery = float(self.rect.centery)#移动标志self.moving_right = Falseself.moving_left = Falseself.moving_up = Falseself.moving_down = Falsedef update(self):"""根据移动标志调整火箭的位置"""#更新火箭的center值,而不是rect#注意self.rect.right和self.screen_rect.right的标点符号if self.moving_right and self.rect.right < self.screen_rect.right:self.centerx += self.lr_settings.rocket_speed_factorif self.moving_left and self.rect.left > 0:self.centerx -= self.lr_settings.rocket_speed_factorif self.moving_down and self.rect.bottom< self.screen_rect.bottom:self.centery += self.lr_settings.rocket_speed_factorif self.moving_up and self.rect.top > 0:self.centery -= self.lr_settings.rocket_speed_factor#根据self.centerx/y更新rect对象self.rect.centerx = self.centerxself.rect.centery = self.centerydef blitme(self):self.screen.blit(self.image,self.rect)

game_functions. py

import sys,pygamedef check_keydown_events(event, rocket):"""响应按键"""if event.key == pygame.K_RIGHT:rocket.moving_right = Trueelif event.key == pygame.K_LEFT:rocket.moving_left = Trueelif event.key == pygame.K_UP:rocket.moving_up = Trueelif event.key == pygame.K_DOWN:rocket.moving_down = Truedef check_keyup_events(event, rocket):"""响应松开"""if event.key == pygame.K_RIGHT:rocket.moving_right = Falseelif event.key == pygame.K_LEFT:rocket.moving_left = Falseelif event.key == pygame.K_UP:rocket.moving_up = Falseelif event.key == pygame.K_DOWN:rocket.moving_down = Falsedef check_events(rocket):"""响应按键和鼠标事件"""for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:check_keydown_events(event, rocket)elif event.type == pygame.KEYUP:check_keyup_events(event, rocket)def update_screen(lr_settings,screen,rocket):    screen.fill(lr_settings.bg_color) rocket.blitme()pygame.display.flip()

主文件launch_rocket. py

import pygamefrom settings import Settingsfrom rocket import Rocketimport game_functions as gfdef run_game():    """初始化pygame!!!"""pygame.init()lr_settings = Settings()screen = pygame.display.set_mode((lr_settings.screen_width,lr_settings .screen_height))  #设置屏幕窗口大小pygame.display.set_caption('Rocket') #给窗口命名rocket = Rocket(lr_settings,screen)while True:#隶属于方法run_game()中,需要缩进gf.check_events(rocket)rocket.update()gf.update_screen(lr_settings,screen,rocket)run_game()

代码部分标注,为个人学习笔记,仅供参考

注重讲解点
pygame方向键如下使用:
K_RIGHT
K_LEFT
K_DOWN
K_UP
而rect没有属性up 和down,应该是top和bottom
具体参考rocket.py/class rocket()/def update(self)

其他介绍:应当把所要应用的图像,rocket. bmp存储在我们当前游戏代码的主项目文件夹里,新建的子文件images中。

pygame,上下左右移动相关推荐

  1. jquery实现上下左右键盘监听_python 使用pygame工具包实现贪吃蛇游戏(多彩版)

    今天我们用python和python的工具包pygame来编写一个贪吃蛇的小游戏 贪吃蛇游戏功能介绍 贪吃蛇的游戏规则如下: 通过上下左右键或者WASD键来移动蛇来,让它吃到食物,每吃到食物,蛇的长度 ...

  2. pygame中人物上下左右移动及翻转,背景透明化

    所谓人物的移动,其实就是让我们原绘制的图片不再显示,再要移动的地方绘制一个新的图片.这里我们用这只小猫的图片来代替人物角色.再选取人物角色图片时,建议大家采取正方形大小的尺寸,方便后面的坐标计算,背景 ...

  3. pygame 图像--键盘上下左右

    将图像初始在窗口中心位置, 不然就会初始在左上角 # 初始窗口中心 ship_rect.center = screen_rect.center 监控键盘 上下左右 import sys import ...

  4. pygame控制飞船上下左右移动

    小白@HUST pygame中控制飞船上下左右运动问题 创建飞船左右移动的能力之后,想继续创建飞船上下移动的能力,可是出现问题,先贴上代码片段 #飞船属性 import pygame class Sh ...

  5. python第四个小程序,pygame移动的小坦克,支持键盘控制上下左右,F11全屏自动获取用户的最大分辨率,修改边框尺寸大小后初始化图片位置

    ###进击的坦克### import pygame import sys from pygame.locals import * #初始化Pygame pygame.init() size = wid ...

  6. 用74l138实现一个一位全减器_用pygame实现一个简单的五子棋游戏

    准备 python基础相关准备: pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通" 安装python 3.8.0 在python官网下载, ...

  7. Python游戏开发,pygame模块,Python实现过迷宫小游戏

    前言 今天为大家带来解闷用的过迷宫小游戏分享给大家好了.让我们愉快地开始吧~ 效果展示 开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境 ...

  8. Pygame:编写一个小游戏

    大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...

  9. vpython 贞测碰撞_7、Pygame碰撞检测

    本文目标 1,本章我们继续学习使用sprite木块,来实现我们游戏当中的碰撞检测 2,完成游戏实例:吃苹果小游戏 Pygame模块的Sprite碰撞检测 下面是几种常见的碰撞检测以及实现代码. 1.两 ...

最新文章

  1. jQuery 一次定时器_干货 | 小论定时器玩法(时间轮询法)
  2. 砸4亿美元,GE豪赌的全球最大风力发电机到底多大?
  3. ruby打印_Ruby程序打印数字的力量
  4. Swift中文教程(二十二) 泛型
  5. css 网格布局_CSS网格布局
  6. Python_XPath
  7. @EnableConfigurationProperties
  8. 什么是SQL脚本?及作用和命令
  9. vmware tools选项灰色解决办法(ubuntu 14.04)
  10. Java 笔试强训 牛客网选择编程题 02
  11. 我帮粉丝赚了10w+
  12. 【现代控制理论】传递函数建立状态空间表达式
  13. 学术期刊的 LaTeX整理合集(持续更新中)
  14. 七十年代译制片机器人的_老电影合集,怀旧经典电影,50,60,70,80年代,战争片,故事片,译制片...
  15. 飞书机器人python给用户发信息api调用
  16. 微信投票活动有哪些注意事项?
  17. 实验吧-天下武功唯快不破 Writeup
  18. 变强——GitHub 热点速览 Vol.46
  19. ABAP学习笔记(转自百度文库)_小七_新浪博客
  20. 广告点击量与广告展现量的区别

热门文章

  1. 视频号播放量破10万,这6招帮你上热门!
  2. 对比 P4 和 DPDK
  3. windows下php环境搭建
  4. U盘exFAT格式转NTFS
  5. 影响软件测试的因素包括,软件测试效率影响因素分析
  6. 《〈XNova/OGame〉源码笔记》(3-4)
  7. error: array type ‘char [x]‘ is not assignable
  8. GPCC全球降水数据集下载并使用MATLAB进行读取分析--以长江流域为例
  9. 如何在SOLIDWORKS Toolbox 中新增规格
  10. mybatis存mysql没有时分秒_spring mvc + mybatis + mysql 保存的时间少了8个小时