本节实现一个在窗口中自由运动的小球程序,做了详细注释,不多做解释了。

代码:

  1. # -*- coding:utf-8 -*-
  2. import sys
  3. import pygame
  4. from pygame.locals import *
  5. def play_ball():
  6. pygame.init()
  7. #窗口大小
  8. window_size = (width, height) =(700, 500)
  9. #小球运行偏移量[水平,垂直],值越大,移动越快
  10. speed = [1, 1]
  11. #窗口背景色RGB值
  12. color_black = (0, 0, 139)
  13. #设置窗口模式
  14. screen = pygame.display.set_mode(window_size)
  15. #设置窗口标题
  16. pygame.display.set_caption('运动的小球')
  17. #加载小球图片
  18. ball_image = pygame.image.load('ball.gif')
  19. #获取小球图片的区域开状
  20. ball_rect = ball_image.get_rect()
  21. while True:
  22. #退出事件处理
  23. for event in pygame.event.get():
  24. if event.type == pygame.QUIT:
  25. pygame.quit()
  26. sys.exit()
  27. #使小球移动,速度由speed变量控制
  28. ball_rect = ball_rect.move(speed)
  29. #当小球运动出窗口时,重新设置偏移量
  30. if (ball_rect.left < 0) or (ball_rect.right > width):
  31. speed[0] =- speed[0]
  32. if (ball_rect.top < 0) or (ball_rect.bottom > height):
  33. speed[1] =- speed[1]
  34. #填充窗口背景
  35. screen.fill(color_black)
  36. #在背景Surface上绘制 小球
  37. screen.blit(ball_image, ball_rect)
  38. #更新窗口内容
  39. pygame.display.update()
  40. if __name__ == '__main__':
  41. play_ball()

测试:

动画程序,抓几张不同时刻的图片。

1、

2、

3、

PS:

有朋友说球速度还是太快了,此时可以加个定时器控制一下,如下:

  1. # -*- coding:utf-8 -*-
  2. import sys
  3. import pygame
  4. from pygame.locals import *
  5. def play_ball():
  6. pygame.init()
  7. #窗口大小
  8. window_size = (width, height) =(700, 500)
  9. #小球运行偏移量[水平,垂直],值越大,移动越快
  10. speed = [1, 1]
  11. #窗口背景色RGB值
  12. color_black = (0, 0, 139)
  13. #设置窗口模式
  14. screen = pygame.display.set_mode(window_size)
  15. #设置窗口标题
  16. pygame.display.set_caption('运动的小球')
  17. #加载小球图片
  18. ball_image = pygame.image.load('ball.gif')
  19. #获取小球图片的区域开状
  20. ball_rect = ball_image.get_rect()
  21. frames_per_sec = 10
  22. fps_clock = pygame.time.Clock()
  23. while True:
  24. #退出事件处理
  25. for event in pygame.event.get():
  26. if event.type == pygame.QUIT:
  27. pygame.quit()
  28. sys.exit()
  29. #使小球移动,速度由speed变量控制
  30. ball_rect = ball_rect.move(speed)
  31. #当小球运动出窗口时,重新设置偏移量
  32. if (ball_rect.left < 0) or (ball_rect.right > width):
  33. speed[0] =- speed[0]
  34. if (ball_rect.top < 0) or (ball_rect.bottom > height):
  35. speed[1] =- speed[1]
  36. #填充窗口背景
  37. screen.fill(color_black)
  38. #在背景Surface上绘制 小球
  39. screen.blit(ball_image, ball_rect)
  40. #更新窗口内容
  41. pygame.display.update()
  42. fps_clock.tick(frames_per_sec)
  43. if __name__ == '__main__':
  44. play_ball()

Python:pygame游戏编程之旅二(自由移动的小球)的更多相关文章

  1. 【python游戏编程之旅】第七篇---pygame中的冲突检测技术

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中的Sprite模块和如何加载动画:http://www.cnblogs ...

  2. 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...

  3. 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 直到现在我们已经学了很多pygame基础知识了,从这篇博客开始我们将会学习pygame中高级部分,更多和精灵 ...

  4. 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...

  5. 【python游戏编程之旅】第三篇---pygame事件与设备轮询

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame中的IO.数据http://www.cnblogs.com/msxh/ ...

  6. 【python游戏编程之旅】第二篇--pygame中的IO、数据

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇中,我们介绍了pygame的入门操作http://www.cnblogs.com/msxh/p/49 ...

  7. 【python游戏编程之旅】第一篇---初识pygame

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 一.pygame简介 Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础 ...

  8. 【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构. 这次我们来一起做一个简单的酷 ...

  9. 【python游戏编程之旅】第五篇---嗷大喵爱吃鱼小游戏开发实例

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 我们一同在前几期的博客中已经学到了很多pygame的基本知识了,现在该做个小游戏实战一下了. 前几期博客链接 ...

  10. python+pygame游戏开发之使用Py2exe打包游戏

    最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. 这会吓退99%以上的人……所以把我们的游戏打包(注意是打包而不是编 ...

随机推荐

  1. WebShell流量特征检测_冰蝎篇

    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测. 什么是一句话木马? 1.定义 顾名思义就是执行恶意指 ...

  2. 使用Windows API 编写按行分配的计算矩阵向量相乘的并行程序

    水了一学期的院选修,万万没想到期末考试还有比较硬核的编程题,居然还涉及到多线程了,而且是调用Windows接口函数写多线程.虽然学汇编的时候有所了解,但毕竟没尝试过,思来想去,写出了下面的蹩脚代码,不 ...

  3. 常回家看看之house_of_emma

    house_of_emma 前言: 相比较于house_of_kiwi(house_of_kiwi),house_of_emma的手法更加***钻,而且威力更大,条件比较宽松,只需要lagebin_a ...

  4. QT原理与源码分析之QT5原理与源码分析视频课程 补天云QT技术培训专家

    QT原理与源码分析之QT5原理与源码分析视频课程 补天云QT技术培训专家 以下是<< QT5原理与源码分析视频课程>>的完整目录. 第1章 准备 第1节 您可以学到什么? 第2 ...

  5. 音视频入门-5-音频编码原理、编码器、ADTS格式

    1.  概念 音频压缩技术指的是对原始数字音频信号流(PCM编码)运用的数字信号处理技术. 2. 背景 和 压缩的必要性 研究发现,直接采用PCM码流进行存储和传输存在非常大的冗余度. 以CD为例,其 ...

  6. debian 12 编译 vlc/libvlc 支持 rtsp

    debian 官方从11开始,不再提供支持 rtsp 的 VLC deb 包,通过 libvlc 播放 rtsp 也无法实现,因此需要自己编译. # 安装编译环境,编译依赖库以及 contrib 第三 ...

  7. 高通Perflock

    高通的Perflock是Qualcomm公司开发的一项技术,用于优化设备性能和功耗管理.Perflock是一种锁定机制,允许操作系统或应用程序在需要时对处理器的性能状态进行控制,从而确保在关键任务或高 ...

  8. ios中文件夹文件的创建和删除

    //1.文件夹.文件的创建和删除 NSFileManager *fileManager=[NSFileManager defaultManager]; NSString *filePath=@&quo ...

  9. 1. java + react 实现 HRM

    1. 云服务的三种方式 1.1 IAAS 基础设施即服务 ,只会提供基础的设施,eg:服务器,网络等 : 1.2 PAAS 平台即服务 ,提供平台,可以把自己写好的代码部署到平台上 : 1.3 SAA ...

  10. kotlin类和对象—>类与继承

    1.类的定义,kotlin中依旧使用关键字class声明类,类声明由类名.类头(指定其类型参数.主构造函数等)以及由花括号包围的类体构成.类头与类体都是 可选的;如果一个类没有类体,可以省略花括号. ...