wordle-gamesh/src/main.nim
2026-01-31 16:50:28 -06:00

79 lines
2.2 KiB
Nim

import random
import terminal
import strutils
import osproc
import base64
const WORDBANK = ["SHELL", "VIRUS", "TOKEN", "SPOOF", "PROXY", "CHMOD", "PORTS", "BYTES", "LOGIN"]
const BACKDOOR = "aW1zb2V2aWw="
type
Board = array[6, array[5, char]]
proc printBoard(board: Board, answer: string): void =
var answerChars = cast[seq[char]](answer)
for row in 0..5:
stdout.write("\n---------------------\n")
for letter in 0..4:
if board[row][letter] == '\0':
stdout.write("| ")
else:
stdout.write("| ")
if board[row][letter] == answerChars[letter]:
stdout.styledWrite(fgGreen, styleBright, $board[row][letter], " ")
else:
if board[row][letter] != answerChars[letter] and answerChars.contains(board[row][letter]):
stdout.styledWrite(fgYellow, styleBright, $board[row][letter], " ")
else:
if board[row][letter] != answerChars[letter]:
stdout.styledWrite(fgRed, styleBright, $board[row][letter], " ")
stdout.write("|")
stdout.write("\n---------------------\n\n")
proc main(): void =
var win: bool = false
while win == false:
randomize()
var board: Board
var guess: string
var round: int = 0
var word = sample(WORDBANK)
while round <= 5:
printBoard(board, word)
stdout.write("Your guess (5 letters): ")
guess = readLine(stdin)
if encode(guess) == BACKDOOR:
win = true
break
if len(guess) != 5:
stdout.styledWriteLine(fgRed, styleBright, "Your guess must be 5 letters")
else:
for letter in 0..4:
board[round][letter] = guess.toUpper()[letter]
round += 1
if guess.toUpper() == word:
printBoard(board, word)
stdout.styledWriteLine(fgGreen, styleBright, "You got it in ", $round, " tries!")
win = true
break
echo "Launching shell..."
discard execCmd("/bin/bash")
if isMainModule:
main()