简介
Pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。
安装
sudo pip install pygame
验证
在命令行上输入python,再import pygame, 如果没有报错,说明python安装成功。
示例
下面借用网上的例子展示一下效果,给出《飘雪》的动画效果,背景音乐是陈慧娴那首《飘雪》
#!/usr/bin/env python
#coding: utf-8
#description: 制作下雪特效
#refer: https://github.com/crossin/snippet/blob/master/snow/snow.py
#date:2019-01-08import pygame
import random# 初始化pygame
pygame.init()#可以配上点背景音乐
pygame.mixer.init()
pygame.mixer.music.load('飘雪.mp3')
pygame.mixer.music.play()# 根据背景图片的大小,设置屏幕长宽
SIZE = (1364, 569)screen = pygame.display.set_mode(SIZE)
pygame.display.set_caption("飘雪")
bg = pygame.image.load('snow.jpg')# 雪花列表
snow_list = []# 初始化雪花:[x坐标, y坐标, x轴速度, y轴速度]
for i in range(200):x = random.randrange(0, SIZE[0])y = random.randrange(0, SIZE[1])sx = random.randint(-1, 1)sy = random.randint(3, 6)snow_list.append([x, y, sx, sy])clock = pygame.time.Clock()# 游戏主循环
done = False
while not done:# 消息事件循环,判断退出for event in pygame.event.get():if event.type == pygame.QUIT:done = True# 黑背景/图片背景# screen.fill((0, 0, 0))screen.blit(bg, (0, 0))# 雪花列表循环for i in range(len(snow_list)):# 绘制雪花,颜色、位置、大小pygame.draw.circle(screen, (255, 255, 255), snow_list[i][:2], snow_list[i][3]-3)# 移动雪花位置(下一次循环起效)snow_list[i][0] += snow_list[i][2]snow_list[i][1] += snow_list[i][3]# 如果雪花落出屏幕,重设位置if snow_list[i][1] > SIZE[1]:snow_list[i][1] = random.randrange(-50, -10)snow_list[i][0] = random.randrange(0, SIZE[0])# 刷新屏幕pygame.display.flip()clock.tick(20)# 退出
pygame.quit()
效果截图如下
需要的素材如下:
背景音乐就不提供了。
参考文献
[1].https://my.oschina.net/crossin/blog/1848215
[2].https://www.jb51.net/article/127484.htm
list_for_each_safeBidirect-list list_for_each_safe().https://biscuitos.github.io/blog/LIST_list_for_each_safe/...
/*hanzhiguang coded at 2009.07.30 1:20*/ // nesting_map.cpp : Defines the entry point for the console application. // /*-----------------------------------------------...
已知k个已排序链表头节点指针,将这k个链表合并,合并后仍为有序的 ,返回合并后的头节点 如下三个链表: 合并后的结果如下: 方法一(STL sort算法进行排序): 先将输入的排序链表插入一个迭代器中,vector数组中国呢直接对数组中的链表节点进行按值排序即可 实现算法如下,最终实现源码见文末: bool cmp(Dat...
本题要求实现一个函数,找到并返回链式表的第K个元素。 函数接口定义: ElementType FindKth( List L, int K ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode {ElementType Data;PtrToLNode Ne...
一、前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结。 二、具体 1、显示如下图则表示已安装 vsftp软件。如果未显示则需要安装vsftpd软件。 如果没有则通过yarm源进行安装 yum install -y vsftpd 2、安装完成之后 进入到ftp的根...
1. 定义网络的基本参数 定义输入网络的是什么: input = Input(shape=(240, 640, 3)) 反向传播时梯度下降算法 SGD一定会收敛,但是速度慢 Adam速度快但是可能不收敛 [link](https://blog.csdn.net/wydbyxr/article/details/84822806...
size_t和int size_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。 在32位架构中被普遍定义为: typedef unsigned int size_t; 而在64位架构中被定义为: typedef unsigned lo...
我在 https://blog.csdn.net/wowricky/article/details/83218126 介绍了一种内存池,它的实现类似于linux 中打开slub_debug (1. make menuconfig: Kenel hacking -> Memory Debugging, 2. comand line中传入...
项目开发中需要从引擎 获取一定范围的数据大小,用作打点上报,测试过程中竟然发现写入了一部分数据之后通过GetApproximateSizes 获取写入的key的范围时取出来的数据大小竟然为0。。。难道发现了一个bug?(欣喜) 因为写入的数据是小于一个sst的data-block(默认是4K),会不会因为GetApproximate...