昨天,是有在树莓派上面操作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、编程

代码如下:

 # 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,博客地址

总结:虽然不从事游戏开发,但是了解东西总是多多益善,尤其是编程类,了解多了,也就能够互通了。

pygame(一)的更多相关文章

  1. pygame学习笔记

    pygame参考文档pdf版:pygame API html版 pygame API 石头剪子布的简单小游戏,待改进的地方,自适应大小.感兴趣的小伙伴可以依据get_surface()返回值(即当前窗 ...

  2. centos上安装pygame

    安装前依赖包检查及安装 python-devel SDL_image-devel SDL_mixer-devel SDL_ttf-devel SDL-devel numpy subversion po ...

  3. pygame开发PC端微信打飞机游戏

    pygame开发PC端微信打飞机游戏 一.项目简介 1. 介绍 本项目类似曾经火爆的微信打飞机游戏.游戏将使用Python语言开发,主要用到pygame的API.游戏最终将会以python源文件gam ...

  4. win7 64位安装pygame

    需要的工具包 Python安装包 Pip安装包(版本无要求) Pygame安装包(版本需要与python匹配) http://jingyan.baidu.com/article/425e69e6ed3 ...

  5. Python>>>使用Python和Pygame创建画板

    下面是画板截图 # -*- coding: utf-8 -*- import pygame from pygame.locals import * import math class Brush: d ...

  6. python之GUI编程(二)win10 64位 pygame的安装

    pygame的下载网址: http://www.pygame.org/download.shtml 我下载了第一个 很显然,安装的时候出现了如图中的尴尬,更改了安装目录后,在Python shell中 ...

  7. pygame 练习之 PIE game (以及简单图形训练)

    简单的大饼游戏,掌握pygame中直线以及圆弧的画法,以及对输入的响应. import math import pygame, sys from pygame.locals import * pyga ...

  8. 用pygame学习初级python(二) 15.5.11

    闲得无聊,对第一版的东西做了一些修改,让它更像一个游戏,也具有一些可玩性. 项目的github地址:https://github.com/lfkdsk/BrainHole_pygame 1.人物类进行 ...

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

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

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

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

随机推荐

  1. Jenkins+.Net Core+Git集成发布 - SkyMallCore快速开发平台

    准备工作:安装 Jenkins+java 直接百度安装,在此忽略 dotnet sdk(iis部署已经安装) 一:windows 部署到IIS 首先搭建IIS,站点应用程序池选择 ‘无托管代码’ 安装 ...

  2. Lambda 表达式浅谈- 01

    已经有一段时间没有发布博文了... 今天就写一写lambda的一些简单的使用方法 Lambda 在Msdn 上的描述: Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 ...

  3. html中事件调用JavaScript函数时有return与没有return的区别

    JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...

  4. KVM性能优化学习笔记

    本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...

  5. JAVA中-面向网络编程---单层交互

    面向网络编程---单层交互: 客户端说明: /* * 实现TCP客户端,链接到服务器 * 和服务器实现数据交互 * 实现TCP客户端的类 java.net.Scoket * 构造方法: * Socke ...

  6. java中继承的关系

    当有父子关系的两个类(继承关系),当子类实例化对象的时候  会默认调用父类的无参构造方法,如果有  super()的话,调用的是父类有参的构造方法! 也就是说 父类必须有 有参构造 没有的话super ...

  7. 获取指定订阅下所有Azure ARM虚拟机配置(CPU核数,内存大小,磁盘信息)的使用情况

    脚本内容: <# .SYNOPSIS This script grab all ARM VM VHD file in the subscription and caculate VHD size ...

  8. Flowportal-BPM——环境配置

    环境配置: 一.控制面板→程序和功能→打开或不关闭Window功能→选择选项 二.控制面板→管理工具→Internet信息服务(IIS)管理器→左侧第一个→ISAPI和CGI限制→全部选为[允许] 三 ...

  9. js对象注意

    var obj = {}; //定义一个对象 obj[1] = 1; //设置obj对象的属性为数字1属性,属性值为1 obj['1'] = 2398; //设置obj对象的属性为字符串1属性,属性值 ...

  10. 题解 [ZJOI2010]数字计数

    传送门<-洛谷版 电梯<-bzoj版 这份代码是新手友好版,也算是自用版,注释自认为写的很详细. 希望对要学数位dp的人有所帮助 这份题解是记忆化搜索版的数位DP,个人还是比较建议用这种方 ...