简介
接着上篇文章我们讲到光标类的四个功能,分别是光标移动,光标选中。光标取消选中和光标控制棋子移动
前两个功能我们在上篇文章已经讲解了,现在我们继续来讲解一下接下来的两个功能。
正文
三、光标取消
首先我们判断一下光标取消之后会有什么效果:
- 光标变回蓝色
- 可移动范围消失
我们需要在光标类新增一个cancel方法,和catch方法对应
def cancel(self):
self.status = 0
for i in self.map_obj.empty_map:
for index, j in enumerate(i):
if isinstance(j,Removable) or isinstance(j,Attack):
i[index] = 0
然后我们要判断什么条件下光标会取消:
- 用户主动取消
- 用户点错取消
- 用户移动后取消
先实现用户主动取消,我们在主函数设置用户按下键盘s键取消选中
def main():
pygame.init()
clock = pygame.time.Clock() # 设置时钟
clock.tick(10) # 每秒执行60次
m = Map()
d = Dogface()
d.set_cur_index(3,5)
m.load_map(d)
store = Store()
store.set_cur_index(4,7)
m.load_map(store)
b = Block()
screen = pygame.display.set_mode((m.width,m.height)) # 显示窗口
color = (255,255,0)
screen.fill(color)
c = Cursor(0,0,m)
while True:
m.create(screen,b)
screen.blit(c.cursor[c.status],(c.cursorX*m.block,c.cursorY*m.block))
pygame.display.update()
# 轮询事件