pygame怎么不用rect方法检测碰撞?
1、#初始化
from pygame import*
from pygame.locals import*
import sys
init()
screen = display.set_mode((500,500))
#两个形状的x和y坐标
x1 = 0
y1 = 0
x2 = 50
y2 = 50
#两个形状的宽和高
w1 = 20
h1 = 20
w2 = 20
h2 = 20
2、#代码事件部分
while True:#程序主循环
screen.fill((255,255,255))
for e in event.get():
if e.type == QUIT:
quit()
sys.exit()
if e.type == KEYDOWN:
if e.key == K_8:
y1 -= 10
if e.key == K_2:
y1 += 10
if e.key == K_4:
x1 -= 10
if e.key == K_6:
x1 += 10
if e.key == K_UP:
y2 -= 10
if e.key == K_DOWN:
y2 += 10
if e.key == K_LEFT:
x2 -= 10
if e.key == K_RIGHT:
x2 += 10
3、 #算法核心
x12 = x1 + w1
y12 = y1 + h1
x22 = x2 + w2
y22 = y2 + h2
if x2 > x1 and x2 <= x12:#2号矩形碰到1号矩形的右侧
print("2号矩形碰到1号矩形的右侧")
if x22 > x1 and x22 <= x12:#2号矩形碰到1号矩形的左侧
print("2号矩形碰到1号矩形的左侧")
if y2 > y1 and y2 <= y12:#2号矩形碰到1号矩形的下侧
print("2号矩形碰到1号矩形的下侧")
if y22 > y1 and y22 <= y12:#2号矩形碰到1号矩形的上侧
print("2号矩形碰到1号矩形的上侧")
4、 #显示部分
xy1 = [x1,y1,w1,h1]
xy2 = [x2,y2,w2,h2]
draw.rect(screen,(0,0,0),xy1)
draw.rect(screen,(0,0,0),xy2)
display.update()
1、代码说明
代码的1~22行是基本程序,
23~40行是移动程序(为了演示),
41~53行是算法关键,
55~59行是显示程序。
2、算法说明
利用x、y坐标和宽高之间的关系求出四个角的坐标,再相互比较,得出结果。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:98
阅读量:88
阅读量:53
阅读量:90
阅读量:43