[Day26]用Canvas打造自己的游乐场-labyrinth 迷雾效果

昨天是把整张地图绘制出来,不过这样一下子就能看清长张地图的路线,缺乏了挑战性,这边要将地图可视范围缩小,缩小成一次只能看到5*5块砖的大小.
那要修改一下画面的绘制.
首先就是先把canvas的大小做个修改

<canvas id="playground" width="200" height="200"></canvas>
// 负责画画
draw = () => {
    // background
    drawRectangle(0, 0, canvas.width, canvas.height, 'black');

    // 小画面的地图
    drawMapInShadow();

    // 画地图
    // drawMap();
}

显示的function换一下

// 视线范围
var map_x = 0.0;
var map_y = 0.0;

 // 小画面地图
drawMapInShadow = () => {
    var mapLeftCol = Math.floor(map_x / MAP_BRICKS);
    var mapTopRow = Math.floor(map_y / MAP_BRICKS);

    var colFitOnScreen = Math.floor(canvas.width / MAP_BRICKS);
    var rowFitOnScreen = Math.floor(canvas.height / MAP_BRICKS);

    var mapRightCol =  mapLeftCol + colFitOnScreen + 1;
    var mapBottomRow = mapTopRow + rowFitOnScreen + 1;

    for(var col = mapLeftCol; col < mapRightCol; col++) {
        for(var row = mapTopRow; row < mapBottomRow; row++) {
            if(mapBrick(col, row)) {
                drawRectangle(
                    col * MAP_BRICKS,
                    row * MAP_BRICKS,
                    MAP_BRICKS - BRICK_SPACING,
                    MAP_BRICKS - BRICK_SPACING,
                    'gray'
                    )
            }
        }
    }
}

接下来只需要操控map_x以及map_y就能移动可是范围地图了,先来做个测试.

// 移动速度
const MOVE_SPEED = 2.5;

// 负责处理动作
move = () => {
    map_x += MOVE_SPEED;
    map_y += MOVE_SPEED;
}

会看到

OK 那明天就加入玩家控制的角色


<<:  DAY26 学习30天的c++

>>:  User options 关於使用者体验

ActionScript 语言和你 SAY HELLO!!

第十六天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,知...

JavaScript 之旅 (27):Promise.any() & AggregateError

本篇介绍 ES2021 (ES12) 提供的 Promise.any() 和 AggregateE...

【Day 13】 实作 - 透过 AWS 服务 - QuickSight 建立互动式仪表板 ( 1 )

大家好~忧郁的星期一 在前几天我们顺利撷取 Google Analytics 资料到 AWS 中,并...

【Day19】[资料结构]-图Graph

图(Graph),并非多数人直接联想到形状或图片,在计算机科学或离散数学中的图,是由数个顶点Vert...

卡夫卡的藏书阁【Book8】- Kafka 手动重新选举 Partition Leader

“I cannot make you understand. I cannot make anyo...