python实现游戏背景滚动(图片轮播)

目录

一.python实现图片轮播

1.1 轮播效果

1.2 效果实现分析

1.2.1 pycharm导入pygame模块

开始编程前,先要安装pygame模块。打开pycharm,依次点击
File->settings->Project:->Project Interpreter->点击右侧”+”号->install Package*

python实现游戏背景滚动(图片轮播)

python实现游戏背景滚动(图片轮播)

1.2.2 代码实现分析

要使得图片不断进行轮播,需要将整段代码置于while循环中,设置标志值running,当检测到running值改变,将会退出程序。

running = True
while self.running:
    # 计算元素坐标及生成元素
    self.action()
    # 绘制元素图片
    self.draw()
    # 处理事件
    self.handle_event()
    # 更新画布设置fps
    self.set_fps()

要将场景进行绘制,首先对数据进行初始化

        # 用元组设置窗口的大小
        self.size = (630,490)
        self.scene = pygame.display.set_mode([self.size[0],self.size[1]])
        pygame.display.set_caption("scene_move")
        # 初始化计时器
        self.timer = pygame.time.Clock()
        # 加载图片
        self.image1 = pygame.image.load("images/I.jpg")
        self.image2 = pygame.image.load("images/Love.jpg")
        self.image3 = pygame.image.load("images/you.jpg")
        # 图片初始位置的横坐标
        self.y1 = 0
        self.y2 = self.size[0]
        self.y3 = self.size[0] * 2

绘制轮播图片,使用pygame中的blit方法。blit函数声明如下。函数功能为在一张图上面绘制另一张图片,第一个参数为想要绘制在画布上的资源,第二个参数为想要绘制的区域,该区域将画布展示成为一个以画布左上角为坐标原点,右边为坐标系横坐标正方向,下边为坐标系中坐标负方向。

def blit(self, source, dest, area=None, special_flags=0): # real signature unknown; restored from __doc__
"""
        blit(source, dest, area=None, special_flags=0) -> Rect
        draw one image onto another
"""

图片进行轮播,需要将图片位置的横坐标不断变化,同时需要不断的在画布上进行绘制。

python实现游戏背景滚动(图片轮播)

每次while循环图片在画布中的位置向左偏移2个像素,当达到边界恢复到原来位置,实现图片的轮播。

    def action(self):
        #每次向左偏移2个像素
        self.y1 = self.y1 - 2
        self.y2 = self.y2 - 2
        self.y3 = self.y3 - 2,重新回到0.self.size[0]为画布的宽度值
        #当偏移到最左侧-(self.size[0] * 2处)
        if self.y1 <= 2 -(self.size[0] * 2): self.y1="0" if self.y2 <="-self.size[0]:" self.y3 def draw(self): self.scene.blit(self.image1, (self.y1, 0)) self.scene.blit(self.image2, (self.y2, self.scene.blit(self.image3, (self.y3, code></=>

每次循环都需要将画布进行更新

    def set_fps(self):
        # &#x5237;&#x65B0;&#x663E;&#x793A;
        pygame.display.update()
        # &#x8BBE;&#x7F6E;&#x5E27;&#x7387;&#x4E3A;60fps
        self.timer.tick(60)

二.python实现游戏背景

2.1 背景效果

2.2 效果实现分析

游戏背景为一张图片进行上下轮播,所以先将一张图片进行拷贝

self.image1 = pygame.image.load(“images/newmap1.jpg”)
self.image2 = copy.copy(self.image1)

与图片轮播相比,更改其draw函数横坐标不变,纵坐标改变绘制图片;更改action函数,使其向左偏移

    def action(self):
        self.y1 = self.y1 + 1
        self.y2 = self.y2 + 1
        if self.y1 >= self.size[1]:
            self.y1 = 0
        if self.y2 >= 0:
            self.y2 = -self.size[1]

    def draw(self):
        self.scene.blit(self.image1, (0, self.y1))
        self.scene.blit(self.image2, (0, self.y2))

照此思路,很容易完成python实现动画的制作

python实现游戏背景滚动(图片轮播)

Original: https://blog.csdn.net/lucklycoder/article/details/124232152
Author: 妙乌
Title: python实现游戏背景滚动(图片轮播)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/779164/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Flask——使用sqlalchemy的配置

    flask对mysql数据库的操作要预先安装mysql数据库,安装的方法可以参考以下博主的文章:https://blog.csdn.net/zhouzezhou/article/d…

    Python 2023年8月11日
    034
  • Python数据分析与展示——Pandas基本操作

    1.Pandas介绍 Pandas 一个强大的分析结构化数据的工具集,基础是 [Numpy](提供高性能的矩阵运算)。 Pandas 可以从各种文件格式比如 CSV、JSON、SQ…

    Python 2023年8月17日
    057
  • python爬虫练习(flask框架部分)

    这边是flask框架+echarts+wordcloud练习部分。 flask框架 flask框架需要使用Flask , render_template两个库(后者用来返回模板ht…

    Python 2023年8月13日
    049
  • 【Matlab】曲线拟合

    曲线拟合 插值与拟合的区别: 实现方法:插值要求曲线穿过样本点,而拟合不需要穿过样本点,只要求总体误差最小。 结果形式:插值是分段逼近样本点,没有同一的逼近函数;函数拟合则用一个函…

    Python 2023年10月27日
    054
  • 深度强化学习-DQN算法原理与代码

    DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚至超越人类玩家的水准,本文就带领大家了解一下这个算法,论文和代码的链接见下方。 论文:Hu…

    Python 2023年10月9日
    057
  • Scrapy框架的个人理解和总结

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年10月4日
    028
  • python –Matplotlib详解

    安装 pip install matplotlib 导包 import matplotlib.pyplot as plt 绘制散点图 如果输入的是两个列表,一个表示 x 轴的值,一…

    Python 2023年8月2日
    058
  • pytest与unittest对比及常见用法学习笔记

    实现方式1)函数来实现的,但是函数名称不固定 @pytest.fixture def fix(): pass 2)前置操作,后置操作,写在一个函数里 @pytest.fixture…

    Python 2023年9月12日
    054
  • python对月饼数据进行可视化,看看哪家最划算

    前言 嗨喽~大家好呀,这里是魔王呐 ! 中秋节,又称拜月节、月光诞、月夕等,节期在每年的农历八月十五日(九月十)。 中秋节自古以来就有祭月、赏月、吃月饼、玩花灯、赏桂花、饮桂花酒等…

    Python 2023年8月15日
    065
  • 从ObjectPool到CAS指令

    相信最近看过我的文章的朋友对于 Microsoft.Extensions.ObjectPool不陌生;复用、池化是在很多高性能场景的优化技巧,它能减少内存占用率、降低GC频率、提升…

    Python 2023年10月16日
    025
  • 【Pymongo】Cursor类 可调用函数详解

    clone() Get a clone of this cursor. 获取此光标的克隆。 collation(collation: Optional[Union[Mapping[…

    Python 2023年6月12日
    063
  • 【C结构体】初识结构体

    ⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏+留言 ⭐系列专栏:C语言初阶 ⭐代码仓库:C Advanced 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦…

    Python 2023年10月27日
    041
  • Python学习笔记2(pygame深入研究,战机游戏)

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年9月24日
    045
  • scrapy mysql pipeline_关于同时开启json Pipeline和 mysql Pipeline的问题

    第一种情况: ITEM_PIPELINES = { ‘scrapy.pipelines.images.ImagesPipeline’:1, ‘A…

    Python 2023年10月6日
    038
  • 【Java IO流】缓冲流及原理详解

    文章目录 前言 字节缓冲流 原理 字符缓冲流 Java编程基础教程系列 前言 前面我们已经学习了四种对文件数据操作的基本流,字节输入流,字节输出流,字符输入流,字符输出流。为了提高…

    Python 2023年11月7日
    040
  • Python获取手机4K壁纸,一个入门练手的案例

    前言 一. 数据来源分析 明确需求, 我们采集网上什么数据内容, 在什么地方 分析我们想要高清原图在什么地方有 浏览器自带工具: 开发者工具 F12 鼠标右键点击 插件 选择 ne…

    Python 2023年10月31日
    028
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球