制作坊 计算机玩游戏Microbit 编程: 简易人工智能让电脑玩游戏 专区
计算机玩游戏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
电脑不会出错, 也不会疲劳-这比人类优越.
