def on_mouse_press(self, x, y, buttons, mod): slots = self.coll_man_slots.objs_touching_point(x, y) if len(slots) and self.points >= 20: self.points -= 20 slot = next(iter(slots)) turret = actors.Turret(*slot.cshape.center) self.turrets.append(turret) self.add(turret)
def on_mouse_press(self, x, y, buttons, mod): #當滑鼠點擊到的地方跟砲塔槽碰撞時檢查分數是否夠放一個砲塔 slots = self.coll_man_slots.objs_touching_point(x, y) #print(slots) if len(slots) and self.points >= 20: self.points -= 20 """ 上方print(slots),會出現{<actors.TurretSlot object at 0x0000016EB93C4B48>},可見是一個元組 所以必須取出 這裡作者取出的方法是生成iter之後用next取出 為何使用next,課本未解釋 next功能原為每次運行時依序取出迭代器中的值 但這裡即便我們一直選擇將砲塔放置在同一個砲塔槽,砲塔槽始終只有一個,所以原則上並不需要next """ slot = next(iter(slots)) #print(slot) #將砲塔設置於砲塔槽中心 # #用"*"可以一次傳x、y座標(=一組參數),加入砲塔 turret = actors.Turret(*slot.cshape.center) self.turrets.append(turret) #加入砲塔至已有砲塔中 self.add(turret)