【问题标题】:How to set the coordinates of a rect with get_rect() or Rect()?如何使用 get_rect() 或 Rect() 设置矩形的坐标?
【发布时间】:2018-04-10 04:10:56
【问题描述】:

这是一个有效的例子: 它在我的屏幕底部加载了一个红色图形。到目前为止一切都很好,但是 我想在特定坐标处加载图形,例如 700(x 轴)和 100(y 轴)。

import pygame


class Figure:

    def __init__(self, screen2):
        """Initialize the figure and set its starting position."""
        self.screen2 = screen2

        # Load the Red figure image and get its rect.
        self.redplayer = pygame.image.load('Images/redplayer.bmp')
        self.rectredplayer = self.redplayer.get_rect()
        self.screen2_rect = screen2.get_rect()

        # Start each new redplayer at the bottom center of the screen.
        self.rectredplayer.centerx = self.screen2_rect.centerx
        self.rectredplayer.bottom = self.screen2_rect.bottom

    def blitme(self):
        """Draw the red player figure at its current location."""
        self.screen2.blit(self.redplayer, self.rectredplayer)

【问题讨论】:

    标签: python pygame rect


    【解决方案1】:

    以这种方式设置左上角坐标:

    self.rectredplayer.x = 700
    self.rectredplayer.y = 100
    # Or just:
    self.rectredplayer.topleft = (700, 100)
    

    将矩形的中心设置为所需的坐标:

    self.rectredplayer.center = (700, 100)
    

    或者使用其他rect attributes

    x,y
    top, left, bottom, right
    topleft, bottomleft, topright, bottomright
    midtop, midleft, midbottom, midright
    center, centerx, centery
    

    您也可以将坐标直接传递给Surface.get_rect

    self.rectredplayer = self.redplayer.get_rect(topleft=(700, 100))
    

    【讨论】:

      【解决方案2】:

      我正在按照你说的做,但我遇到了一个错误。 代码是:

      import pygame
      pygame.init()
      
      screen = pygame.display.set_mode((500, 500))
      ball = pygame.image.load('imgs/ball.gif')
      
      pygame.display.set_caption("Making a ball move")
      
      running = True
      while running:
          for event in pygame.event.get():
              if event.type == pygame.QUIT:
                  running = False
      
          screen.fill((0,0,0))
          ball_rect = ball.get_rect()
          #ball_rect.x = 250 
          #ball_rect.y = 250
          ball_rect.center = (250, 250)
          ball_rect.width = ball.get_width()
          ball_rect.height = ball.get_height()
          ball_rect.blit(ball, ball_rect)
      
          pygame.display.flip()
      

      错误是:

      pygame 2.1.2 (SDL 2.0.18, Python 3.10.1)
      Hello from the pygame community. https://www.pygame.org/contribute.html
      Traceback (most recent call last):
        File "D:\Coding\Python\Pygame\Making a rect 
        move\making_a_rect_that_moves.py", line 22, in <module>
        ball_rect.blit(ball, ball_rect)
      AttributeError: 'pygame.Rect' object has no attribute 'blit'
      [Finished in 676ms]
      

      没关系,我做错了什么

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多