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

【python小工具】图片生成滚动效果的gif # 相关库 import imageio from PIL import Image # 以下库用来识别图片主颜色 import pandas as pd import numpy as np def img2gif(image, offset=10, from_='r', show_size=0, has_out=False, bgc=''): """ offset: 每次移动像素 from: l, r, u, d 对应左右上下 show_size: 滚动窗口大小 阅读详情

目录

一.python实现图片轮播

1.1 轮播效果

1.2 效果实现分析

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

在这里插入图片描述

在这里插入图片描述

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
    """

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

每次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 <= -(self.size[0] * 2):
            self.y1 = 0
        if self.y2 <= -self.size[0]:
            self.y2 = self.size[0]
        if self.y3 <= 0:
            self.y3 = self.size[0] * 2

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

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

    def set_fps(self):
        # 刷新显示
        pygame.display.update()
        # 设置帧率为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实现动画的制作
在这里插入图片描述

实现长图片自动循环滚动效果,android实战开发-天气预报PPT public ViewHolder(final View itemView) { super(itemView); item_bg = itemView.findViewById(R.id.item_bg); } } } 2.控制smoothScrollToPosition的滑动速度 参考RecyclerView调用smoothScrollToPosition() 控制滑动速度,修改MILLISECONDS_PER_INCH的值即可 /** 更改RecyclerView滚动的速度 */ public cl 阅读详情

相关推荐

用Python做的马里奥小游戏

!/usr/bin/env pythonimport pygame,os,wx from random import randint from sys import exit from pygame.locals import * pygame.init()def main(): #获取屏幕大小 app=wx.App() WHFRAMES=wx.DisplaySize() WIDTH=int(WHFRAMES[0]*0.7) HEIGHT=int(WHFRAMES[1]*0.8) Timers = 0 #游

q123jbgjbh的博客 2723

用css动画实现无缝滚动效果

做无缝滚动效果,从来一个superslide搞定一切,但平凡的某一天,UI提出了一个问题:这块一直在抖动啊。我定睛一看:确实是在抖,这……找了其他的插件,效果都不尽如人意。最后,参考蓝湖,用css动画实现。

qq_40019058的博客 507

pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法

今天小编就为大家分享一篇pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

jQuery动画效果实现图片无缝连续滚动

效果图如下: 一、HTML代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 body>    div id="container">      ul id="content">        li>a href="#">img src="images/0.png"/>a>l

qq3892997的博客 5368

c语言压力变送器程序设计,基于单片机的压力变送器设计

基于单片机的压力变送器设计(任务书,开题报告,外文翻译,论文15000字,代码)摘要随着工业化水平的不断提高,新型智能仪表在工业生产过程中运用也越来越广泛,同时对输出数据的准确检测和处理也变得至关重要。生产过程的运行和设备安全是极其重要的,那么如何实现对其精确的检测呢?众所周知,在工业生产过程中有一个很重要参数——压力,显然这个参数是一个必不可少的条件。故而,研究智能压力变松器系统对工业生产有着不...

weixin_33681561的博客 1962

Python 打包与发布陷阱:如何用 setuptools 和 PyInstaller 生成跨平台可执行文件?

使用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1206

[Python] 制作超级玛丽游戏

python制作超级玛丽游戏 这篇文章,我们优先介绍超级玛丽游戏中的多状态跳跃,和行走地图拖动的原理,然后实现。并实现倒计时和金币动态效果

码来的小朋友的博客 1万+

GD32F103实战:用ADC+DMA实现高精度多通道电压采集与OLED实时显示(附完整工程)

本文详细介绍了如何利用GD32F103的ADC+DMA技术实现高精度多通道电压采集,并通过OLED实时显示数据。文章包含硬件架构设计、ADC配置技巧、DMA传输优化及显示系统实现方案,提供完整工程代码和调试指南,适用于工业传感器和环境监测设备开发。

weixin_42567497的博客 399

盘点你小时候玩过的游戏,有都玩过的吗?用Python实现马里奥来恋旧

python制作超级玛丽游戏,供大家参考,具体内容如下 这篇文章,我们优先介绍超级玛丽游戏中的多状态跳跃,和行走地图拖动的原理,然后实现。并实现倒计时和金币动态效果 接下来用下面这四张图,就可以完全懂得游戏中背景是怎么会移动的。 图1 图2 图3 图4 由于代码是我前几年学习python的时候做的,代码写的很挤都整到一个源文件中,大家看的时候仔细。 然后上源代码: #!/usr/bin/env python # -*- coding:utf-8 -*- import pygame,os,w

yunyun云芸 377

Ubuntu 22.04 安装 PostgreSQL + AGE + pgvector 完全指南

本教程详细介绍了在Ubuntu 22.04服务器上安装PostgreSQL数据库,并为其添加AGE图数据库扩展和pgvector向量搜索扩展的步骤。首先,更新系统并安装PostgreSQL,然后通过源码构建并安装AGE和pgvector扩展。接着,配置PostgreSQL以使用这些扩展,并可选地允许远程连接。教程还包括创建用户、设置密码、验证安装以及安装后的优化建议。最后,提供了常见问题的解决方法。通过本教程,用户可以在同一数据库中处理关系型数据、图数据和向量数据,为现代应用程序提供强大的数据支持。

这个是个人博客,记录生活中的一些日常。 1742

保姆级教程:用COMSOL LiveLink™ for MATLAB 玩转自定义PDE,从理论到仿真一条龙

本文详细介绍了如何利用COMSOL LiveLink™ for MATLAB实现自定义PDE的从理论到仿真的完整流程。通过PDE模块与MATLAB的无缝集成,用户可以灵活处理非标准偏微分方程,适用于材料建模、传热传质验证等多物理场耦合研究。教程涵盖环境配置、方程标准化、界面操作及高级应用技巧,为工程仿真研究者提供原子级控制方案。

weixin_34098209的博客 354

分享116个图片JS特效,总有一款适合您

分享116个图片JS特效,总有一款适合您

weixin_47730343的博客 1322

SAP S/4HANA 数据归档的实施方法

实施 SAP S/4HANA 数据归档是一个系统的过程,涉及到策略的定义、技术的执行以及后续的维护和验证。正确的归档策略不仅能优化系统性能,还能帮助企业降低运营成本,确保数据安全,并符合相关法律法规的要求。通过以上案例,我们可以看到不同行业如何依据自己的业务需求和法规要求,利用 SAP S/4HANA 的强大功能来实现数据归档的目标。这些实践证明了数据归档在现代企业信息管理中的重要地位和作用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 889

分享111个JS图片切换特效,总有一款适合您

JS

zy0412326的专栏 1267

知识图谱-构建:知识图谱构建流程【本体构建、知识抽取(实体抽取、 关系抽取、属性抽取)、知识表示、知识融合、知识存储】

旅游领域的类是用来描述旅游的抽象化概念术语,是对众多旅游个体共性的概念化描述。术语是划分类的基础,根据构建领域本体的目标和具体需要,可以确定哪些术语能作为领域本体的类。在以上抽取的众多旅游领域术语中,有些是能直接作为类的,如旅游、人物、交通方式、景区等等,而有些则不能作为类,如票价、景区门票、联系方式等等,它们只是属性。“旅游”很明显是最顶层的类,是父类。然后,要确定旅游的子类,根据大众标签里体现的共性和《中国分类主题词表》确定了旅游领域的11个核心概念,即本体层次结构图数据属性(固有属性)...

u013250861的博客 4万+

【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)

摘要:DOTween动画插件使用指南 DOTween是Unity中强大的动画插件,比原生动画更便捷。安装后需进行初始化设置,通过工具菜单生成程序集。主要提供通用方法(DOTween.To)和便捷方法(如transform.DOMove)两种动画实现方式。插件支持丰富的动画设置(循环、缓动等)和事件回调(OnComplete、OnKill)。还提供动画管理功能,包括清除(DOTween.Clear)、完成(DOTween.CompleteAll)和终止(DOTween.KillAll)动画。常用功能涵盖移动、

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

分享112个图片切换,总有一款适合您

js

zy0412326的专栏 963

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python:点击就能玩的超级玛丽小游戏(附有源码)

程序代码 import pygame,os,wx from random import randint from sys import exit from pygame.locals import * pygame.init() def main(): #获取屏幕大小 app=wx.App() WHFRAMES=wx.DisplaySize() WIDTH=int(WHFRAMES[0]*0.7) HEIGHT=int(WHFRAMES[1]*0.8) Timers = 0 #游戏定时器

Terry_20100630的博客 5776

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

分享113个图片切换JS特效,总有一款适合您

js特效

zy0412326的专栏 1582

分享114个图片切换JS特效,总有一款适合您

JS

zy0412326的专栏 807

分享126个JS图片代码,总有一款适合您

JS

zy0412326的专栏 596
上一篇: C语言中extern关键字用法
下一篇: 判断数字字符——Character.isDigit(char ch)实现源码详解
Jial-(^V^)
博客等级 码龄9年 910粉丝 65原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值