智能蛇

在写完一条普通的贪吃蛇之后,我们的老师有增大了学习难度,要写出一条“有脑子的”蛇,通过算法,让小蛇具有 “感知 - 决策 - 行动” 的能力。其实,这也是锻炼我们自顶向下分析能力的很好机会。

这一条小蛇可以绕过类似枪一样的障碍物,变得“聪明”,这样子,就能实现一条智能蛇与人力蛇争抢食物,这将又会是人工智能与人的一次大比拼。

这里写图片描述

首先,利用自顶向下的思想,大致写出这个程序主要部分的伪代码,也就是决定蛇行走的方向函数的伪代码:

// Hx,Hy: 头的位置
    // Fx,Fy:食物的位置
    function whereGoNext(Hx,Hy,Fx,Fy) {
    // 用数组movable[3]={“a”,”d”,”w”,”s”} 记录可走的方向
    // 用数组distance[3]={0,0,0,0} 记录离食物的距离
    // 分别计算蛇头周边四个位置到食物的距离。H头的位置,F食物位置
    //     例如:假设输入”a” 则distance[0] = |Fx – (Hx-1)| + |Fy – Hy|
    //           如果 Hx-1,Hy 位置不是Blank,则 distance[0] = 9999
    // 选择distance中存最小距离的下标p,注意最小距离不能是9999
    // 返回 movable[p]
    }

然后是智能蛇的程序框架:

输出字符矩阵
    WHILE not 游戏结束 DO
        wait(time)
        ch=whereGoNext(Hx,Hy,Fx,Fy)
        CASE ch DO
        ‘A’:左前进一步,break 
        ‘D’:右前进一步,break    
        ‘W’:上前进一步,break    
        ‘S’:下前进一步,break    
        END CASE
        输出字符矩阵
    END WHILE
    输出 The game is over! 

最后,再结合之前写的贪吃蛇代码,就能弄出一条智能蛇啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值