6.pygame图片移动

这篇具有很好参考价值的文章主要介绍了6.pygame图片移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:我们在学习这节课的内容前,先给出我们的示例图片吧

pygame移动图片,pygame,pygame,python
bird.png

 

上节课我们学习了把图片绘制到屏幕上的函数,上节课应该已经猜到只要改变传入的xy的参数即可。不过我们这节课主要学习改变rect对象来实现图片移动。

​
blit(source, dest=(x, y), area=None, special_flags=0)

​

 对了!我们还要搭建程序框架呢!

​
#导入模块
import pygame
import sys

class Game:
    def __init__(self):
        pygame.init()#在使用pygame之前要先初始化
        self.bird = pygame.image.load("bird.png")#导入bird.png图片
        self.screen = pygame.display.set_mode((800, 600))#创建一个800*600的窗口
        pygame.display.set_caption("Game")#设置窗口标题为”Game“


    def Listen(self):#事件监测
        for event in pygame.event.get():#事件监测
            if event.type == pygame.QUIT:#点“X”号退出
                pygame.quit()
                sys.exit()

    def main(self):
        while True:#程序主循环
            self.Listen()#事件监测
            self.screen.blit(self.bird, (400, 300))#将bird.png绘制的400,300的位置
            pygame.display.flip()#屏幕刷新

if __name__ == '__main__':
    game = Game()
    game.main()

​

 

我们先来讲一下第一种比较简单的方法吧:我们先在Game类的__init__的初始化的函数中添加一个自定义速度的变量和初始的x位置

self.speed = 5
self.x = 50

接着我们在Game类的main函数中的while循环中添加一个增加x的操作

self.x += 1

这样的作用是在每次循环中增加1个像素。但是这样还是不能改变图片的位置,我们还要改变绘制方法。我们把Game类的main函数中的while循环中的blit函数改成

self.screen.blit(self.bird, (self.x, 300))

运行后你应该会看的如下

pygame移动图片,pygame,pygame,python

 一只小鸟拖着尾迹向右边移动。那是因为没有刷新屏幕,我们要在Game类的main函数中的while循环中添加

self.screen.fill((0, 0, 0))

现在我们再运行

pygame移动图片,pygame,pygame,python

现在正常了

我们给一下最终代码

#导入模块
import pygame
import sys

class Game:
    def __init__(self):
        pygame.init()#在使用pygame之前要先初始化
        self.bird = pygame.image.load("bird.png")#导入bird.png图片
        self.screen = pygame.display.set_mode((800, 600))#创建一个800*600的窗口
        pygame.display.set_caption("Game")#设置窗口标题为”Game“
        self.speed = 5
        self.x = 50

    def Listen(self):#事件监测
        for event in pygame.event.get():#事件监测
            if event.type == pygame.QUIT:#点“X”号退出
                pygame.quit()
                sys.exit()

    def main(self):
        while True:#程序主循环
            self.x += 1
            self.Listen()#事件监测
            self.screen.blit(self.bird, (self.x, 300))#将bird.png绘制的400,300的位置
            pygame.display.flip()#屏幕刷新
            self.screen.fill((0, 0, 0))
if __name__ == '__main__':
    game = Game()
    game.main()

方法2: 我们在Game类的__init__初始化函数中添加

self.bird_rect = self.bird.get_rect()

这个函数是用来求图片的rect区域,其中没有参数。再添加

self.bird_rect.center = (50, 300)

这个函数是用来设置图片的初始位置,center代表中间做锚点,其他我就先不说了,想要拓展的可以自己去网上搜一下。

我们在我们要在Game类的main函数中的while循环中添加

self.bird_rect.move_ip(1, 0)

这个函数用来改变xy的位置,正数为加,负数为减。

move_ip(x, y)

我们把Game类的main函数中的while循环中的blit函数改成

self.screen.blit(self.bird, self.bird_rect)

运行一下

pygame移动图片,pygame,pygame,python

我们最后给一下最终代码

#导入模块
import pygame
import sys

class Game:
    def __init__(self):
        pygame.init()#在使用pygame之前要先初始化
        self.bird = pygame.image.load("bird.png")#导入bird.png图片
        self.screen = pygame.display.set_mode((800, 600))#创建一个800*600的窗口
        pygame.display.set_caption("Game")#设置窗口标题为”Game“
        self.bird_rect = self.bird.get_rect()
        self.bird_rect.center = (50, 300)

    def Listen(self):#事件监测
        for event in pygame.event.get():#事件监测
            if event.type == pygame.QUIT:#点“X”号退出
                pygame.quit()
                sys.exit()

    def main(self):
        while True:#程序主循环
            self.bird_rect.move_ip(1, 0)
            self.Listen()#事件监测
            self.screen.blit(self.bird, self.bird_rect)#将bird.png绘制的400,300的位置
            pygame.display.flip()#屏幕刷新
            self.screen.fill((0, 0, 0))
if __name__ == '__main__':
    game = Game()
    game.main()

 下节预告:我们会学习pygame的Sprite

拜拜!文章来源地址https://www.toymoban.com/news/detail-603146.html

到了这里,关于6.pygame图片移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python读取vivo手机截图,将满屏图片文件移动别的路径

    问题之初 好多这样的图片,占用手机大量的内存,食之无味弃之可惜!那么会复制粘贴👀代码的我们我们今天就把这些图片筛选清理掉。 原有逻辑的基础上,加入了一些有趣的注释,以提升代码的可读性和娱乐性。希望您喜欢这个可爱又有趣的版本! 这个完整的 代码可以

    2024年02月07日
    浏览(37)
  • 秒会Pygame:键盘移动和鼠标点击移动物体的方法(含完整的代码)

    目录 预备知识 键盘控制物体移动事件 鼠标点击控制物体移动事件 鼠标移动的同时画彩色小球 预备知识 pygame的基本函数介绍 1.初始化函数,pygame的必备  pygame.init()   2.设置屏幕的大小 pygame.display.set_mode(size) //(长,宽) 3. 程序的命名 pygame.display.set_caption(\\\"string\\\") 4.屏幕的颜

    2023年04月08日
    浏览(35)
  • 使用pygame让方向键实现角色的移动和转向

    pygame小鱼 transform.flip(Surface,xbool,ybool)可以将图片进行翻转,返回一个新图像 Surface:需要翻转的图像 xbool:是否水平翻转,True/False ybool:是否垂直翻转,True/False

    2024年02月04日
    浏览(40)
  • pygam第2课——pygame加载图片

    2024年02月03日
    浏览(23)
  • Pygame中实现图片旋转

    在Pygame中实现图片的移动_pygame实现图片移动-CSDN博客中我们实现了一个移动的大猩猩,接下来在该程序的基础上实现大猩猩图片的旋转,也就是点击了鼠标后,大猩猩旋转一周,之后继续移动。 首先为Chimp类也就是大猩猩类添加旋转的方法,代码如图1所示。 图1 Chimp类的旋转

    2024年02月03日
    浏览(26)
  • pygame如何添加背景图片

    Pygame可以使用pygame.image模块来添加背景图片,方法如下: 使用pygame.image.load( )加载图片; 使用pygame.transform.scale( )缩放图片; 使用pygame.display.set_mode( )创建一个新的显示窗口; 使用pygame.display.get_surface( )获取窗口表面; 使用pygame.display.update( )更新窗口表面; 使用pygame.display

    2024年02月11日
    浏览(41)
  • 【Pygame 学习笔记】3.导入图片并绘制

    上一篇文章,我们讲解了如何用Pygame绘制图形,这篇文章,我们来讲解Pygame如何引入图片 这篇文章需要用到的素材: 0.png 我们创建一个resources文件夹,处于python文件的同一目录下,将图片存储于该文件夹中。  先给出Pygame框架的基本代码 首先,我们要创建一个path常量,指向

    2024年02月16日
    浏览(28)
  • pygame中将图片填充到适合显示屏幕大小

            在pygame中显示背景图片时有时候会出现背景图片与显示屏幕大小不一的情况,这个程序应该能帮到你。 

    2024年02月06日
    浏览(37)
  • 最新版pygame无法显示图片问题解决方法

    Hi~ o(* ̄▽ ̄*)ブ新人第一次写文章,可能比较差,不喜勿喷哦 最近在使用最新版的pygame时遇到了一个问题,当我使用常规的显示图片代码时,这图片不知道怎么肥四显示不出来了 下面是运行结果 好吧,什么都显示不出来 一开始我整个人都懵了,以为是blit那里出错了。然后

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包