标签分组与collide_other方法进行碰撞检测

"""
   利用标签分组与collide_others方法
   本程序运行后能用上下左右键操作虫子,碰到其它虫子时不会穿越过去。
"""

from sprites import *

screen = Screen()
screen.bgcolor('dodger blue')
screen.title('请用awsd键操作虫子')

sq = Sprite()
sq.color('red')

p1 = Sprite(5)
p1.goto(100,100)

p2 = Sprite(6)
p2.goto(-100,100)

p3 = Sprite(8)
p3.goto(-100,-100)

p4 = Sprite(9)
p4.goto(100,-100)

akey = Key('a')       # 实例化a键
dkey = Key('d')       # 实例化d键
wkey = Key('w')       # 实例化w键  
skey = Key('s')       # 实例化s键
screen.listen()
clock = Clock()

while 1:
  # 如果按了a键,则dx为-5,虫子将向左移动  
  if akey.down():dx = -5;dy=0
  elif dkey.down():dx = 5;dy=0
  elif wkey.down():dy = 5;dx=0
  elif skey.down():dy = -5;dx=0
  else:
    dx = 0;dy = 0
    
  sq.move(dx,dy)      # 在水平和垂直方向上移动虫子
  
  # 和tag标签为sprite的精灵进行碰撞检测
  collide_list = sq.collide_others('sprite')
  
  if collide_list:
    if dx != 0: sq.addx(-dx)   # 如果往左右移动
    if dy != 0: sq.addy(-dy)   # 如果往上下移动    
    
  clock.tick(60)      # 设定fps为60


关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在python, sprites, turtle分类目录。将固定链接加入收藏夹。