进度
- 改造先前的demo,将点击屏幕变成放置僵尸
这里需要大改:将之前的僵尸队列(由List实现)设置成僵尸链表(与豌豆表类似,由结点实现),只有这样才能方便地进行插入删除
class ZbiChain:
hasgrave = True
def __init__(self, row):
zuizuo = ZB_normal((-2000, 0))
self.headN = ZbiNode(zuizuo) # 头指针指向的结点才是真头
zuiyou = ZB_normal((20000, 0))
self.tailN = ZbiNode(zuiyou) # 尾指针本身就代表是尾
self.headN.next = self.tailN
self.tailN.prev = self.headN
self.size = 0
self.row = row
def headZB(self):
if self.size > 0:
return self.headN.next.data
else:
print('没僵尸,无法访问!')
def tailZB(self):
if self.size > 0:
return self.tailN.prev.data
else:
print('没僵尸,无法访问!')
def insert(self, acol):
newZB = ZB_normal(row_col2pos(self.row, acol))
newZBnode = ZbiNode(newZB)
pNode = self.tailN
# 按规则,新僵尸应当插在自己左边第一个僵尸右边
# 若指针豌豆在新豌豆右边,则不是理想插入点
while newZBnode.x() < pNode.x():
pNode = pNode.prev
# 一定可以找到合适插入点
else:
newZBnode.prev = pNode
newZBnode.next = pNode.next
pNode.next.prev = newZBnode
pNode.next = newZBnode
self.size += 1
def delete(self, aZBnode: ZbiNode):
aZBnode.prev.next = aZBnode.next
aZBnode.next.prev = aZBnode.prev
self.size -= 1
- 嵌入通信系统
根据之前的摸索,没有问题 - 添加“墓碑系统”,墓碑有以下属性:
今天实现属性b、e
a.墓碑相当于僵尸方的“太阳花”,僵尸需要费用才能制造
b.僵尸方想放置僵尸,只能从墓碑处点击,然后生成僵尸
c.墓碑可以被植物攻击,血量为0被摧毁
d.僵尸方可以建造墓碑,但必须右侧有已有墓碑
e.开局每行草坪右侧是免费墓碑