pygame(一)
2015-06-24 17:57
169 查看
昨天,是有在树莓派上面操作pygame的,但是树莓派又上不了网了,很奇怪,我的306wifi显示的是树莓派连接成功,但是就是无法用网络,所以就下载不了图片,坐等HDMI线吧。
现在,看小甲鱼的视频已经有半年了,感谢他风趣无节操的语言带领我进入广大的编程世界,我知道接下来的路只能自己走下去,唯有谦虚向别人请教,积极谷歌,及时总结,锻炼代码能力,钻下去才能走得远,感谢小甲鱼。最近刚好小甲鱼出了一起关于pygame的视频,也就开始着手玩玩了。
1、安装pygame
第一个问题,我的python版本是py3.4,这在pygame的官网是没有的,最新的只有3.2版本的,因此直接google了一下,看到YouTube有个视频介绍了两个网址,一个是pygame安装whl文件,下载地址;另外一个是windows的安装包exe文件,下载地址。
第二个问题,一开始不知道python的版本是64位的,我个人比较懒,直接就用了32位的exe文件,导致结果安装好后import报错dll什么的,就是不兼容,只好使用whl文件,发现非常方便,采用了64位whl安装文件,先把文件名字的后缀改成zip类型,然后解压到python34的安装路径下的lib/site-packages这个文件夹里面,然后直接import,ok!
2、编程
代码如下:
3、思考
Q1、什么是Surface对象?
答:pygame就是图像
Q2、将一个图形绘制到另一个图像上面是怎么回事?
答:在pygame中,由于图像是由像素组成,也就是马赛克,其实没有在一个图形绘制到另一个图像上的说法,实际上就是改变该被覆盖的图像的像素,就是使用blit方法将图像这个一群像素覆盖到另一个图像的像素上面。
Q3、移动图像是怎么一回事?
答:涉及到帧率的问题,指的是一秒钟可以切换多少次图像,调用get_rect对象的move方法,改变矩形范围的位置,对应代码的第29行,其中speed = [-2, 1],相当于水平位置减少2,垂直位置加1来移动矩形的位置。再更新图像和界面,在内存中进行双缓冲。
Q4、如何控制游戏的速度?
答:使用了time模块的delay方法,延迟速度,也就是每隔10ms移动一次矩形也就是图像;也可以通过改变帧率的形式,注释掉delay方法,假如clock来通过设置帧率来控制速度,编写代码如下:
Q5、pygame的效率高不高?
答:pygame的大部分模块都是由C语言编写和优化,效率很好,帧率是40-200帧/秒。
Q6、如何从pygame中获得帮助?
答:pygame的官网有很详细的文档和教程以及例子,小甲鱼论坛里面也有模块的中文翻译计划,也有找到一个很好的网站学习pygame,博客地址。
总结:虽然不从事游戏开发,但是了解东西总是多多益善,尤其是编程类,了解多了,也就能够互通了。
现在,看小甲鱼的视频已经有半年了,感谢他风趣无节操的语言带领我进入广大的编程世界,我知道接下来的路只能自己走下去,唯有谦虚向别人请教,积极谷歌,及时总结,锻炼代码能力,钻下去才能走得远,感谢小甲鱼。最近刚好小甲鱼出了一起关于pygame的视频,也就开始着手玩玩了。
1、安装pygame
第一个问题,我的python版本是py3.4,这在pygame的官网是没有的,最新的只有3.2版本的,因此直接google了一下,看到YouTube有个视频介绍了两个网址,一个是pygame安装whl文件,下载地址;另外一个是windows的安装包exe文件,下载地址。
第二个问题,一开始不知道python的版本是64位的,我个人比较懒,直接就用了32位的exe文件,导致结果安装好后import报错dll什么的,就是不兼容,只好使用whl文件,发现非常方便,采用了64位whl安装文件,先把文件名字的后缀改成zip类型,然后解压到python34的安装路径下的lib/site-packages这个文件夹里面,然后直接import,ok!
2、编程
代码如下:
# coding=utf-8 __author__ = 'wing1995' import pygame import sys # 初始化pygame pygame.init() size = width, height = 1000, 800 speed = [-2, 1] bg = (255, 255, 255) # 创建指定大小的窗口 Surface screen = pygame.display.set_mode(size) # 设置窗口标题 pygame.display.set_caption('初次见面,请大家多多关照!') # 加载图片 classic = pygame.image.load("C:\\Users\\wing1995\\Desktop\\classic.png") # 获得图像的位置矩形 position = classic.get_rect() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 移动图像 position = position.move(speed) if position.left < 0 or position.right > width: # 翻转图像 classic = pygame.transform.flip(classic, True, False) # 反方向移动 speed[0] = -speed[0] if position.top < 0 or position.bottom > height: speed[1] = -speed[1] # 填充背景 screen.fill(bg) # 更新图像 screen.blit(classic, position) # 更新界面 pygame.display.flip() # 延迟10毫秒 pygame.time.delay(10)
3、思考
Q1、什么是Surface对象?
答:pygame就是图像
Q2、将一个图形绘制到另一个图像上面是怎么回事?
答:在pygame中,由于图像是由像素组成,也就是马赛克,其实没有在一个图形绘制到另一个图像上的说法,实际上就是改变该被覆盖的图像的像素,就是使用blit方法将图像这个一群像素覆盖到另一个图像的像素上面。
Q3、移动图像是怎么一回事?
答:涉及到帧率的问题,指的是一秒钟可以切换多少次图像,调用get_rect对象的move方法,改变矩形范围的位置,对应代码的第29行,其中speed = [-2, 1],相当于水平位置减少2,垂直位置加1来移动矩形的位置。再更新图像和界面,在内存中进行双缓冲。
Q4、如何控制游戏的速度?
答:使用了time模块的delay方法,延迟速度,也就是每隔10ms移动一次矩形也就是图像;也可以通过改变帧率的形式,注释掉delay方法,假如clock来通过设置帧率来控制速度,编写代码如下:
12 clock = pygame.time.Clock() # 实例化Clock对象 48 clock.tick(200) # 改变帧率为200,图像1秒移动200次
Q5、pygame的效率高不高?
答:pygame的大部分模块都是由C语言编写和优化,效率很好,帧率是40-200帧/秒。
Q6、如何从pygame中获得帮助?
答:pygame的官网有很详细的文档和教程以及例子,小甲鱼论坛里面也有模块的中文翻译计划,也有找到一个很好的网站学习pygame,博客地址。
总结:虽然不从事游戏开发,但是了解东西总是多多益善,尤其是编程类,了解多了,也就能够互通了。
相关文章推荐
- Linux 基本操作练习
- Day11(上).期中考试题
- "vtable for __cxxabiv1::__class_type_info", referenced from:
- strcpy和memcpy的区别
- 第十六周项目二 有些数的阶乘不算了(异常处理)
- 最小生成树的 克鲁斯卡尔算法
- Xcode 6制作动态及静态Framework
- JavaScript高阶函数
- [POJ 3498] March of the Penguins
- js 修改css属性值
- C++中static_cast, dynamic_cast用法
- android 5.0 远程开启服务学习笔记
- 运算符和表达式(一)
- MDK配置jlink仿真器步骤
- C/C++中如何获取数组的长度?
- 【性能诊断】十一、性能问题综合分析(案例2,windbg、wireshark)
- <转载> OpenGL Projection Matrix
- python学习随笔
- js怎么获取图片的相对地址
- Linux中长时间运行脚本或者命令