首页
学习
活动
专区
工具
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

4K30

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

2K40

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

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

3K30

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库,可以方便地实现边框检测功能。...所以说边框检测在实际应用是很重要,如有任何疑问可以评论区留言讨论。

15810

何在pycharm安装pygame_python安装pycharm方法

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

1.7K20

关于“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

10310

何在keras添加自己优化器(adam等)

2、找到keras在tensorflow下根目录 需要特别注意是找到keras在tensorflow下根目录而不是找到keras根目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录下python目录中找到keras目录,以GPU为例keras在tensorflow下根目录为C:\ProgramData...找到optimizers.pyadam等优化器类并在后面添加自己优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

44.9K30

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.6K90

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 对象中心

15.5K55

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

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

3K30

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.2K30

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.8K10

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

16 Python 基础: 重点知识点--Pygame基础知识梳理

/艺术字等自己下载字体文件,abc.ttf',60) #SysFont设置系统自带字体对象 #可通过pygame.font.get_fonts()查看具体字体名,microsoftyaheimicrosoftyaheiui...200,200)) #将内容进行更新 pygame.display.update() Pygame--圆形与移动矩形绘制 aaline(...)...((0,0,0)) #绘制圆,对应上面定义pygame.draw.circle(screen,white,position,radius,width) #绘制矩形,(200,150,50)设置颜色...--surface对象 surface对象方法 pygame.Surface.blit - 将一个图像绘制另一个 pygame.Surface.blits - 将许多图像绘制另一个...上画一个背景 pygame.sprite.Group.empty - 删除所有精灵 精灵碰撞相关属性 pygame.sprite.spritecollide - 在与另一个精灵相交查找精灵

3K30

关于“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)。

12810
领券