程序员式浪漫:Python 带你看雪啦

前段时间笔者写了一篇题为《用 Python 来一场人工造雪》的文章,但大家似乎都不满足仅仅是一个图片的雪花,都想来一场动态的人工降雪。于是便有了下面的内容:

具体介绍

动态版的实现主要是依靠 pygame 这个模块,从绘制到实现动态移动,最初的想法是按照飞机大战的思路把飞机替换成上次绘制的科赫雪花,自己试了试效果很差就是一张张图片在屏幕上乱飞,通过百度发现 pygame.draw 模块,跟 turtle 差不多。当然还是少不了 random,自己做过的

Python 面试题【BAT版】(02)

中 random 算是常客,学习的时候觉得就是一个随机数生成而已,最近慢慢接触才发现 randmo 的强大,怪不得成为公司面试的必考题。

代码实现

因为使用 pygame 第一步要做的就是初始化:

1import pygame2import random3#初始化4pygame.init()

加载背景图同时根据背景图的大小设置屏幕长宽:

1SIZE = (1000, 500)2screen = pygame.display.set_mode(SIZE)3pygame.display.set_caption("下雪了")4#加载位图5background = pygame.image.load(‘snow.jpg‘)

接下来我们要定义一个雪花列表,且初始化雪花,这里需要使用 random 随机数设置 xy 轴的坐标和速度。

random.randrange

random.randrange([start],stop[, step]):从指定范围内,按指定基数递增的集合中获取一个随机数。

random.randint(a,b):用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a<=n<=b。

1# 定义一个雪花列表2snow = []3# 初始化雪花4for i in range(300):5 x = random.randrange(0, SIZE[0])6 y = random.randrange(0, SIZE[1])7 speedx = random.randint(-1, 2)8 speedy = random.randint(3,8)9 snow.append([x, y, speedx, speedy])

做过飞机大战或者熟悉pygame的朋友应该知道接下来要做的就是设置游戏循环,同时还将之前加载的背景图进行了绘制。

Surface对象有一个名为blit()的方法,它可以绘制位图

screen.blit(space, (0,0))

第一个参数是加载完成的位图,第二个参数是绘制的起始坐标。

1done = False2while not done:3 # 消息事件循环,判断退出4 for event in pygame.event.get():5 if event.type == pygame.QUIT:6 done = True7 #绘制位图8 screen.blit(background, (0,0))

这一步是最重要的绘制雪花和设置雪花列表的循环。

绘制雪花使用的是pygame.draw 模块,此模块用于在Surface上绘制一些简单的图形,比如点、直线、矩形、圆、弧等。我们绘制雪花用到的是:

pygame.draw.circle

原型:pygame.draw.circle(Surface, color, pos, radius, width=0): return Rect

用途:用于绘制圆形。第三个参数pos是圆心的位置坐标,radius指定了圆的半径。

width参数表示线条(画笔)的宽度,如果该值设置为0,则表示填充整个图形,我们的绘制的雪花就是使用填充白色。颜色参数通常是一个RGB三元组(R, G, B)。

雪花列表循环主要取决于雪花列表的长度,同样设置了移动雪花的位置,程序中还做了一个判定雪花从顶端向下移动时如果落出屏幕,将会重设位置。

 1 # 雪花列表循环 2 for i in range(len(snow)): 3 # 绘制雪花,颜色、位置、大小 4 pygame.draw.circle(screen, (255, 255, 255), snow[i][:2], snow[i][3]) 5 6 # 移动雪花位置(下一次循环起效) 7 snow[i][0] += snow[i][2] 8 snow[i][1] += snow[i][3] 910 # 如果雪花落出屏幕,重设位置11 if snow[i][1] > SIZE[1]:12 snow[i][1] = random.randrange(-50, -10)13 snow[i][0] = random.randrange(0, SIZE[0])

到这程序基本就写完了,只需要添加刷新屏幕的时间和游戏退出语句就完事了。

1 pygame.display.flip()2 clock.tick(20)34pygame.quit()

原文地址:https://www.cnblogs.com/chuangye95/p/10170294.html

时间: 2024-11-12 18:20:17

程序员式浪漫:Python 带你看雪啦的相关文章

程序员应该有属于自己的看电视方式

看电视也能装B?作为程序员的你,是不是觉得看电视有点离我们太远,是不是觉得拿着遥控器看电视有点low.实际上,程序员有我们自己看电视的方式吗,让小编带你装一把'A' + 1吧. 下载ffmpeg:下载地址: https://ffmpeg.zeranoe.com/builds/ 看您的操作系统,32位选择左边,64位选择右边.开始下载,稍作等待. 安装: 如图,下载之后,得到压缩包,将安装包移动到你想安装的目录,然后解压.将解压后的路径做记录,不记录也可. 设置环境变量:将第3步中安装的目录添加到

***周鸿祎谈创业:很多程序员高智商 但我一看就知道他们不会成功

很多人都向往着有一天自己创业,程序员更是如此.如果你想创业,那么该怎样创业.需要有哪些准备.自己还有什么不足等等这些问题你考虑过吗?本文就跟大家分享周鸿祎在接受某媒体采访时给程序员上的创业课. 程序员创业的特别之处 关于程序员创业,我之所以愿意谈我的观点,是因为我是程序员出身,也是从小公司做起来的,我自认为对待很多程序员个人包括共享软件作者和一些小网站还是很好的.我希望分享一些经验和体会. 首先,我想说的是聪明人不一定能成功,很多程序员很聪明,但我一看就知道他们不会成功. 因为我看到了一些问题,

《程序员成长路线》之新手看高手

1.10 新手看高手 入门之前,很多程序员心里有一个高手情结.通过书籍.媒体.传说渲染,他们认为IT行业是一个高手林立的行业,好像这些高手创造了这个行业的奇迹.这些高手可能是国外的,也可能是中国的.这个高手可能是一个具体的人,也可能抽象于某些著名软件背后看不见的程序员.只知其名,不闻其声,这个时候的高手是一种无所不能的神,一种虚幻,是令程序员崇拜的偶像. 到了工作岗位之后,这种高手情结更加严重,由于新手发现自身技术水平有限,而内心想尽快摆脱这种状况,使得很多新手对高手感觉更加恐惧和渴望.我发现在

当程序员写完代码后,看完感同身受……

如果你是程序员,相信看完后,你会默默点个! 从此循环,估计可能到头了-- 微信关注"蜗牛新视界",带你玩不同.  

程序员的瑞士军刀----Python

这篇文章比较难以成型.大概想表达的意思是,程序员应该通过脚本语言来完成一些"批量"或"自动化"的操作,而不是重复的去做体力劳动. 具体方式因人而异,比如有人非常熟悉bat或者shell的编写,或者有人非常熟悉php.perl的编写,而我更早接触了Python,所以很多工具更加习惯用Python来完成. 这里会先讲一下我的各种需求,以及脚本语言的选择,后面会针对Python逐渐补全很多"惯用法",把自己常用的功能和代码段记录下来. 一.综述 Pyt

神级程序员巧用python开发王者荣耀把妹神器,一路升级上王者!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

为什么程序员应该从现在就开始看书

前一阵子我在知乎上经常会看见这样的问题:最近感觉自己很浮躁,想要看书,可是不知道看什么,求大神推荐?这让我想起我在高三那一年看了几十本课外书.每次当我月考失利或者复习不顺的时候,就会拿起一本闲书来看,总能平复心里的烦躁和郁闷. 那时候看书,是一本一本地看,为了看书而看书. 大三大四的那段时间,我关注了很多跟it有关的微博,经常会转发一些跟技术有关的内容,还会经常上博客园或者csdn这样的网站,收藏一大堆干货网页.后来结果怎样,应该很好猜. 我从来都没有回过头去看一眼,更别说学习里面的知识. 其实

[python]通过微信公众号“Python程序员”,编写python代码

今天发现微信公众号中,居然可以编写python代码,很是惊喜,觉得蛮有趣的. 步骤如下: 1.关注微信公众号“Python程序员” 2.关注成功后,点击右下角的“潘多拉”->"Python终端“->"阅读原文”. 3.Python开发页面被打开,在下面的输入框内,输入python代码,点击确认即可. 可以用来练习python,是不是很有趣呢?

关于程序员的笑话,你都看得懂吗?

程序猿的读书历程:x语言入门->x语言应用实践->x语言高阶编程->x语言的科学与艺术->编程之美->编程之道->编程之禅->颈椎病康复指南. 问:程序猿最讨厌康熙的哪个儿子?答:胤禩,因为他是八阿哥(bug). 有一天,程序猿们突然发现他们要涨的工资掉到井里啦!大家都很害怕,连忙一个吊着一个,从树上伸到井里去捞工资.正好他们摸到工资的时候,一个老程序员忽然兴奋的大叫:别蠢了,要涨的工资还好好的挂在天上呢! 程序猿要了3个孩子,分别取名叫Ctrl.Alt和Dele