1.Pygame从0实战1
关于安装的话可能大家到pygame官方网站安装不到与自己Python版本对应的pygame模块,所以这里推荐大家在这里安装
点击打开链接http://mp.blog.csdn.net/postedit
下面是第一个实战案例
# -*- coding: utf-8 -*-install
# @Author: Clarenceinstall
# @Date: 2018-03-04 09:30:44
# @Last Modified by: Clarence
# @Last Modified time: 2018-03-04 11:24:35
"""
Pygame模块可以在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载 unofficial windows binaries for Python Extension Packages
python必须是32位的,并且和Pygame的版本对应
绘制图形 显示图片 动画效果 与键盘鼠标、游戏手柄交互 播放声音 碰撞检测
"""
import pygame
import sys
# print(pygame.ver) #1.9.3
# 初始化Pygame
pygame.init()
size = width, height = 1024, 640
speed = [-7, 5]
bg = (255, 255, 255)
# 创建指定大小的窗口 Surface
screen = pygame.display.set_mode(size)
# 设置窗口标题
pygame.display.set_caption("初次见面,请大家多多关照!")
# 加载图片
background = pygame.image.load("back.jpg")
turtle = pygame.image.load("turtle.png")
# 获得图像的位置矩形
position = turtle.get_rect()
print(background.get_size())
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:
# 翻转图像
turtle = pygame.transform.flip(turtle, True, False)# 传入Surface对象 设置是否水平翻转 设置是否垂直翻转
# 反方向移动
speed[0] = -speed[0]
if position.top < 0 or position.bottom > height:
speed[1] = -speed[1]
# 填充背景
screen.fill(bg)
# 更新图像
screen.blit(background, (0, 0))
screen.blit(turtle, position)
# 更新界面 双缓冲机制 刷新画面
pygame.display.flip()
# 延迟10毫秒
pygame.time.delay(10)
2.双缓冲机制
双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方
都是由于"生产者"和"消费者"供需不一致所造成的。
在图形图像显示过程中,计算机从显示缓冲区取数据然后显示,很多图形的操作都
很复杂需要大量的计算,很难访问一次显示缓冲区就能写入待显示的完整图形数据,
通常需要多次访问显示缓冲区,每次访问时写入最新计算的图形数据。而这样造成的后果
是一个需要复杂计算的图形,你看到的效果可能是一部分一部分地显示出来,造成很大的闪烁
不连贯。而使用双缓冲,可以使你先将计算的中间结果存放在另一个缓冲区中,但全部的计算
结束,该缓冲区已经存储了完整的图形之后,再将该缓冲区的图形数据一次性复制到显示缓冲区。
双缓冲技术的基本思路是:
* 在内存中新建一个临时缓冲区
* 新建一个位图对象作为画布并绑定临时缓存区,绘图在该缓存区中(由于是非常规整
的内存拷贝,因此速度非常快),因为内存中的图形与屏幕显示图形差别很小,这样看起来就不会闪烁。