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