python小欢喜(六)动画 (2) 移动的笑脸

系统 1727 0

在前一篇文章《python小欢喜(六)动画 (1) pygame的安装与初步使用》中介绍了如何安装pygame。接下来咱们用pygame做一些有趣的动画效果

显示笑脸图片

python小欢喜(六)动画 (2) 移动的笑脸_第1张图片
python代码如下:

            
              
                # -*- coding:utf-8 -*- 
              
              
                # showPic.py
              
              
                # 显示笑脸图处
              
              
                import
              
               pygame        
              
                # 导入pygame模块
              
              
pygame
              
                .
              
              init
              
                (
              
              
                )
              
              
screen 
              
                =
              
               pygame
              
                .
              
              display
              
                .
              
              set_mode
              
                (
              
              
                [
              
              
                800
              
              
                ,
              
              
                600
              
              
                ]
              
              
                )
              
              
keep_going 
              
                =
              
              
                True
              
              
pic 
              
                =
              
               pygame
              
                .
              
              image
              
                .
              
              load
              
                (
              
              
                "CrazySmile.bmp"
              
              
                )
              
              
                #加载当前目录下的图片文件 CrazySmile.bmp
              
              
                while
              
               keep_going
              
                :
              
              
                # 事件处理循环
              
              
                for
              
               event 
              
                in
              
               pygame
              
                .
              
              event
              
                .
              
              get
              
                (
              
              
                )
              
              
                :
              
              
                if
              
               event
              
                .
              
              
                type
              
              
                ==
              
               pygame
              
                .
              
              QUIT
              
                :
              
               
            keep_going 
              
                =
              
              
                False
              
              
    screen
              
                .
              
              blit
              
                (
              
              pic
              
                ,
              
              
                (
              
              
                100
              
              
                ,
              
              
                100
              
              
                )
              
              
                )
              
              
    pygame
              
                .
              
              display
              
                .
              
              update
              
                (
              
              
                )
              
              
   
pygame
              
                .
              
              quit
              
                (
              
              
                )
              
              
                # 退出
              
            
          

从源码可知,该程序要能够正确执行,当前目录下需要有一个图片文件 CrazySmile.bmp
在这里插入图片描述

以上只是显示了一副静止的图片,接下要让图片动起来

弹跳的笑脸

实现效果如下:
python小欢喜(六)动画 (2) 移动的笑脸_第2张图片

python代码如下:

            
              
                # -*- coding:utf-8 -*- 
              
              
                # 移动的笑脸
              
              
                import
              
               pygame       
              
                # 导入pygame模块
              
              
pygame
              
                .
              
              init
              
                (
              
              
                )
              
              
screen 
              
                =
              
               pygame
              
                .
              
              display
              
                .
              
              set_mode
              
                (
              
              
                [
              
              
                600
              
              
                ,
              
              
                600
              
              
                ]
              
              
                )
              
              
keep_going 
              
                =
              
              
                True
              
              
pic 
              
                =
              
               pygame
              
                .
              
              image
              
                .
              
              load
              
                (
              
              
                "CrazySmile.bmp"
              
              
                )
              
              
                #加载当前目录下的图片文件 CrazySmile.bmp
              
              
colorkey 
              
                =
              
               pic
              
                .
              
              get_at
              
                (
              
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
                )
              
              
pic
              
                .
              
              set_colorkey
              
                (
              
              colorkey
              
                )
              
              
picx 
              
                =
              
              
                0
              
              
picy 
              
                =
              
              
                0
              
              
BLACK 
              
                =
              
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
timer 
              
                =
              
               pygame
              
                .
              
              time
              
                .
              
              Clock
              
                (
              
              
                )
              
              
speed 
              
                =
              
              
                5
              
              
                while
              
               keep_going
              
                :
              
              
                # 事件处理循环
              
              
                for
              
               event 
              
                in
              
               pygame
              
                .
              
              event
              
                .
              
              get
              
                (
              
              
                )
              
              
                :
              
              
                if
              
               event
              
                .
              
              
                type
              
              
                ==
              
               pygame
              
                .
              
              QUIT
              
                :
              
               
            keep_going 
              
                =
              
              
                False
              
              
    picx 
              
                +=
              
               speed  
              
                # 当speed大于0时,增加图片的X坐标值,否则减少
              
              
    picy 
              
                +=
              
               speed  
              
                # 当speed大于0时,增加图片的Y坐标值,否则减少
              
              
                if
              
               picx 
              
                <=
              
              
                0
              
              
                or
              
               picx 
              
                +
              
               pic
              
                .
              
              get_width
              
                (
              
              
                )
              
              
                >=
              
              
                600
              
              
                :
              
              
        speed 
              
                =
              
              
                -
              
              speed 
              
                #当到达窗口边缘时,速度取反
              
              
    screen
              
                .
              
              fill
              
                (
              
              BLACK
              
                )
              
                  
    screen
              
                .
              
              blit
              
                (
              
              pic
              
                ,
              
              
                (
              
              picx
              
                ,
              
              picy
              
                )
              
              
                )
              
              
    pygame
              
                .
              
              display
              
                .
              
              update
              
                (
              
              
                )
              
              
    timer
              
                .
              
              tick
              
                (
              
              
                60
              
              
                )
              
              
    
pygame
              
                .
              
              quit
              
                (
              
              
                )
              
              
                # 退出
              
            
          

带尾巴的移动的笑脸

实现效果如下:

python代码如下:

            
              
                # -*- coding:utf-8 -*- 
              
              
                # 带尾巴的移动的笑脸
              
              
                import
              
               pygame        
              
                # 导入pygame模块
              
              
pygame
              
                .
              
              init
              
                (
              
              
                )
              
              
screen 
              
                =
              
               pygame
              
                .
              
              display
              
                .
              
              set_mode
              
                (
              
              
                [
              
              
                800
              
              
                ,
              
              
                600
              
              
                ]
              
              
                )
              
              
keep_going 
              
                =
              
              
                True
              
              
pic 
              
                =
              
               pygame
              
                .
              
              image
              
                .
              
              load
              
                (
              
              
                "CrazySmile.bmp"
              
              
                )
              
              
                #加载当前目录下的图片文件 CrazySmile.bmp
              
              
colorkey 
              
                =
              
               pic
              
                .
              
              get_at
              
                (
              
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
                )
              
              
pic
              
                .
              
              set_colorkey
              
                (
              
              colorkey
              
                )
              
              
picx 
              
                =
              
              
                0
              
              
picy 
              
                =
              
              
                0
              
              
BLACK 
              
                =
              
              
                (
              
              
                0
              
              
                ,
              
              
                0
              
              
                ,
              
              
                0
              
              
                )
              
              
timer 
              
                =
              
               pygame
              
                .
              
              time
              
                .
              
              Clock
              
                (
              
              
                )
              
              
speedx 
              
                =
              
              
                5
              
              
speedy 
              
                =
              
              
                5
              
              
                while
              
               keep_going
              
                :
              
              
                # 事件处理循环
              
              
                for
              
               event 
              
                in
              
               pygame
              
                .
              
              event
              
                .
              
              get
              
                (
              
              
                )
              
              
                :
              
              
                if
              
               event
              
                .
              
              
                type
              
              
                ==
              
               pygame
              
                .
              
              QUIT
              
                :
              
               
            keep_going 
              
                =
              
              
                False
              
              
    picx 
              
                +=
              
               speedx 
              
                # 当speedx大于0时,增加图片的X坐标值,否则减少
              
              
    picy 
              
                +=
              
               speedy 
              
                # 当speedy大于0时,增加图片的Y坐标值,否则减少
              
              
                if
              
               picx 
              
                <=
              
              
                0
              
              
                or
              
               picx 
              
                +
              
               pic
              
                .
              
              get_width
              
                (
              
              
                )
              
              
                >=
              
              
                800
              
              
                :
              
              
        speedx 
              
                =
              
              
                -
              
              speedx 
              
                #当到达窗口边缘时,速度取反
              
              
                if
              
               picy 
              
                <=
              
              
                0
              
              
                or
              
               picy 
              
                +
              
               pic
              
                .
              
              get_height
              
                (
              
              
                )
              
              
                >=
              
              
                600
              
              
                :
              
              
        speedy 
              
                =
              
              
                -
              
              speedy 
              
                #当到达窗口边缘时,速度取反
              
              
                #screen.fill(BLACK) # 不做"擦黑板"的操作,达到累加效果,显示出尾巴 
              
              
    screen
              
                .
              
              blit
              
                (
              
              pic
              
                ,
              
              
                (
              
              picx
              
                ,
              
               picy
              
                )
              
              
                )
              
              
    pygame
              
                .
              
              display
              
                .
              
              update
              
                (
              
              
                )
              
              
    timer
              
                .
              
              tick
              
                (
              
              
                60
              
              
                )
              
              
    
pygame
              
                .
              
              quit
              
                (
              
              
                )
              
              
                # Exit
              
            
          

以上动画效果的实现原理,请查看源码及注释,应该不难理解。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论