File size: 2,033 Bytes
6f55a1e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const fs = require('fs');
const Jimp = require('jimp');

// Fungsi untuk menggambar papan permainan dengan pemain
async function drawBoard(boardImageURL, user1 = null, user2 = null, user3 = null, user4 = null, stabil_x, stabil_y) {
    try {
        // Load gambar papan permainan dari URL
        const board = await Jimp.read(boardImageURL);

        // Lokasi pemain pada papan permainan
        const playerPositions = [user1, user2, user3, user4].filter(pos => pos !== null && pos >= 1 && pos <= 100);

        // URL gambar untuk setiap pemain
        const playerImageURLs = [
            "https://telegra.ph/file/30f92f923fb0484f0e4e0.png",
            "https://telegra.ph/file/6e07b5f30b24baedc7822.png",
            "https://telegra.ph/file/34f47137df0dc9aa9c15a.png",
            "https://telegra.ph/file/860b5df98963a1f14a91c.png"
        ];

        // Gambar pion untuk setiap pemain pada posisi mereka
        for (let i = 0; i < playerPositions.length; i++) {
            const position = playerPositions[i];
            const row = Math.floor((position - 1) / 10); // Mulai dari bawah
            const col = (row % 2 === 0) ? (position - 1) % 10 : 9 - (position - 1) % 10;
            
            // Posisi pion pada papan permainan
            const x = col * 60 + stabil_x
            const y = (9 - row) * 60 + stabil_y

            // Load gambar pemain dari URL
            const playerImageURL = playerImageURLs[i];
            const playerImage = await Jimp.read(playerImageURL);

            // Resize gambar pemain menjadi 38x38 (sesuai dengan ukuran lingkaran)
            playerImage.resize(50, 50);

            // Gabungkan gambar pemain dengan papan permainan
            board.composite(playerImage, x - 4, y - 4, { mode: Jimp.BLEND_SOURCE_OVER });
        }
        
        // Mengembalikan buffer gambar
        return await board.getBufferAsync(Jimp.MIME_PNG);
    } catch (error) {
        console.error('An error occurred:', error);
        return null;
    }
}

module.exports = { drawBoard }