KRITSADA icon

Games

KRITSADA | PRO | 04/09/22 12:36:42 AM UTC | 0 ⭐ | 7566 👁️ | Never ⏰ | []
TypeScript |

3.54 KB

|

None

|

0 👍

/

0 👎

let y = 0
let x = 0
let tempY = 0
let tempX = 0
let neighbours = 0
let cellCount = 0
let init = true
let smiley = true
 
let map = 
        [[false, false, false, false, false],
        [false, true, false, true, false],
        [false, false, false, false, false],
        [true, false, false, false, true],
        [false, true, true, true, false]
];
 
RefreshScreen()
 
function RefreshScreen() {
    x = 0
    cellCount = 0
    while (x < 5) {
        y = 0
        while (y < 5) {
            if (map[y][x]) {
                led.plot(x, y)
                cellCount+=1
            } else {
                led.unplot(x, y);
            }
            y += 1
        }
        x += 1
    }
 
    if (!init) {
        if (!map[y,x]) {
            led.plotBrightness(tempX, tempY, 10)
        } else {
            led.plotBrightness(tempX, tempY, 255)
        }
    }
}
 
function ConwayAlgo() {
    x = 0
    while (x < 5) {
        y = 0
        while (y < 5) {
            CountNeighbours(x, y)
            if (led.point(x, y)) {
                if (neighbours < 2 || neighbours > 3) {
                    map[y][x] = false
                }
            } else {
                if (neighbours === 3) {
                    map[y][x] = true
                }
            }
            y += 1
        }
        x += 1
    }
}
 
function CountNeighbours(i = 0, j = 0) {
    neighbours = 0
    if (i < 4) {
        if (led.point(i + 1, j)) {
            neighbours++
        }
 
        if (j < 4) {
            if (led.point(i + 1, j + 1)) {
                neighbours++
            }
        }
 
        if (j > 0) {
            if (led.point(i + 1, j - 1)) {
                neighbours++
            }
        }
    }
 
    if (i > 0) {
        if (led.point(i - 1, j)) {
            neighbours++
        }
 
        if (j < 4) {
            if (led.point(i - 1, j + 1)) {
                neighbours++
            }
        }
 
        if (j > 0) {
            if (led.point(i - 1, j - 1)) {
                neighbours++
            }
        }
    }
 
    if (j < 4) {
        if (led.point(i, j + 1)) {
            neighbours++
        }
    }
 
    if (j > 0) {
        if (led.point(i, j - 1)) {
            neighbours++
        }
    }
}
basic.forever(function () {
    if (init) {
        music.playTone(Note.F4, 50)
        RefreshScreen()
        if (smiley) {
            music.playTone(Note.F5, 50)
            basic.pause(1000)
            smiley = false
        }
        ConwayAlgo()
        basic.pause(300)
        if (cellCount === 0) {
            basic.pause(100)
            music.playTone(Note.C3, 50)
            basic.pause(100)
            music.playTone(Note.A3, 50)
            init = false;
            RefreshScreen()
        }
    }
})
 
input.onButtonPressed(Button.A, function () {
    if (!init) {
        map[tempY][tempX] = !map[tempY][tempX]
 
        RefreshScreen()
        music.playTone(Note.A4, 50)
    }
})
 
input.onButtonPressed(Button.B, function () {
    if (!init) {
        tempX += 1
        if (tempX > 4) {
            tempX = 0
            tempY += 1
            if (tempY > 4) {
                tempY = 0
            }
        }
        RefreshScreen()
        music.playTone(Note.C4, 50)
 
    }
})
 
input.onButtonPressed(Button.AB, function () {
    if (!smiley) {
    init = !init
    RefreshScreen()
    if(init) {
    music.playTone(Note.E5, 100)
    } else {
        music.playTone(Note.E3, 100)
    }
    }
})
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎