多语言展示
当前在线:491今日阅读:26今日分享:39

pygame怎么不用rect方法检测碰撞?

平时用rect来检测碰撞不能检测碰撞方向,使用算法来代替rect函数检测碰撞和碰撞方向。
工具/原料
1

python3

2

pygame库(需下载)

准备工作
1

下载python3。17如何下载并安装python3

2

下载pygame库(用pip指令)。 1如何安装pygame

4

下载python编译器(可以使用python自带的IDLE(打开方式:①打开Windows开始菜单    ②选择所有应用    ③找到python3.x文件夹    ④打开IDLE),也可以另下,此处选pycharm。)2如何下载PycharmEND

代码示例
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()

输出结果

可以看到当两个方形碰撞后,就输出了碰撞方向。END

说明
1

代码说明代码的1~22行是基本程序,23~40行是移动程序(为了演示),41~53行是算法关键,55~59行是显示程序。

2

算法说明利用x、y坐标和宽高之间的关系求出四个角的坐标,再相互比较,得出结果。

课后练习

用所学的知识做一个飞机大战。END

教学视频地址
注意事项
1

斜体字体为可选项。

2

图片为作者电脑真实截图,未经允许不可转载。

3

控制正方形1的方向键为4826,控制正方形2的方向键为上下左右。

推荐信息