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%以上的人……所以把我们的游戏打包(注意是打包而不是编 ...
随机推荐
- airflow 学习
入门 Get started developing workflows with Apache Airflow Getting started with Apache Airflow
- 火山引擎VeDI赋能小城酒店业,助力“流量”向“留量”转化
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群. 今年,"去小城过假期"正悄然流行.根据途牛旅游发布的<2024年上半年度旅游消费报 ...
- 通过C#在Word中插入或删除分节符
在Word中,分节符是一种强大的工具,用于将文档分成不同的部分,每个部分可以有独立的页面设置,如页边距.纸张方向.页眉和页脚等.正确使用分节符可以极大地提升文档的组织性和专业性,特别是在长文档中,需要 ...
- CSS – z-index
介绍 z-index 是用来设置 element 层次高低的 (当 element 重叠的时候) 参考: 4 reasons your z-index isn't working (and how t ...
- Maven高级——分模块开发与设计
分模块开发的意义 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享 分模块开发 创建Maven工程 书写模块代码 注意:分模块开发需要先针对模块功能进行设计,再进行编码.不会先将工 ...
- MyBatis——使用Mapper代理开发
使用 Mapper 代理开发方式完成入门案例 1.定义与SQL映射文件同名的Mapper接口,并将 Mapper 接口和SQL映射文件放置在同一目录下 (企业开发中,通常是将配置文件统 ...
- USB-A, Micro, lightning and USB-C
- OOOPS:零样本实现360度开放全景分割,已开源 | ECCV'24
全景图像捕捉360°的视场(FoV),包含了对场景理解至关重要的全向空间信息.然而,获取足够的训练用密集标注全景图不仅成本高昂,而且在封闭词汇设置下训练模型时也受到应用限制.为了解决这个问题,论文定义 ...
- ts 的 declare 用途
declare namespace API { /** 新增数据集合 */ type CreateDataSet = { createdAt: string; dname: string; headI ...
- 什么是 DOM
百度: DOM 定义:文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.它是一种与平台和语言无关的应用程序接口(API),它可 ...