当前位置 主页 > 网站技术 > 代码类 >

    pygame实现烟雨蒙蒙下彩虹雨

    栏目:代码类 时间:2019-11-11 21:05

    学习了一天的深度学习,略有疲惫,我们用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()

    效果展示

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

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