私のpygameでは、私はforループで描かれたカップルの四角形を持っています。私は円のオブジェクトによって表されるプレーヤーを持っています。それは次のようになります。どの矩形に円が含まれているかを確認するにはどうすればよいですか? (Pygameで)
ので、プレイヤーは、これが彼らのキーごとに一つの場所を移動し、矢印キーで移動することができます。最終的に、プレイヤーはこれらの長方形の外に移動することはできません。したがって、移動するたびに、私はチェックしたい: (任意の描画された矩形にプレーヤーが含まれている場合):Trueを返し、そうでなければFalseを返します。
これを行う簡単な方法はありますか?または私は私のアプローチを完全に変えるべきですか?
このような長方形の外側のスポットに移動することはできないはずです。
これは私が今持っている。この例のコードであります:
import pygame
pygame.init()
#grid
w = 25
h = 25
m = 2
size = (550, 700)
screen = pygame.display.set_mode(size)
screen.fill((255, 255, 255))
class Player:
def __init__(self):
self.x = 149
self.y = 14
self.r = 10
def draw(self):
pygame.draw.circle(screen, (255, 0, 0), (self.x, self.y), self.r)
def update(self,event):
if event.key == pygame.K_LEFT:
screen.fill((250, 250, 250))
self.x -= 27
self.draw()
elif event.key == pygame.K_RIGHT:
screen.fill((250, 250, 250))
self.x += 27
self.draw()
elif event.key == pygame.K_UP:
screen.fill((250, 250, 250))
self.y -= 27
self.draw()
elif event.key == pygame.K_DOWN:
screen.fill((250, 250, 250))
self.y += 27
self.draw()
player1 = Player()
player1.draw()
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
elif event.type == pygame.KEYDOWN:
player1.update(event)
for row in range(5):
for col in range(5):
if row == 0 or row == 4 or col == 0 or col == 4:
pygame.draw.rect(screen, (0,0,0), ((w + m) * col + m, ((h + m) * row + m), w, h), 1)
pygame.display.flip()
ありRect.contains(のRect)関数であるが、1つの長方形ならば、これはそれをチェックします別の矩形を含む基本的に次のような関数がありますか?既存のすべての矩形を選択し、それらが含まれているかどうかをチェックします(選択された矩形)。
すべてのヒントやヘルプは本当に感謝しています。また、これが完全に間違ったアプローチであるかどうかを教えてください。
ご挨拶。
'あなたがrectangle'' 'としてcircle'を扱うことができるように' python.Rect'オブジェクトを返しますpygame.draw.circle'。あなたは 'x'の代わりに' row'、 'col'を使うことができますし、' y'は 'collision 'をチェックすることができます。 – furas
しかし、すべてのコードに小さな間違いが1つあります。すべての四角形の位置をリストに保持しないので、サークル位置の位置を確認することはできません。 – furas
ところで、コードを読みやすくするために、 'pygame.init()'の前にすべてのクラスと関数を保持することができます - [simple template](https://github.com/furas/python-examples/blob/master/pygame/)を参照してください。 __templates __/1__simple__.py) – furas