制作坊 计算机玩游戏Microbit 编程: 简易人工智能让电脑玩游戏 专区

计算机玩游戏Microbit 编程: 简易人工智能让电脑玩游戏

cxbd2021-03-12 636人围观
游戏  Python  
简介计算机玩游戏Microbit 编程: 简易人工智能让电脑玩游戏

人工智能简介-让计算机玩游戏

AI被称为人工智能, 通常被称为计算机拥有类似人类的聪明. 我们可以教Microbit如何玩这个游戏. 只需要采用非常简单的策略: 朝苹果移动(如果苹果在盘子上方, 则保持不动). 让我们定义一个名为letComputerPlay的函数.

然后, 我们可以把该函数放到主游戏循环函数里. 我们可以删掉用于处理按钮(A和B键)的代码. 并且提供相应的函数来向左或向右移动:

function moveLeft() {    px--;    if (px < 0) px = 4;    pixel.setX(px);}) function moveRight() {    px++;    if (px > 4) px = 0;    pixel.setX(px);})

代码和Microbit模拟器: https://makecode.microbit.org/_93CihTgAFLk2

成功了! Microbit知道如何玩游戏, 它永远不会感到累. 实际上, Microbit非常擅长于玩这款游戏.

MICROBIT AI的改进版-游戏策略

如果让Microbit玩一会儿, 您将看不到游戏结束, 因为从理论上讲, Microbit始终能够捕捉到苹果, 即使它站立的距离最远-需要四步移动, 然后苹果掉下来需要5步才会触发游戏结束!

但是, 我们仍然可以通过选择较短的移动方向. 只需要计算向左或向右移动的成本(步长). 这种策略将会让Microbit看起来更智能一些. 这是我们的MicrobitAI的改进版本:

function letComputerPlay() {    if (pixel.x() == apple.x()) {        return ;    }    let costOfMovingLeft, costOfMovingRight;    // 计算向左移的代价    if (pixel.x() < apple.x()) { // 苹果在右边        costOfMovingLeft = pixel.x() + 5 - apple.x();    } else { // 苹果在左边        costOfMovingLeft = pixel.x() - apple.x();    }    // 计算向右移动的代价    if (pixel.x() < apple.x()) { // 苹果在右边        costOfMovingRight = apple.x() - pixel.x();    } else { // 苹果在左边        costOfMovingRight = 5 - pixel.x() + apple.x();    }    if (costOfMovingLeft < costOfMovingRight) { // 左边移动更划算        moveLeft();    } else if (costOfMovingLeft > costOfMovingRight) {//移动到右边更快        moveRight();    } else if (Math.randomRange(0, 1) == 0) { // 随机方向都可以        moveLeft();    } else {        moveRight();    }}

可以看到, 我们先计算左移costOfMovingLeft和右移costOfMovingRight的成本, 并选择一个较短(更好)的方向作为我们的策略. 万一向左向右的代价都一样, 我们只选择一个随机的方向(用 Math.randomRange(0, 1) 生成一个0或者1的数, 各有50%的概率).

代码和 Microbit模拟器: https://makecode.microbit.org/_FpoaisRKC6ws

可以看到, 这里的人工智能是很简单的 – Microbit 会严格按照人类的指示来玩游戏. Microbit的聪明来自于决策制定 (Decision Making). 很适用于计算机. 计算会根据当前情况做出决策, 而当前情况往往可以根据现有一些条件(变量)进行计算.

Media error: Format(s) not supported or source(s) not found

下载文件: https://helloacm.com/wp-content/uploads/2019/12/microbit-plays-game-with-ai.mp4?_=1

电脑不会出错, 也不会疲劳-这比人类优越.

3 +1

评论