gpt4 book ai didi

pygame - pygame中的collidepoint函数是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 13:00:20 42 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do I detect collision in pygame?

(4 个回答)



Pygame mouse clicking detection

(4 个回答)


9 个月前关闭。




所以我正在做一个关于 pong 的实验,我对 pygame 中的碰撞点函数的概念迷失了,它检查圆的中心是否在桨内。在查看文档时,我仍然感到困惑,因为我对编程非常陌生,而且我真的很难适应并掌握向我抛出的新技能。如果有人可以通过更多地解释它并给出一个基本的简单示例来帮助我,我将不胜感激。

最佳答案

点碰撞记录在 PyGame Rect 中。类(class)。

本质上,您将坐标传递给 pygame.Rect.collidepoint() ,它将返回 True如果该点在矩形的边界内。

import pygame

# Window size
WINDOW_WIDTH=400
WINDOW_HEIGHT=400

pygame.init()
window = pygame.display.set_mode( ( WINDOW_WIDTH, WINDOW_HEIGHT ) )
pygame.display.set_caption("Point Collision")

BLACK = ( 50, 50, 50 )
GREEN = ( 34, 139, 34 )
BLUE = ( 161, 255, 254 )

# The rectangle to click-in
# It is window-centred, and 33% the window size
click_rect = pygame.Rect( WINDOW_WIDTH//3, WINDOW_HEIGHT//3, WINDOW_WIDTH//3, WINDOW_HEIGHT//3 )
rect_colour = BLACK

### Main Loop
clock = pygame.time.Clock()
done = False
while not done:

# Handle all the events
for event in pygame.event.get():
if ( event.type == pygame.QUIT ):
done = True

elif ( event.type == pygame.MOUSEBUTTONUP ):
mouse_position = pygame.mouse.get_pos() # Location of the mouse-click
if ( click_rect.collidepoint( mouse_position ) ): # Was that click inside our rectangle
print( "hit" )
# Flip the colour of the rect
if ( rect_colour == BLACK ):
rect_colour = GREEN
else:
rect_colour = BLACK
else:
print( "click-outside!" )

# update the screen
window.fill( BLUE )
pygame.draw.rect( window, rect_colour, click_rect) # DRAW OUR RECTANGLE
pygame.display.flip()

# Clamp the FPS to an upper-limit
clock.tick_busy_loop( 60 )


pygame.quit()

注意 collidepoint()的使用在代码的下半部分:
if ( click_rect.collidepoint( mouse_position ) ):  

这里的代码正在检查最近通过鼠标输入事件发现的坐标是否在 click_rect 内。 (在主循环之前声明的 pygame.Rect)。如果坐标在矩形内,则以不同的颜色绘制。

这里的大部分代码只是简单地打开窗口,然后运行主输入/更新循环。

关于pygame - pygame中的collidepoint函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58717367/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com