Initial commit
This commit is contained in:
commit
22fcf5b1aa
15
README.md
Normal file
15
README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Wordle GameSH
|
||||
|
||||
**Inspired by [https://github.com/bcvillano/gamesh](https://github.com/bcvillano/gamesh)**
|
||||
|
||||
Requires users to win Wordle before getting bash.
|
||||
|
||||
# Compiling
|
||||
If it isn't already installed, install [Nim](https://nim-lang.org/install.html).
|
||||
|
||||
Modify the values in `WORDBANK` and `BACKDOOR` as needed.
|
||||
|
||||
Then compile for release
|
||||
```bash
|
||||
nim c -d:release src/main.nim # Outputs to src/main
|
||||
```
|
||||
79
src/main.nim
Normal file
79
src/main.nim
Normal file
@ -0,0 +1,79 @@
|
||||
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()
|
||||
Loading…
x
Reference in New Issue
Block a user