Python:pygame游戏编程之旅二(自由移动的小球)
本节实现一个在窗口中自由运动的小球程序,做了详细注释,不多做解释了。
代码:
- # -*- coding:utf-8 -*-
- import sys
- import pygame
- from pygame.locals import *
- def play_ball():
- pygame.init()
- #窗口大小
- window_size = (width, height) =(700, 500)
- #小球运行偏移量[水平,垂直],值越大,移动越快
- speed = [1, 1]
- #窗口背景色RGB值
- color_black = (0, 0, 139)
- #设置窗口模式
- screen = pygame.display.set_mode(window_size)
- #设置窗口标题
- pygame.display.set_caption('运动的小球')
- #加载小球图片
- ball_image = pygame.image.load('ball.gif')
- #获取小球图片的区域开状
- ball_rect = ball_image.get_rect()
- while True:
- #退出事件处理
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- pygame.quit()
- sys.exit()
- #使小球移动,速度由speed变量控制
- ball_rect = ball_rect.move(speed)
- #当小球运动出窗口时,重新设置偏移量
- if (ball_rect.left < 0) or (ball_rect.right > width):
- speed[0] =- speed[0]
- if (ball_rect.top < 0) or (ball_rect.bottom > height):
- speed[1] =- speed[1]
- #填充窗口背景
- screen.fill(color_black)
- #在背景Surface上绘制 小球
- screen.blit(ball_image, ball_rect)
- #更新窗口内容
- pygame.display.update()
- if __name__ == '__main__':
- play_ball()
测试:
动画程序,抓几张不同时刻的图片。
1、

2、

3、

PS:
有朋友说球速度还是太快了,此时可以加个定时器控制一下,如下:
- # -*- coding:utf-8 -*-
- import sys
- import pygame
- from pygame.locals import *
- def play_ball():
- pygame.init()
- #窗口大小
- window_size = (width, height) =(700, 500)
- #小球运行偏移量[水平,垂直],值越大,移动越快
- speed = [1, 1]
- #窗口背景色RGB值
- color_black = (0, 0, 139)
- #设置窗口模式
- screen = pygame.display.set_mode(window_size)
- #设置窗口标题
- pygame.display.set_caption('运动的小球')
- #加载小球图片
- ball_image = pygame.image.load('ball.gif')
- #获取小球图片的区域开状
- ball_rect = ball_image.get_rect()
- frames_per_sec = 10
- fps_clock = pygame.time.Clock()
- while True:
- #退出事件处理
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- pygame.quit()
- sys.exit()
- #使小球移动,速度由speed变量控制
- ball_rect = ball_rect.move(speed)
- #当小球运动出窗口时,重新设置偏移量
- if (ball_rect.left < 0) or (ball_rect.right > width):
- speed[0] =- speed[0]
- if (ball_rect.top < 0) or (ball_rect.bottom > height):
- speed[1] =- speed[1]
- #填充窗口背景
- screen.fill(color_black)
- #在背景Surface上绘制 小球
- screen.blit(ball_image, ball_rect)
- #更新窗口内容
- pygame.display.update()
- fps_clock.tick(frames_per_sec)
- if __name__ == '__main__':
- play_ball()
Python:pygame游戏编程之旅二(自由移动的小球)的更多相关文章
- 【python游戏编程之旅】第七篇---pygame中的冲突检测技术
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中的Sprite模块和如何加载动画:http://www.cnblogs ...
- 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...
- 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 直到现在我们已经学了很多pygame基础知识了,从这篇博客开始我们将会学习pygame中高级部分,更多和精灵 ...
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
- 【python游戏编程之旅】第三篇---pygame事件与设备轮询
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame中的IO.数据http://www.cnblogs.com/msxh/ ...
- 【python游戏编程之旅】第二篇--pygame中的IO、数据
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇中,我们介绍了pygame的入门操作http://www.cnblogs.com/msxh/p/49 ...
- 【python游戏编程之旅】第一篇---初识pygame
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 一.pygame简介 Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础 ...
- 【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构. 这次我们来一起做一个简单的酷 ...
- 【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接 ...
- python+pygame游戏开发之使用Py2exe打包游戏
最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. 这会吓退99%以上的人……所以把我们的游戏打包(注意是打包而不是编 ...
随机推荐
- 【工程应用十二】Bayer图像格式中Hamilton-Adams及Zhang Wu 基于LMMSS算法的Demosaic过程优化。
Demosaic,中文直接发翻译为去马赛克, 但是其本质上并不是去除马赛克,这让很多第一次接触这个名词或者概念的人总会想的更多.因此,一般传感器在采集信息时一个位置只采集RGB颜色中的一个通道,这样可 ...
- 利用分布式锁在ASP.NET Core中实现防抖
前言 在 Web 应用开发过程中,防抖(Debounce) 是确保同一操作在短时间内不会被重复触发的一种有效手段.常见的场景包括防止用户在短时间内重复提交表单,或者避免多次点击按钮导致后台服务执行多次 ...
- 使用 Dependify 工具探索 .NET 应用程序依赖项
在大型项目中,由于各种组件的复杂性和互连性,管理依赖项可能变得具有挑战性.如果没有适当的工具或文档,可能很难浏览项目并对依赖项做出假设.以下是在大型项目中难以导航项目依赖项的几个原因: 复杂性:大型项 ...
- Word字体与像素的对应关系
英文字体的1磅(pt),相当于1/72 英寸(inch),约等于1/2.8mm.12PT的字打印出来约为4.2mm.网页中12px的字才相当于12像素. 虽然 四号=(14/72)*96=18.6px ...
- EF Core – Table / Entity Splitting
参考 Docs – Advanced table mapping Table Splitting Table Splitting 指的是把一个表映射到多个 Entity,或者反过来说就是把多个 Ent ...
- Visual Studio & VS Code
前言 会写这篇是因为想记入一个 bug. 随便以后记入一些 Visual Studio 和 VS Code 相关的冬冬呗. 当 VS Code Hot Reload 遇上 View Component ...
- DOM & BOM – 冷知识 (新手)
JS 无法 query select 到伪元素 参考: 使用JS控制伪元素的几种方法 JS style remove property 是 kebab-case set property 是 came ...
- Kubernetes Pod生命周期(十七)
前面我们已经了解了 Pod 的设计原理,接下来我们来了解下 Pod 的生命周期.下图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要 ...
- 4Templates Bootstrap Navbars and Links
链接 传递参数
- springboot 基本配置文件
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/game?useUnicode=true&zeroDateTimeBehavior=conv ...