【Python】毕设 仿PVZ 23.04.18

进度

  1. 改造先前的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
  1. 嵌入通信系统
    根据之前的摸索,没有问题
  2. 添加“墓碑系统”,墓碑有以下属性:
    今天实现属性b、e

a.墓碑相当于僵尸方的“太阳花”,僵尸需要费用才能制造
b.僵尸方想放置僵尸,只能从墓碑处点击,然后生成僵尸
c.墓碑可以被植物攻击,血量为0被摧毁
d.僵尸方可以建造墓碑,但必须右侧有已有墓碑
e.开局每行草坪右侧是免费墓碑

效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值