当前位置: 首页 > 编程笔记 >

pygame实现烟雨蒙蒙下彩虹雨

赏阳嘉
2023-03-14
本文向大家介绍pygame实现烟雨蒙蒙下彩虹雨,包括了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()

效果展示

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

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

 类似资料:
  • 本文向大家介绍js实现蒙版效果,包括了js实现蒙版效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现蒙版效果展示的具体代码,供大家参考,具体内容如下 思路 1.监听按钮的点击 2.阻止冒泡(最关键的一点) 3.让隐藏的显示出来 4.隐藏滚动条 5.点击文档:获取点击的标签 判断:让显示的都隐藏 显示滚动条 最为重要的一点是要阻止事件冒泡 获取对象的id: var tranI

  • 本文向大家介绍使用css实现彩虹的效果相关面试题,主要包含被问及使用css实现彩虹的效果时的应答技巧和注意事项,需要的朋友参考一下

  • 使用指南 组件介绍 提供一个好用的遮罩层 引入方式 import { Mask } from "feart"; components:{ 'fe-mask':Mask } 代码演示 默认 Mask <div class="fe-center"> <fe-mask v-model="type" class-name="box-mask" @onClickMask="onClickMa

  • 在Sketch中,蒙板(Mask)的作用是有选择地显示其他图层的某一部分。例如,在图像上放置一个圆形的蒙板,则只有在圆形里的部分图像会显示出来。 任何形状都可以转换为蒙板。要实现这一点,选中形状,然后在菜单里选择“编辑(Edit) > 做为蒙板(Use as Mask)”。在蒙板以上的任何图层都会被裁剪到蒙板的形状内。 限制蒙板 如果你不希望蒙板以上的图像全都被剪切,限制蒙板作用范围的一种方法是:

  • 本文向大家介绍华为鸿蒙OS之HelloWorld的实现,包括了华为鸿蒙OS之HelloWorld的实现的使用技巧和注意事项,需要的朋友参考一下 这两天有一个很火的话题华为鸿蒙OS2.0。现在个人开发者也可以进行鸿蒙OS的应用或者硬件开发。作为一个“啥也不会的程序员”,时刻要保持着学习的心态,所以本文将会介绍基于鸿蒙OS的应用开发。 官网:https://www.harmonyos.com/ 入学第

  • 按下按钮,灯环显示如下效果,行如彩虹。 1. 添加事件类积木 当按钮被按下时。 2. 添加灯光类积木 显示(),让灯环亮起彩虹图案。 3. 按下光环板的按钮看看吧! 下载代码