Arc/arc.bqn

41 lines
1.7 KiB
BQN
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env BQN
# SPDX-License-Identifier: AGPL-3.0-or-later
# SPDX-FileCopyrightText: 2023 Rampoina <rampoina@protonmail.com>
#
# Arc
# The level is a 2d matrix of lists (tiles)
# Each list contains the objects of the game represented as numbers
ansi•Import "ansi.bqn"
Game•Import "logic.bqn"
eansi.e
•term.RawMode 1 # set terminal to raw mode
•Out e"[?25l"e"[2J"e"[H" # Cursor to origin, hide it and clear screen
clear""
gGame "levels"" λ$⊕⭍#/\-|+<>^v"ansi.defaultB,ansi.yellow,ansi.cyan,ansi.red
{𝕤 # Loop until the user wins
•Out cleare"[H" # Cursor to origin
clear""
•Out "Level: "•Repr 1+g.currentLevel
•Out ansi.yellow"⭍"ansi.defaultB" Power the machines (⊕) by moving the mirrors ("ansi.cyan"\/"ansi.defaultB") "
•Out "Controls: (hjkl or wasd) to move, u to undo, r to reset level, q to quit"
g.Draw @
•Out "Moves: "•Repr ¯1+g.moves
g.WinLevel @ ?
•Out "Good job!, press any key to continue to the next level"
key•term.CharB @
cleare"[2J"
g.NextLevel @
{𝕤•Out e"[?12l"e"[?25h"•Exit 0}(key='q')@
;
key•term.CharB @
{𝕤g.Next ("hjklaswd"=key)/˜0¯1,10,¯10,01}(key"hjklaswd")@
{𝕤g.Undo @}(key='u')@
{𝕤•Out e"[?12l"e"[?25h"•Exit 0}(key='q')@
{𝕤cleare"[2J"g.Reset @}(key='r')@
{𝕤cleare"[2J"}(((1+>(1+101))¯1+g.moves)key='u')@
}•_While_{𝕤g.Over @}@
•Out "Well played, you win!"
•Out e"[?12l"e"[?25h"