Python3.10中Pygame模块怎么添加背景图片?

Python3.10中Pygame模块怎么添加背景图片?,第1张

在Python310中使用Pygame模块添加背景,可以按照以下步骤进行:

首先,导入pygame模块,并初始化Pygame:

pythonCopy codeimport pygame
pygameinit()

加载背景。可以使用pygameimageload()函数加载,然后使用pygametransformscale()函数缩放到窗口大小。例如:

pythonCopy codebackground_image = pygameimageload("backgroundjpg")
background_image = pygametransformscale(background_image, (800, 600))

在上述代码中,我们加载名为backgroundjpg的,并将其缩放到窗口大小,即800x600像素。

创建窗口并显示背景。可以使用pygamedisplayset_mode()函数创建窗口,然后使用blit()函数将背景绘制到窗口上。例如:

pythonCopy codewindow = pygamedisplayset_mode((800, 600))
windowblit(background_image, (0, 0))
pygamedisplayflip()

在上述代码中,我们创建了一个大小为800x600像素的窗口,并将背景绘制到窗口上。

进入游戏循环。在Pygame中,游戏循环通常使用while语句实现。在循环中,我们可以监听用户输入事件,并根据需要更新窗口内容。例如:

pythonCopy codewhile True:    for event in pygameeventget():        if eventtype == pygameQUIT:
pygamequit()
sysexit()    # 在这里添加需要更新的代码
pygamedisplayflip()

在上述代码中,我们使用pygameeventget()函数获取用户输入事件,如果检测到用户关闭窗口的事件,则调用pygamequit()函数退出Pygame。在循环中,我们可以根据需要更新窗口内容,在最后调用pygamedisplayflip()函数更新窗口内容。

完整的代码如下所示:

pythonCopy codeimport pygameimport sys
pygameinit()
background_image = pygameimageload("backgroundjpg")
background_image = pygametransformscale(background_image, (800, 600))
window = pygamedisplayset_mode((800, 600))
windowblit(background_image, (0, 0))
pygamedisplayflip()while True:    for event in pygameeventget():        if eventtype == pygameQUIT:
           pygamequit()
           sysexit()    # 在这里添加需要更新的代码
   pygamedisplayflip()

在上述代码中,我们加载了名为backgroundjpg的作为背景,并将其缩放到窗口大小。然后,我们创建了一个大小为800x600像素的窗口,并将背景绘制到窗口上。最后,我们进入游戏循环,监听用户输入事件并更新窗口内容。你可以根据实际需要修改这个代码,例如添加游戏元素、事件处理等。

updates=spritesdraw(screen) 这是只画了屏幕,就是白色的部分,虽然加载了,但是并没有blit到screen上,试下screenblit(weight_image,(0,0)),就会被添加到屏幕上了

把开发过程中常用的一些内容片段记录起来,下边内容是关于python通过PyGame绘制图像并保存为文件的内容,希望对大伙有较大好处。

''' pg_draw_circle_save101py

draw a blue solid circle on a white background

save the drawing to an image file

tested with Python 27 and PyGame 192 by vegaseat  16may2013

'''

import pygame as pg

# pygame uses (r, g, b) color tuples

white = (255, 255, 255)

blue = (0, 0, 255)

width = 300

height = 300

# create the display window

win = pgdisplayset_mode((width, height))

# optional title bar caption

pgdisplayset_caption("Pygame draw circle and save")

# default background is black, so make it white

winfill(white)

# draw a blue circle

# center coordinates (x, y)

radius = min(center)

# width of 0 (default) fills the circle

# otherwise it is thickness of outline

width = 0

# drawcircle(Surface, color, pos, radius, width)

pgdrawcircle(win, blue, center, radius, width)

# now save the drawing

# can save as bmp tga png or jpg

fname = "circle_bluepng"

pgimagesave(win, fname)

print("file {} has been saved"format(fname))

# update the display window to show the drawing

pgdisplayflip()

# event loop and exit conditions

# (press escape key or click window title bar x to exit)

while True:

    for event in pgeventget():

        if eventtype == pgQUIT:

            # most reliable exit on x click

            pgquit()

            raise SystemExit

        elif eventtype == pgKEYDOWN:

            # optional exit with escape key

            if eventkey == pgK_ESCAPE:

                pgquit()

                raise SystemExit

10个顶级且实用的python库

1、Dash

Dash是比较新的软件包,它是用纯python构建数据可视化app的理想选择,因此特别适合处理数据的任何人。Dash是Flask、Plotlyjs和Reactjs的混合体。

2、Pygame

Pygame是SDL多媒体库的python装饰器,SDL是一个跨平台开发库,旨在提供对以下内容的低级接口:音频、键盘、鼠标、游戏杆、基于OpenGL和Direct3D的图形硬件。

Pygame具有高度的可移植性,几乎可以在所有平台和 *** 作系统上运行。尽管它具有完善的游戏引擎,但您也可以使用此库直接从python脚本播放MP3文件。

3、Pillow

Pillow专门用于处理图像,您可以使用该库创建缩略图,在文件格式之间转换、旋转、应用滤镜、显示图像等等。如果您需要对许多图像执行批量 *** 作,这是理想的选择。

4、Colorama

Colorama允许你在终端使用颜色,非常适合python脚本,文档简短而有趣,可以在Colorama PyPi页面上找到。

5、JmesPath

在python中使用JSON非常容易,因为JSON在python字典上的映射非常好。此外,python带有自己出色的json库,用于解析和创建JSON。对我来说,这是它最好的功能之一,如果我需要使用JSON,可以考虑使用python。

JmesPath使python处理JSON更加容易,它允许您明确地指定如何从JSON文档中提取元素。

6、Requests

Requests建立在世界上下载量最大的python库urllib3上,它令Web请求变得非常简单,功能强大且用途广泛。

Requests可以完成您能想到的所有高级工作,比如:认证,使用cookie,执行POST、PUT、DELETE等,使用自定义证书,使用会话Session、使用代理等。

7、Simplejson

python中的本地json模块有什么问题没有!实际上,python的json是Simplejson。意思是:python采用了Simplejson的一个版本,并将其合并到每个发行版中,但是使用Simplejson具有一些优点:它适用于更多python版本、它比python随附的版本更新频率更高、它具有用C编写的部分,因此非常快速。

8、Emoji

Emoji库非常意思,但并非每个人都喜欢表情包,分析视角媒体数据时,Emoji包非常有用。

9、Python-dateutil

Python-dateutil模块提供了对标准datetime模块的强大扩展。我的经验是:常规的python日期时间功能在哪里结束,而Python-dateutil就出现了。

10、BeautifulSoup

如果您从网站上提取了一些HTML,则需要对其进行解析以获取实际所需的内容。BeautifulSoup是一个python库,用于从HTML和XML文件中提取数据。它提供了导航,搜索和修改解析树的简单方法。它非常强大,即使损坏了,也能够处理各种HTML,这是一个非常强大的功能。

它的一些主要功能:

①BeautifulSoup会自动将传入文档转换为Unicode,将传出文档转换为UTF-8,您无需考虑编码。

②BeautifulSoup位于流行的python解析器的顶部,使您可以尝试不同的解析策略或提高灵活性。

屏幕坐标系大概是这个样子的:

其中,screen 的那个矩形就是窗口了,screen 的左上角坐标是 (0 ,0)

selfrecttop = -selfrectheight

这句的意思是,将 rect 向上移动出屏幕边缘

结合上面的图,大概就是那个位置

selfrectcenterx = randrange(screen_size[0])

screen_size 是指屏幕的大小, screen_size[0] 就是屏幕的宽度啦

centerx 是指矩形中心的 X 坐标(就是宽度一半的位置)

randrange 是返回一个 0 到 参数 之间的随机数

综合起来,就是将矩形的横坐标设置成屏幕宽度范围内的随机位置

selfrecttop += 1

这句的意思是将矩形向下移动一个像素

因为在 update 函数中,所以综合意思就是,矩形以每帧1像素的速度向下移动

selfrecttop > screen_size[1]

这句的意思是,当矩形的上边缘在屏幕的下边缘之下的时候。

希望能帮到你啦~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13382199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存