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

代码:

  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. 将workbench 导出的sql数据修改为 oracle 的sql版本

    将导出的文件内容复制到 dd1.txt,或其它文件,修改path的值即可 修改后的sql文件为 dd1.sql : 替换的内容: 1. 全局替换了一些字符串,如` 2. workbench导出的sql ...

  2. 淘宝订单信息获取接口,淘宝开放平台R2权限,淘宝开放平台订单获取接口

    目前淘宝开放平台是关闭了订单权限申请的,有这方便的需求的人,除非是天猫用户才能申请(天猫用户申请到只能给自己天猫店授权),否则是申请不到这个订单接口了,如果有这方面需要的人可以联系我,站内信留下QQ或 ...

  3. airflow 学习

    入门 Get started developing workflows with Apache Airflow Getting started with Apache Airflow  

  4. ansible rpm包下载

    Ansible2.9.18版本下载链接:https://pan.baidu.com/s/1dKlwtLWSOKoMkanW900n9Q 提取码:ansi 将软件上传至系统并解压安装: # tar -z ...

  5. 面试官的几句话,差点让我挂在HTTPS上

    作为软件测试,大家都知道一些常用的网络协议是我们必须要了解和掌握的,比如 HTTP 协议,HTTPS 协议就是两个使用非常广泛的协议,所以也是面试官问的面试的时候问的比较多的两个协议:而且因为这两个协 ...

  6. C++11新初始化方法 使用{}初始化变量

    列表初始化 在C++11及以后的版本中,使用{}来初始化变量是一种新的初始化方法,称为列表初始化(List Initialization).这种初始化方法可以用来初始化内置类型.自定义类型以及聚合类型 ...

  7. QT原理与源码分析之如何开发一个自定义的绘图设备和QT绘图引擎?

    简介 本文将介绍如何自定义QT绘图设备类和如何自定义QT绘图引擎类. 目录 QT绘图设备抽象类QPaintDevice QT绘图引擎抽象类QPaintEngine 自定义绘图设备类 自定义绘图引擎类 ...

  8. centos 下安装pip pip3

    centos 下安装pip pip3 上一篇说过了如何在centos7 上安装python3 并与python2.7共存. 这篇说一下 安装python2.7 下安装的pip 以及python3 下的 ...

  9. Android Qcom USB Driver学习(九)

    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_id hid_probe (1)hid_device_ ...

  10. 大数据技术之Shell

    1. shell概述 示意图: Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序. ● L ...