pygame入门学习(四)位图的使用

大家好!我是码银🥰

欢迎关注🥰:

CSDN:码银

公众号:码银学编程

载入图片

pygame.image.load( ),Pygame 可以通过pygame.image.load( )函数处理位图文件。

大致可以支持以下文件:JPG、PNG、GIF、BMP、PCX、TGA、TIF、LBM、PBM、PGM、PPM、XPM。

1、加载背景图片主要有两行代码:

asurf = pygame.image.load('test.jpg').convert()
screen.blit(asurf, (0, 0))#加载背景图片

下面来看一下这段代码在整体代码中的位置:

import pygame
from pygame.locals import*
import syspygame.init()screen = pygame.display.set_mode((800,600))
pygame.display.set_caption("图片")
asurf = pygame.image.load('test.jpg').convert()
while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()screen.blit(asurf, (0, 0))pygame.display.update()

2、背景图片上显示另一幅图片

import pygame
from pygame.locals import*
import syspygame.init()screen = pygame.display.set_mode((751,521))
pygame.display.set_caption("图片")
asurf = pygame.image.load('test.png').convert()
moon = pygame.image.load('moon.png').convert()
while True:for event in pygame.event.get():if event.type == QUIT:sys.exit()screen.blit(asurf, (0, 0))screen.blit(moon, (100,200))pygame.display.update()

可以看到背景图是一张“星星”的图片,左下角贴了一张月球的图片。

screen.blit(asurf, (0, 0))
screen.blit(moon, (100,200))

这段代码按照这个顺序,那么月球就会在背景图的上方显示,代码的先后顺序代表着图片的覆盖关系。

下面部分,本想控制月球移动的,但是图片太大,于是随找了一个小的图片进行测试。

控制图片移动

先看代码

import pygame
import sys# 初始化Pygame
pygame.init()# 设置窗口大小和标题
window_width = 800
window_height = 600
window_title = "图片移动示例"
screen = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption(window_title)# 加载图片
image_path = "brick.png"
image = pygame.image.load(image_path)
image_rect = image.get_rect()# 设置初始位置
image_rect.x = 0
image_rect.y = 0# 游戏循环
while True:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()# 移动图片keys = pygame.key.get_pressed()if keys[pygame.K_LEFT] and image_rect.x > 0:image_rect.x -= 1if keys[pygame.K_RIGHT] and image_rect.x < window_width - image_rect.width:image_rect.x += 1if keys[pygame.K_UP] and image_rect.y > 0:image_rect.y -= 1if keys[pygame.K_DOWN] and image_rect.y < window_height - image_rect.height:image_rect.y += 1# 绘制图片和窗口边界screen.fill((0, 0, 0))  # 填充背景色为黑色screen.blit(image, image_rect)  # 在指定位置绘制图片pygame.display.update()  # 更新显示内容

如何去控制图片移动,这部分代码是与上一篇文章(pygame学习(三)——支持多种类型的事件-CSDN博客)相结合起来 的,将图片与键盘事件相结合,以此来控制图片的移动。

pygame键盘控制图片移动

image.get_rect()方法

 是 Pygame 中的一个方法,用于获取图像的矩形区域。这个矩形区域表示图像在屏幕上的位置和大小。

当你加载一个图像到 Pygame 中时,你可以使用 get_rect() 方法来获取该图像的矩形对象。这个矩形对象具有 x 和 y 属性,分别表示矩形左上角的坐标,以及 width 和 height 属性,分别表示矩形的宽度和高度。

例如上面代码中设置图片的初始位置:

# 设置初始位置
image_rect.x = 0
image_rect.y = 0

图片移动

        # 移动图片
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and image_rect.x > 0:image_rect.x -= 1
if keys[pygame.K_RIGHT] and image_rect.x < window_width - image_rect.width:image_rect.x += 1
if keys[pygame.K_UP] and image_rect.y > 0:image_rect.y -= 1
if keys[pygame.K_DOWN] and image_rect.y < window_height - image_rect.height:image_rect.y += 1

这段代码是使用Pygame库来控制图片在屏幕上的移动。具体来说,它通过检测用户的键盘输入来移动一个图片对象。以下是这段代码的总结:

  • 获取按键状态: 使用pygame.key.get_pressed()函数来获取当前所有按键的状态。

  • 图片移动逻辑:

    • 如果用户按下左键,并且图片的x坐标大于0,则将图片的x坐标减少1,使图片向左移动。
    • 如果用户按下右键,并且图片的x坐标小于屏幕宽度减去图片宽度,则将图片的x坐标增加1,使图片向右移动。
    • 如果用户按下上键,并且图片的y坐标大于0,则将图片的y坐标减少1,使图片向上移动。
    • 如果用户按下下键,并且图片的y坐标小于屏幕高度减去图片高度,则将图片的y坐标增加1,使图片向下移动。

既然都看到这里啦,点点赞吧😁,欢迎关注:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--文件链接

目录 1.建立软连接 2.建立硬链接 3.什么是软链接 Linux中软链接的应用场景 4.什么是硬链接 5.文件与目录的硬链接数 6.软链接与硬链接的区别 用户无法对目录建立硬链接&#xff0c;可以建立软连接。 在Linux中文件的链接有两种&#xff1a;1.软连接 2.硬链接 1.建立软…

Oracle 高级网络压缩 白皮书

英文版白皮书在这里 或 这里。 本文包括了对英文白皮书的翻译&#xff0c;和我觉得较重要的要点总结。 执行概述 Oracle Database 12 引入了一项新功能&#xff1a;高级网络压缩&#xff0c;作为高级压缩选项的一部分。 本文概述了高级网络压缩、其优点、配置细节和性能分析…

HTML+CSS:3D轮播卡片

效果演示 实现了一个3D翻转的卡片动画&#xff0c;其中每个卡片都有不同的图片和不同的旋转角度。整个动画循环播放&#xff0c;无限次。整个页面的背景是一个占据整个屏幕的背景图片&#xff0c;并且页面内容被隐藏在背景图片之下。 Code <div class"container"…

redis 入门及相关知识汇总

什么是 Redis &#xff1f; 1&#xff0c;相对于mysql &#xff0c;oracle &#xff0c; 这种关系西数据库&#xff0c; 我们还有非关系数据库服务&#xff0c;他的产生是为了&#xff0c;解决常规数据库的并发能力&#xff0c;传统的关系型数据库受限于IO 和性能瓶颈&#xff…

【解决方法】pdf密码忘了怎么办?

PDF文件可以加密&#xff0c;大家都不陌生&#xff0c;并且大家应该也都知道PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密&#xff1f; PDF和offi…

异步编程(JS)

前言 想要学习Promise&#xff0c;我们首先要了解异步编程、回调函数、回调地狱三方面知识&#xff1a; 异步编程 异步编程技术使你的程序可以在执行一个可能长期运行的任务的同时继续对其他事件做出反应而不必等待任务完成。 与此同时&#xff0c;你的程序也将在任务完成后显示…

微服务Spring Cloud架构详解

"Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具&#xff08;例如配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff09;。分布式系统的协调导致了样板模式, 使用Spring Cloud开…

Flowable_dmn决策引擎应用

Flowable官方文档 https://www.flowable.com/open-source/docs/dmn/ch02-Configuration 对flowable的bpmn和dmn应用都比较熟悉&#xff0c;前后应用了好几年&#xff0c;年终总结需要这部分&#xff0c;文档就写一下分享给大家&#xff0c;搭建和资源下载参考&#xff1a; flo…

怎么提升数据分析能力?——功法篇(下)

先来复习一下上篇提到的3个疑问&#xff1a; 为什么我做出来的分析总觉得没有别人的那么高级&#xff1f; 老板为什么总说我的分析“太浅了”&#xff1f; 数据分析师每天的工作就是取数做需求&#xff1f; 看完上篇讲的金字塔原理&#xff0c;如果你还有疑问&#xff0c;不妨再…

【江科大】STM32:TIM输入捕获(理论部分)

文章目录 IC&#xff08;Input Capture&#xff09;输入捕获PWM频率 知识点补充1. 滤波器的工作原理&#xff1a;2. 边沿检测器&#xff1a;自动化清零CNT输入捕获的基本结构PWMI基本结构滤波器和分频器的区别误差分析pwm.cmain.cIC.c PWM模式测频率和占空比 IC&#xff08;Inp…

手机备忘录设置提醒后不通知怎么办 解决方法来了

在这个快节奏的时代&#xff0c;我们每个人都像是旋转的陀螺&#xff0c;总有无数的事项需要记录。手机备忘录&#xff0c;无疑成为了我们的得力助手。它轻便、简单&#xff0c;随时随地都能捕捉那些一闪而过的灵感和任务。 然而&#xff0c;有时我们会遇到这样的困扰&#xf…

Django入门,十分钟学会登录网页

我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装&#xff0c;且安装的是哪个版本&#xff0c;通过在命令提示行输入命令 cmd黑窗口运行&#xff0c;不懂cmd百度一下 python -m django --version 如果没出现版本&#xff0c;就是没安装&#xff0c;那么用pip安装…

《WebKit 技术内幕》学习之十(2): 插件与JavaScript扩展

2 Chromium PPAPI插件 2.1 原理 插件其实是一种统称&#xff0c;表示一些动态库&#xff0c;这些动态库根据定义的一些标准接口可以跟浏览器进行交互&#xff0c;至于这个标准接口是什么都可以&#xff0c;重要的是大家都遵循它们&#xff0c;NPAPI接口标准只是其中的一种&a…

C语言第六弹---分支语句(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符&#xff1a;&& , || , &#xff01;4.1、 逻辑取反运算符 &#xff01;4.2、 与运算符4.3、 或运算符4.4、 练习&#xff1a;闰…

灵眸边缘计算产品学习

EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com) 产品简介 支持4路1080P30fps视频流采集&#xff0c;四核CPU1.5GHz与2Tops AI边缘算力能力。集成有以太网、Wi-Fi、4G等网络通信外设&#xff1b;RS232、RS485、UART等本地通信接口。HDMI显示屏接口、音频输入输出等交互…

[计算机网络]基本概念

目录 1.ip地址和端口号 1.1IP地址 1.2端口号 2.认识协议 2.1概念&#xff1a; 2.2知名协议的默认端口 3.五元组 4.协议分层 4.1分层的作用 4.2OSI七层模型 4.3TCP/IP五层&#xff08;四层&#xff09;模型 ​编辑4.4网络设备对应的分层&#xff1a; ​编辑以下为跨…

大数据开发之Spark(入门)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

CSS实现文本和图片无限滚动动画

Demo图如下&#xff1a; <style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: Poppins, sans-serif;}body {min-height: 100vh;background-color: rgb(11, 11, 11);color: #fff;display: flex;flex-direction: column;justify-content: center;align-i…

Vision Mamba:将Mamba应用于计算机视觉任务的新模型

Mamba是LLM的一种新架构&#xff0c;与Transformers等传统模型相比&#xff0c;它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域&#xff0c;让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirec…

Kubernetes operator(一)client-go篇【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第一篇&#xff0c;主要对client-go进行学习&#xff0c;从源码阅读角度&#xff0c;学习client-go各个组件的实现原理、如何协同工作等参考视频&#xff1a;Bilibili 2022年最新k…