首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在pygame中绘制另一个矩形的中心?

在pygame中绘制另一个矩形的中心,可以按照以下步骤进行:

  1. 首先,导入pygame库并初始化:import pygame pygame.init()
  2. 创建一个窗口并设置窗口的宽度和高度:win_width = 800 win_height = 600 window = pygame.display.set_mode((win_width, win_height))
  3. 定义两个矩形的宽度和高度:rect1_width = 100 rect1_height = 100 rect2_width = 50 rect2_height = 50
  4. 计算第一个矩形的左上角坐标,使其位于窗口的中心:rect1_x = (win_width - rect1_width) // 2 rect1_y = (win_height - rect1_height) // 2
  5. 计算第二个矩形的左上角坐标,使其位于第一个矩形的中心:rect2_x = rect1_x + (rect1_width - rect2_width) // 2 rect2_y = rect1_y + (rect1_height - rect2_height) // 2
  6. 绘制第一个矩形:rect1 = pygame.Rect(rect1_x, rect1_y, rect1_width, rect1_height) pygame.draw.rect(window, (255, 0, 0), rect1)
  7. 绘制第二个矩形:rect2 = pygame.Rect(rect2_x, rect2_y, rect2_width, rect2_height) pygame.draw.rect(window, (0, 0, 255), rect2)
  8. 更新窗口显示:pygame.display.update()

完整代码示例:

代码语言:python
代码运行次数:0
复制
import pygame
pygame.init()

win_width = 800
win_height = 600
window = pygame.display.set_mode((win_width, win_height))

rect1_width = 100
rect1_height = 100
rect2_width = 50
rect2_height = 50

rect1_x = (win_width - rect1_width) // 2
rect1_y = (win_height - rect1_height) // 2

rect2_x = rect1_x + (rect1_width - rect2_width) // 2
rect2_y = rect1_y + (rect1_height - rect2_height) // 2

rect1 = pygame.Rect(rect1_x, rect1_y, rect1_width, rect1_height)
rect2 = pygame.Rect(rect2_x, rect2_y, rect2_width, rect2_height)

window.fill((255, 255, 255))
pygame.draw.rect(window, (255, 0, 0), rect1)
pygame.draw.rect(window, (0, 0, 255), rect2)
pygame.display.update()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

这样就能在pygame中绘制另一个矩形的中心了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python之pygame学习绘制基本图形(3)

pygame绘制 ✕ 这次来说下怎么绘制基本的图形,如矩形,圆,直线等等 ? 这图片的代码在最最最下面!! ?...(元组(坐标)或列表(坐标)) 构成多边形顶点的3个或更多(x,y)坐标的序列,序列中的每个坐标必须是元组/列表/ width(int) (可选)用于线条粗细或表示要填充矩形(不要与rect参数的宽度值混淆...绘制一个园 圆(表面,颜色,中心,半径) - >矩形 圆(表面,颜色,中心,半径,宽度= 0) - >矩形 参数: 表面:与矩形相同 颜色:与矩形相同 中心:元祖或列表指定一个点作为园的中心 半径:...矩形:用于指定椭圆的位置和尺寸的矩形,矩形限制椭圆的大小 宽度:与矩形相同 返回:与矩形相同 # 绘制一个椭圆 pygame.draw.ellipse(screen,clock,(150,150,100,50...() def main(): # 初始化导入的pygame中的模块 pygame.init() rungame() if __name__ == "__main__": main

4.2K30

PyGame:Python 游戏编程入门-1

显示器和表面 除了模块之外,pygame还包括几个 Python类,它们封装了非硬件依赖的概念。其中之一是Surface最基本的,它定义了一个可以绘制的矩形区域。Surface对象在pygame....图像和矩形 您的基本pygame程序直接在显示器上绘制了一个形状Surface,但您也可以处理磁盘上的图像。该image模块允许您以各种流行的格式加载和保存图像。...图像被加载到Surface对象中,然后可以以多种方式进行操作和显示。 如上所述,Surface对象由矩形表示,pygame就像图像和窗口中的许多其他对象一样。...在屏幕的确切中心,但看起来并不完全是这样: 图像看起来偏离中心的原因是.blit()将左上角放在surf给定位置。...您可以通过surf从屏幕的宽度和高度中减去宽度和高度来做到这一点,将每个除以 2 以定位中心,然后将这些数字作为参数传递给screen.blit(): # Put the center of surf

2.2K40
  • Python之pygame学习矩形区域(5)

    pygame矩形区域 上篇说到移动基本图形,这次来说下矩形区域的操作。 在pygame中矩形区域这个类比较特殊,在游戏中,所有可见的元素都是以矩形区域来描述位置。...任何需要Rect参数的pygame函数也接受这些值中的任何一个来构造Rect。这使得动态创建Rects更容易作为函数的参数。 官网说的不是很懂。。...(object) - > Rect 矩形区域创建后并不会在表面显示,不跟绘制基本图形一样,创建后直接在表面绘制成像。...这四个分别对应矩形区域的四个边的中间点坐标。 ? 分别返回矩形区域的中心点坐标(元祖),中心x轴,中心y轴 ? 分别返回矩形区域的宽高(元祖),宽,高 ?...clamp() 将矩形移到另一个内部 clamp(Rect) - > Rect 返回一个新的矩形,该矩形完全移动到参数Rect中。

    3.2K30

    Python OpenCV 计算机视觉:6~7

    附录 A:与 Pygame 集成 本附录显示了如何在 OpenCV 应用中设置 Pygame 库以及如何使用 Pygame 进行窗口管理。...派生Manager.WindowManager 如第 2 章,“处理照相机,文件和 GUI”中所述,我们的面向对象设计使我们可以轻松地将 OpenCV 的 HighGUI 窗口管理器切换为另一个窗口管理器...一个Surface实体具有一个blit()方法,该方法将另一个Surface和一个坐标对作为参数,其中后一个Surface应被“变白”(绘制)到第一个上。...Pygame 提供了更多功能,包括: 绘制 2D 几何 绘制文字 管理可绘制 AI 实体(精灵)的分组 捕获与窗口,键盘,鼠标和操纵杆/游戏手柄相关的各种输入事件 创建自定义事件 播放和合成声音和音乐...一个实例位于子矩形中,该子矩形的左上角为(200, 120),而其右下角为(240, 180)。 另一个实例位于子矩形中,该子矩形的左上角为(80, 60),右下角为(100, 80)。

    1.1K20

    边框检测在 Python 中的应用

    在游戏开发中,我们经常会回使用到边框检测。我们知道,边框检测是计算机视觉中常用的技术,用于检测图像中的边界和轮廓。在Python中,可以使用OpenCV库来实现边框检测。具体是怎么实现的?...以下是一个简单的示例代码,演示如何在Python中使用OpenCV进行边框检测:1、问题背景:用户试图编写一个程序,该程序要求用户输入一个数字,然后在屏幕上绘制相应数量的矩形。然而,这些矩形不能重叠。...rectangles.append(pygame.Rect(x1, y1, x2 - x1, y2 - y1))​# 填充背景windowSurface.fill(WHITE)​# 绘制矩形for...最后,所有生成的矩形都会被绘制到游戏窗口中。边框检测在图像处理、目标检测和计算机视觉领域有着广泛的应用,能够帮助识别物体的形状、边界和结构。通过使用OpenCV库,可以方便地实现边框检测功能。...所以说边框检测在实际应用中是很重要的,如有任何疑问可以评论区留言讨论。

    21010

    如何在pycharm中安装pygame_python安装pycharm的方法

    大家好,又见面了,我是你们的朋友全栈君 今天好不容易啃书到项目实践过程,终于可以做一款小游戏了,这对我这个Python编程小白来说,无疑是自己一直想要去实现的。...正准备兴致勃勃的准备撸代码时,就开始碰壁了,因为在安装pygame,我按照书中步骤来时,却永远安不上,可能是书的问题也可能是我自己哪部分搞错了,于是去搜了一下百度,虽然有很多办法,但无一都很复杂,写了一大堆...,最终在我自我摸索下,终于搞好了,现在分享一下我的下载过程,超级简单: 1、首先打开pycharm,再点击Terminal终端,在终端输入:pip install pygame即可 2、一般这个它自己已经添加到环境中...,如果没有,我们可以手工添加,点击File-Setting,再点击你在pycharm中打开的文件名下Project interpreter,最后点击右边的加号,搜索添加即可 最后我想说一下,我觉得教程不就是让我们感觉到我们很轻松...,感觉到自己很轻易的完成某项任务吗?

    1.8K20

    关于“Python”的核心知识点整理大全30

    在Pygame中,surface是屏幕的一部分,用于显示游戏元素。在这 个游戏中,每个元素(如外星人或飞船)都是一个surface。...为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用 Pygame方法blit()绘制它。 为游戏选择素材时,务必要注意许可。...Pygame的效率之所以 如此高,一个原因是它让你能够像处理矩形(rect对象)一样处理游戏元素,即便它们的形状并 非矩形。像处理矩形一样处理游戏元素之所以高效,是因为矩形是简单的几何形状。...这种做法的 效果通常很好,游戏玩家几乎注意不到我们处理的不是游戏元素的实际形状。 处理rect对象时,可使用矩形四角和中心的x和y坐标。可通过设置这些值来指定矩形的位置。...为此,首先将表示屏幕的矩形存储在self.screen_rect中 (见3),再将self.rect.centerx(飞船中心的x坐标)设置为表示屏幕的矩形的属性centerx(见 4),并将self.rect.bottom

    12610

    基于Python的飞机大战复现

    原文链接 二、游戏功能实现 (一)初始化设置 Pygame初始化 pygame.init():初始化Pygame库,这是使用Pygame进行游戏开发的第一步,它会初始化Pygame的各个模块,如显示、...移动方法(move_up、move_down、move_left、move_right) 例如move_up方法中,self.rect.y -= self.speed实现飞机向上移动,通过改变飞机矩形区域的...)上绘制按钮的矩形。...self.text_rect.get_width() / 2), self.y + (self.height / 2) - (self.text_rect.get_height() / 2))):将按钮文本绘制在按钮矩形的中心位置...优化碰撞检测算法:目前的碰撞检测可能存在一定的性能开销,可以考虑使用更高效的碰撞检测算法,如基于空间划分(如四叉树)的算法,提高游戏性能。

    8510

    Python游戏工具包---Pygame最常用的15个模块详解(附pdf版本)

    在 Pygame 的例子目录中,有一个演示代码(prevent_display_stretching.py)展示如何在微软系统(Vista 以上系统)中关闭 Pygame 显示的自动拉伸属性。...() — 根据限定矩形绘制一个椭圆形 pygame.draw.arc() — 绘制弧线 pygame.draw.line() — 绘制线段 pygame.draw.lines() — 绘制多条连续的线段...对象移动到另一个 Rect 对象的中心 pygame.Rect.clamp_ip() — 原地将一个 Rect 对象移动到另一个 Rect 对象的中心 pygame.Rect.clip() —...clamp()将一个 Rect 对象移动到另一个 Rect 对象的中心。...如果原始 Rect 对象的尺寸比 Rect 参数的要大,那么保持中心重叠,尺寸不变。 clamp_ip()原地将一个 Rect 对象移动到另一个 Rect 对象的中心。

    16.6K56

    Python 项目实践一(外星人入侵小游戏)第三篇

    1 函数check_events() 将check_events()放在一个名为game_functions的模块中,在该函数主要是管理事件的功能,通过隔离事件循环,可将事件管理与游戏的其他方面(如更新屏幕...下面演示了如何在settings.py中添加这个新属性: 4 限制飞船的活动范围 当前,如果玩家按住箭头键的时间足够长,飞船将移到屏幕外面,消失得无影无踪。...表示飞船的图像存储在文件夹images下的文件ship.bmp中。 四 射击子弹 下面来添加射击功能。我们将编写玩家按空格键时发射子弹(小矩形)的代码。子弹将在屏幕中向上穿行,抵达屏幕上边缘后消失。...我们创建了子弹的属性rect。子弹并非基于图像的,因此我们必须使用pygame.Rect()类从空白开始创建一个矩形。创建这个类的实例时,必须提供矩形左上角的x坐标和y坐标,还有矩形的宽度和高度。...需要绘制子弹时,我们调用draw_bullet()。函数draw.rect()使用存储在self.color中的颜色填充表示子弹的rect占据的屏幕部分。

    2.7K90

    Python之pygame学习精灵碰撞做一个躲避球游戏(13)

    通过比较Sprite.rect每个Sprite 的属性或通过使用碰撞函数(如果它不是None)来确定碰撞。 group1中的每个Sprite都被添加到返回字典中。...每个项目的值是group2中相交的Sprite列表。 如果dokill参数为True,则将从各自的组中删除碰撞的Sprite。 碰撞参数是一个回调函数,用于计算两个精灵是否发生碰撞。...精灵与精灵组: pygame.sprite.spritecollideany() 如果精灵与组中的任何内容相交,则进行简单测试。...获取鼠标返回的坐标,用这个坐标来画圆的时候,设置好不能超出边框,结果圆居然能出去???? 然后我画一个辅助矩形,看看圆的圆心是否与矩形的中心对齐。。结果不是的,圆的中心在矩形的左上角!...嗯,没问题,画圆就是指定的圆心坐标! 解决方法,用矩形区域的中心来设置圆的圆心,解决! ? 然后设置下游戏的碰撞次数,设置一定次数后出现游戏结束,按空格键重置次数。。

    3.2K30

    520最浪漫表白:QQ打开基于Python实现的无法拒绝的音乐表白代码!别让等待,成了遗憾!

    中处理时间的标准库——time库。...Pygame就是Python中使用它的一个库。Pygame允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,是一个高可移植性的模块可以支持多个操作系统,用它来开发小游戏非常适合。...设置按钮相关信息 pygame.draw.rect() — 绘制矩形 pygame.font.SysFont()从系统字体库创建一个 Font 对象。...根据限定矩形绘制一个椭圆形;pygame.draw.lines() — 绘制多条连续的线段; pygame.draw.aalines() — 绘制多条连续的线段(抗锯齿) 生成随机位置坐标 get_random_pos...点击YES后显示的页面 事实上,我们在这里运用python中的海龟绘图体系绘制出许多小爱心汇成大爱心,在大爱心内写好我们要表白的对象名,并在左下角写出情话,右下角写出日期。

    4.3K30

    Easy Games With Python and Pygame(二)- Pygame 绘制图形

    需要的参数分别为: 承载圆形的Surface对象 颜色 圆心的X、Y坐标两个整数存入一个元组中 圆的半径 线条宽度,默认为0 import sys import pygame from pygame.locals...() 绘制椭圆 椭圆的绘制需要用到pygame.draw.ellipse()函数 传递的参数分别为: 承载椭圆的Surface对象 椭圆的颜色 椭圆(矩形)左上角X坐标和Y坐标,以及椭圆(矩形)的宽和高..., 106), (236, 277), (56, 277), (200, 106))) pygame.display.set_caption('多边形的绘制') 绘制一个移动的矩形 要绘制移动的图形只要不断变换图形的位置即可实现...,pygame中可以使用pygame.draw.rect()函数可以绘制矩形 rect()函数需要以下参数 承载矩形的Surface对象,既窗口 矩形的颜色 矩形左上角XY坐标,以及矩形的宽和高,存入一个元组中...pygame.display.set_caption('绘制移动的矩形') bg_color = (120, 120, 255) # 矩形位置和移动变量 pos_x = 200 pos_y = 200

    1.1K30

    实战项目:飞机大战

    pygame库中的所有模块并进行初始化 pygame.init() # 创建屏幕,设置屏幕大小(应根据背景图大小设置) surface = pygame.display.set_mode((480,580...surface.blit(image,(0,0)) 第一个参数为图片对象 第二个参数为绘制的初始位置 如何更新屏幕 pygame.display.update() 每次绘制完所有图片后一定要更新屏幕...x、y、矩形区域的宽、矩形区域的高 pygame.USEREVENT代表定时事件的编号,通过后面+1、+2、+3.....的方式添加多个事件 编写精灵类 # 精灵类 class SpriteParent...在初始化方法中要添加三个属性,分别是:加载的图片对象、图片的矩形区域,图片的移动速度。其中图片的矩形区域可以使用图片对象的 get_rect() 来获取,速度自定义设置,这里设置成 每次移动1像素。.../images/hero1.png') # centerx代表矩形区域在x轴的中心位置 # 这里设置英雄飞机的初始位置为屏幕底端位于x轴的中间 self.rect.centerx

    1.9K10

    关于“Python”的核心知识点整理大全32

    下面演示了如何在settings.py中添加这个新属性: settings.py class Settings(): """一个存储游戏《外星人入侵》的所有设置的类""" def __init...12.6.6 重构 check_events() 随着游戏开发的进行,函数check_events()将越来越长,我们将其部分代码放在两个函数中: 一个处理KEYDOWN事件,另一个处理KEYUP事件...表示飞船的图像存储在文件夹images下的文件ship.bmp中。 12.8 射击 下面来添加射击功能。我们将编写玩家按空格键时发射子弹(小矩形)的代码。...在1处,我们创建了子弹的属性rect。子弹并非基于图像的,因此我们必须使用pygame.Rect() 类从空白开始创建一个矩形。...需要绘制子弹时,我们调用draw_bullet()。函数draw.rect()使用存储在self.color中的颜色 填充表示子弹的rect占据的屏幕部分(见3)。

    16110

    如何在Python 3中安装pygame并创建用于开发游戏的模板

    本教程将首先将pygame安装到您的Python编程环境中,然后引导您创建一个模板以使用pygame和Python 3开发游戏。...如果您在命令行上遇到安装问题,可以查看pygame的安装教程。 在后面的步骤中,我们将假设使用监视器来显示图形用户界面,作为本教程的一部分来验证我们的代码。...import导入模块的语句开始,您可以在文件顶部添加该语句: import pygame 我们还可以选择在第一行下面添加另一个import语句,将pygame的一些常量和函数添加到文件的全局命名空间中:...我们将使用pygame.display.set_mode()来初始化窗口或屏幕进行显示并将其传递给变量。在函数中,我们将传递显示分辨率的参数,该参数是一对表示元组中宽度和高度的数字。...该KEYDOWN事件意味着用户正在按下键盘上的键。为了我们的目的,让我们说Q密钥(如“退出”)或ESC密钥可以退出程序。

    25.1K22

    Python 项目实践一(外星人入侵小游戏)第二篇

    下面来编写一个名为settings的模块,其中包含一个名为Settings的类,用于将所有设置存储在一个地方,以免在代码中到处添加设置。这样,我们就能传递一个设置对象,而不是众多不同的设置。...另外,这让函数调用更简单,且在项目增大时修改游戏的外观更容易:要修改游戏,只需修改settings.py中的一些值,而无需查找散布在文件中的不同设置 下面是最初的Settings类: class Settings...这个函数返回一个表示飞船的surface,而我们将这个surface存储到了self.image中。...(2)加载图像后,我们使用get_rect()获取相应surface的属性rect (3)处理rect对象时,可使用矩形四角和中心的x和y坐标。可通过设置这些值来指定矩形的位置。...(4)在Pygame中,原点(0, 0)位于屏幕左上角,向右下方移动时,坐标值将增大。在1200×800的屏幕上,原点位于左上角,而右下角的坐标为(1200, 800)。

    1.5K80
    领券