-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathngame.nim
62 lines (54 loc) · 1.61 KB
/
ngame.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import games/puissance4
import games/ghost
import games/wordle
import os, strutils
let games = [
puissance4.main,
ghost.main,
wordle.main,
]
template logo() =
echo "\e[33m"
echo " ▄▄ ▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄ ▄▄ ▄▄▄▄▄▄▄"
echo " █ █ █ █ █ █ █▄█ █ █"
echo " █ █▄█ █ ▄▄▄▄█ ▄ █ █ ▄▄▄█"
echo " █ █ █ ▄▄█ █▄█ █ █ █▄▄▄ "
echo " █ ▄ █ █ █ █ █ █ ▄▄▄█"
echo " █ █ █ █ █▄▄█ █ ▄ █ ██▄██ █ █▄▄▄ "
echo " █▄█ █▄▄█▄▄▄▄▄▄▄█▄▄█ █▄▄█▄█ █▄█▄▄▄▄▄▄▄█"
echo "\e[0m"
echo "\n"
template clear() =
if defined(windows): discard execShellCmd("cls")
discard execShellCmd("clear")
template play(play_func: proc) =
play_func()
proc menu(): uint =
var c: uint = 0
while c == 0:
clear()
logo()
echo " 1. \e[33mPuissance 4\e[0m"
echo " 2. \e[34mGhost Game\e[0m"
echo " 3. \e[35mWordle \e[0m"
echo " 4. Quit"
echo ""
stdout.write " Your choice: "
try:
c = parseUInt(readline(stdin))
if c < 1 or c > 4: c = 0
except: continue
return c
proc pause() = echo "Press Enter to continue"; discard readline(stdin)
proc main() =
while true:
let choice = menu()
if choice == 4: break
try:
clear()
play(games[choice-1])
pause()
except: discard
try:
main()
except: discard