Arc/arc.bqn

42 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>
ansi•Import "ansi.bqn"
Game•Import "logic.bqn"
opts{
a•args
•Show a
chars {0=𝕩?" λ$⊕⭍#/\-|+<>^v";𝕩}(»(<"--chars"))/a
fchars{0=𝕩?" λ$⊕⭍#/\-|+<>^v";𝕩}(»(<"--fchars"))/a
levels{0=𝕩?"levels";𝕩}(»(<"--levels"))/a
}
ansi.InitTerm @
clear""
gGame opts.levelsopts.charsopts.fcharsansi.defaultB,ansi.yellow,ansi.cyan,ansi.red
{𝕤 # Loop until the user wins
•Out clearansi.cursor.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 @
clearansi.clear.screen
g.NextLevel @
{𝕤ansi.RestoreTerm @•Exit 0}(key='q')@
;
key•term.CharB @
{𝕤g.Next ("hjklaswd"=key)/˜0¯1,10,¯10,01}(key"hjklaswd")@
{𝕤clear""ansi.clear.screen˜((1+>(•Repr))¯1+g.moves)g.Undo @}(key='u')@
{𝕤ansi.RestoreTerm @•Exit 0}(key='q')@
{𝕤clearansi.clear.screeng.Reset @}(key='r')@
}•_While_{𝕤g.Over @}@
•Out "Well played, you win!"
ansi.RestoreTerm @