pygame实现烟雨蒙蒙下彩虹雨

 更新时间:2019年11月11日 16:52:34   作者:HelloWorld!  
这篇文章主要为大家详细介绍了pygame实现烟雨蒙蒙下彩虹雨,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

学习了一天的深度学习,略有疲惫,我们用pygame搞个小游戏放松放松吧。今天我们的游戏主体是烟雨蒙蒙下彩虹雨,仿佛置身江南水乡。

游戏描述

我们希望看到江南水乡下起彩虹雨。这里背景是江南水乡,烟雨蒙蒙,雨滴颜色五颜六色,大小不一。

解决思路

烟雨蒙蒙彩虹雨的意思很明确,有几个主要元素,那就是烟雨蒙蒙,彩虹雨滴,下雨几个元素和动作。那么,基本思路如下

1.找一张江南水乡烟雨蒙蒙的图片作为背景
2.用圆圈代表雨滴,并把圆圈的大小,颜色进行随机设置,出现五彩斑斓的效果。
3.下雨,即雨滴从上而下持续不断的落下,这就需要pygame里把圆圈放在不同的坐标下绘制出来。

代码实现

具体的实现代码如下:

import pygame
import random
pygame.init()
#加载图片
pic=pygame.image.load('raining.jpg')
#获取图片的长宽
screen_width=pic.get_width()
screen_height=pic.get_height()
#根据图片大小来设置屏幕大小
screen=pygame.display.set_mode([screen_width,screen_height])
#设置彩虹雨的雨滴个数,颜色,位置,大小,落下的速度
numbers=50
colors=[0]*numbers
location_x=[0]*numbers
location_y=[0]*numbers
sizes=[0]*numbers
speed=[0]*numbers
#初始化彩虹雨滴
for i in range(numbers):
 colors[i]=(random.randint(0,255),random.randint(0,255),random.randint(0,255))
 location_x[i]=random.randint(0,screen_width)
 location_y[i]=-random.randint(0,screen_height)
 sizes[i]=random.randint(5,20)
 speed[i]=random.randint(1,5)

keep_going=True
#用Clock实现来控制动画的速度
timer=pygame.time.Clock()

while keep_going:
 for event in pygame.event.get(): #监听事件
 if event.type==pygame.QUIT:
  keep_going=False
 #把图片绘制到屏幕
 screen.blit(pic,(0,0))
 for i in range(numbers):
 pygame.draw.circle(screen,colors[i],(location_x[i],location_y[i]),sizes[i]) #让雨滴画在屏幕上
 location_y[i]=location_y[i]+speed[i]   #雨滴落下,y轴方向

 if location_y[i]>screen_height:    #如果雨滴落到看不见,即超出屏幕的高度
  location_y[i]-=screen_height   #重新设置雨滴的参数
  location_x[i]=random.randint(0,screen_width)
  speed[i] = random.randint(1, 5)
 timer.tick(100)# timer每秒钟滴答100次,因此帧率为100fps
 pygame.display.update() #刷新屏幕

pygame.quit()

效果展示

运行可以看到下图,还是有点那个意思的,静静地看着五彩斑斓的雨滴落下,一身的疲惫也减轻了不少。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python中os和sys模块的区别与常用方法总结

    python中os和sys模块的区别与常用方法总结

    这篇文章主要给大家介绍了关于python中os和sys模块的区别与常用方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2017-11-11
  • Python快速排序算法实例分析

    Python快速排序算法实例分析

    这篇文章主要介绍了Python快速排序算法,简单说明了快速排序算法的原理、实现步骤,并结合具体实例分析了Python实现快速排序的相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • 如何在C++中调用Python

    如何在C++中调用Python

    虽然现在Python编程语言十分的火爆,但是实际上非要用一门语言去完成所有的任务,并不是说不可以,而是不合适。在一些特定的、对于性能要求比较高的场景,还是需要用到传统的C++来进行编程的。本文将用C++的代码去调用Python函数中实现的一些功能
    2021-05-05
  • Python写了个疫情信息快速查看工具实例代码

    Python写了个疫情信息快速查看工具实例代码

    本次使用PyQt5开发了一款疫情信息快速查看工具,实现了多个数据源的查看,代码量不大,功能相当于浏览器,只是限定了一些特定网址,这篇文章主要介绍了Python写了个疫情信息快速查看工具,需要的朋友可以参考下
    2022-11-11
  • python、java等哪一门编程语言适合人工智能?

    python、java等哪一门编程语言适合人工智能?

    哪一门编程语言适合人工智能?这篇文章主要为大家详细介绍了python编程语言适合人工智能的原因、优点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 如何用python绘制雷达图

    如何用python绘制雷达图

    这篇文章主要介绍了如何用python绘制雷达图,帮助大家更好的利用python进行数据分析,感兴趣的朋友可以了解下
    2021-04-04
  • 基于Python PaddleSpeech实现语音文字处理

    基于Python PaddleSpeech实现语音文字处理

    PaddleSpeech基于飞桨PaddlePaddle的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型。本文将介绍如何通过PaddleSpeech实现语音文字处理,感兴趣的可以学习一下
    2022-01-01
  • Python真题案例之蛇形数组详解

    Python真题案例之蛇形数组详解

    这篇文章主要介绍了python实操案例练习,本文给大家分享的案例中主要讲解了蛇形数组,需要的小伙伴可以参考一下
    2022-03-03
  • Python使用文件操作实现一个XX信息管理系统的示例

    Python使用文件操作实现一个XX信息管理系统的示例

    这篇文章主要介绍了Python使用文件操作实现一个XX信息管理系统的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python接口自动化之浅析requests模块post请求

    Python接口自动化之浅析requests模块post请求

    这篇文章Python接口自动化之浅析requests模块post请求,以下主要介绍requests模块中的post请求的使用,post源码,data、json参数应用场景及实战
    2021-08-08

最新评论