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

代码:

  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. 效率跃升16倍!火山引擎ByteHouse助力销售数据平台复杂查询效率大幅提高

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群.   销售数据,是反映市场趋势.消费者行为以及产品表现的重要指标,也是企业做出精准决策的关键依据.因此,对销售数据 ...

  2. 呵,老板不过如此,SQL还是得看我

    2018年7月,大三暑假进行时,时间过得飞快,我到这边实习都已经一个月了. 我在没工作之前,我老是觉得生产项目的代码跟我平时自学练的会有很大的区别. 以为生产项目代码啥的都会规范很多,比如在接口上会做 ...

  3. 【YashanDB数据库】YAS-02143 invalid username/password, login denied

    [问题分类]错误码处理 [关键字]jdbc,02143 [问题描述]应用启动后,报错YAS-02143 invalid username/password, login denied [问题原因分析] ...

  4. 加入 Flutter Engage,Pick 您的专属 Dash 形象!

    Flutter Engage 活动精彩来袭 对 Flutter 团队的开发者们来说,交流的重要性不言而喻,和您一样,我们也希望开发者们能够在不同的情境下进行互动分享.于是我们为您准备了一场特别的线上活 ...

  5. [TK] Rudolf and Subway ( CodeForces #933 div.3 - G )

    形式化题意 给定一个带权无向图,求从 \(s\) 点到 \(e\) 点的路径上途径边权种类的最小值. 思路 题图 我们把边权种类相同的点连成的子图抽象成一个 "平台" ,从题目给我 ...

  6. 【赵渝强老师】使用kubeadmin部署K8s集群

    首先,我们来看一下整体的架构. K8s的部署方式: yum方式部署 二进制包:手动使用tar包来部署 minikube:单机版,用于开发测试. kubeadm:可以把kubeadmin看成一个部署工具 ...

  7. LeetCode 730. Count Different Palindromic Subsequences (区间DP)

    题意 给一个字符串S,求它所有子序列中不同非空回文串的数量.字符串由 'a' 'b' 'c' 'd' 四个字母组成. 由于题目要求的是不同回文串. abba 的回文串子序列为 a,b,aba,abba ...

  8. Windows应急响应-灰鸽子远控木马

    目录 应急背景 木马查杀 1.查看异常连接 2.根据端口号查看对应进程文件 3.排查异常服务 4.发现启动项 开始查杀 入侵排查 1.账号排查 2.查看服务 3.查看启动项 4.查看计划任务 5.网络 ...

  9. 高通pmic voter机制

    前不久在高通 SDM450 平台接触了 voter 机制(投票机制).最近终于得空,结合一个问题简单研究了一下.现将研究流程简单记录一下,由于时间有限,所以是实用为目的,没有做详细的分析,不过结合着这 ...

  10. 4.2.2 等差数列的前n项和公式

    ${\color{Red}{欢迎到学科网下载资料学习 }}$ [ [基础过关系列]高二数学同步精品讲义与分层练习(人教A版2019)] ( https://www.zxxk.com/docpack/2 ...