Added monochrome compatibility
This commit is contained in:
parent
dfecaf222d
commit
99d9b71a89
90
wordle.py
90
wordle.py
|
@ -1,19 +1,36 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from colored import bg, fg, attr
|
from colored import bg, fg, attr
|
||||||
|
import blessed
|
||||||
import datetime
|
import datetime
|
||||||
import time
|
import time
|
||||||
from getch import getch
|
from getch import getch
|
||||||
import possible
|
import possible
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
term = blessed.Terminal()
|
||||||
|
|
||||||
unicode=False
|
unicode=False
|
||||||
|
eightColor=True
|
||||||
|
termwhite = term.bold_white
|
||||||
|
termgreen = term.bold_green
|
||||||
if 'TERM' in os.environ:
|
if 'TERM' in os.environ:
|
||||||
if 'xterm' in os.environ['TERM']:
|
if 'xterm' in os.environ['TERM']:
|
||||||
unicode=True
|
unicode=True
|
||||||
|
if not 'ansi' in os.environ['TERM']:
|
||||||
|
eightColor=False
|
||||||
|
termwhite=term.bright_white
|
||||||
|
termgreen=term.bright_green
|
||||||
|
if eightColor:
|
||||||
|
colors =[ term.white_on_white, term.gray_on_gray,term.yellow_on_yellow,term.green_on_green,term.black_on_lightgray]
|
||||||
|
cardLetterColors =[ term.black_on_white, term.black_on_gray,term.bold_white_on_yellow,term.bold_white_on_green,term.black_on_lightgray]
|
||||||
|
|
||||||
colors =[ bg("white")+fg("black"), bg("dark_gray")+fg("white"),bg("light_yellow")+fg("dark_gray"),bg("green")+fg("white"),bg("light_gray")]
|
keycolors = [term.bold_white_on_black, term.black_on_black,term.yellow_on_black,term.bold_green_on_black]
|
||||||
keycolors = [fg("white")+bg("black"), fg("dark_gray")+bg("black"),fg("light_yellow")+bg("black"),fg("green")+bg("black")]
|
reset = term.white_on_black
|
||||||
reset = bg("black")+fg("white")
|
else:
|
||||||
|
colors =[ term.white_on_white, term.dimgray_on_dimgray,term.bright_yellow_on_bright_yellow,term.reverse_green_on_bright_white,term.lightgray_on_lightgray]
|
||||||
|
cardLetterColors =[ term.black_on_white, term.bright_white_on_dimgray,term.reverse_bright_yellow_on_dimgray,term.reverse_green_on_bright_white,term.on_lightgray]
|
||||||
|
keycolors = [termwhite, term.black_on_black,term.bright_yellow_on_black,term.bold_green_on_black]
|
||||||
|
reset=term.white_on_black + term.normal
|
||||||
|
|
||||||
class Wordle:
|
class Wordle:
|
||||||
def check(self):
|
def check(self):
|
||||||
|
@ -59,10 +76,13 @@ class Wordle:
|
||||||
for line in range(3):
|
for line in range(3):
|
||||||
placeCursor(baseCol, baseRow+line)
|
placeCursor(baseCol, baseRow+line)
|
||||||
for k,letter in enumerate(guess[0]):
|
for k,letter in enumerate(guess[0]):
|
||||||
if line!=1:
|
drawing=["_|","_|","_|"," |","_|"];
|
||||||
put(colors[letter]+" "+reset+" ")
|
if line==0:
|
||||||
|
put(colors[letter]+" "+reset+term.black_on_black+drawing[letter][1]+reset)
|
||||||
|
elif line==2:
|
||||||
|
put(colors[letter]+drawing[letter][0]*5+reset+term.black_on_black+drawing[letter][1]+reset)
|
||||||
else:
|
else:
|
||||||
put(colors[letter]+" "+guess[1][k]+" "+reset+" ")
|
put(colors[letter]+" "+cardLetterColors[letter]+guess[1][k]+term.normal+colors[letter]+" "+reset+term.black_on_black(drawing[letter][1])+reset)
|
||||||
def drawStatusLine(self):
|
def drawStatusLine(self):
|
||||||
placeCursor(9,21)
|
placeCursor(9,21)
|
||||||
put(reset+str(self.number))
|
put(reset+str(self.number))
|
||||||
|
@ -71,27 +91,28 @@ class Wordle:
|
||||||
t=self.turn
|
t=self.turn
|
||||||
else:
|
else:
|
||||||
t=self.turn+1
|
t=self.turn+1
|
||||||
put("Turn: "+str(min(t,6))+"/6"+colors[0])
|
placeCursor(40,21)
|
||||||
|
put(str(min(t,6))+"/6"+colors[0])
|
||||||
|
|
||||||
def drawKeyboard(self):
|
def drawKeyboard(self):
|
||||||
|
def putKey(key):
|
||||||
|
if key.upper() in self.guessedKeys:
|
||||||
|
if self.guessedKeys[key.upper()] > 1:
|
||||||
|
put(keycolors[self.guessedKeys[key.upper()]]+key+' '+term.normal)
|
||||||
|
else:
|
||||||
|
put(reset+' ')
|
||||||
|
else:
|
||||||
|
put(reset+key+' ')
|
||||||
|
|
||||||
placeCursor(13,17)
|
placeCursor(13,17)
|
||||||
for key in "qwertyuiop":
|
for key in "qwertyuiop":
|
||||||
if key.upper() in self.guessedKeys:
|
putKey(key)
|
||||||
put(keycolors[self.guessedKeys[key.upper()]]+key+' ')
|
|
||||||
else:
|
|
||||||
put(reset+key+' ')
|
|
||||||
placeCursor(14,18)
|
placeCursor(14,18)
|
||||||
for key in "asdfghjkl":
|
for key in "asdfghjkl":
|
||||||
if key.upper() in self.guessedKeys:
|
putKey(key)
|
||||||
put(keycolors[self.guessedKeys[key.upper()]]+key+' ')
|
|
||||||
else:
|
|
||||||
put(reset+key+' ')
|
|
||||||
placeCursor(16,19)
|
placeCursor(16,19)
|
||||||
for key in "zxcvbnm":
|
for key in "zxcvbnm":
|
||||||
if key.upper() in self.guessedKeys:
|
putKey(key)
|
||||||
put(keycolors[self.guessedKeys[key.upper()]]+key+' ')
|
|
||||||
else:
|
|
||||||
put(reset+key+' ')
|
|
||||||
|
|
||||||
|
|
||||||
put(colors[0])
|
put(colors[0])
|
||||||
|
@ -111,10 +132,15 @@ class Wordle:
|
||||||
self.drawStatusLine()
|
self.drawStatusLine()
|
||||||
self.drawKeyboard()
|
self.drawKeyboard()
|
||||||
self.errorStatus=""
|
self.errorStatus=""
|
||||||
def updateError(self,e=reset+" "+colors[0]):
|
def updateError(self,e=" +"):
|
||||||
|
if e[-1]=="+":
|
||||||
|
e=e[:-1]
|
||||||
|
put(reset)
|
||||||
|
else:
|
||||||
|
put(term.white_on_black_reverse)
|
||||||
self.errorStatus = e
|
self.errorStatus = e
|
||||||
placeCursor(3, 22)
|
placeCursor(3, 22)
|
||||||
put(e)
|
put(e+colors[0]+term.normal)
|
||||||
self.placeCursor()
|
self.placeCursor()
|
||||||
|
|
||||||
|
|
||||||
|
@ -139,28 +165,31 @@ def putCursorInside(guess,letter):
|
||||||
placeCursor(col,row);
|
placeCursor(col,row);
|
||||||
put(colors[0])
|
put(colors[0])
|
||||||
def blankScreen():
|
def blankScreen():
|
||||||
|
put(reset+term.clear)
|
||||||
|
placeCursor(0,0)
|
||||||
|
'''
|
||||||
put(reset+'\033[2J')
|
put(reset+'\033[2J')
|
||||||
placeCursor(0,0)
|
placeCursor(0,0)
|
||||||
put(reset+((" "*80+"\n")*24));
|
put(reset+((" "*80+"\n")*24));
|
||||||
placeCursor(0,0)
|
placeCursor(0,0)'''
|
||||||
def main():
|
def main():
|
||||||
cursorLocation = 0
|
cursorLocation = 0
|
||||||
blankScreen()
|
blankScreen()
|
||||||
if not unicode:
|
if not unicode:
|
||||||
screen=fg('green')+''' _ _
|
screen=termgreen+''' _ _
|
||||||
__ _____ _ __ __| | | ___
|
__ _____ _ __ __| | | ___
|
||||||
\ \ /\ / / _ \| '__/ _` | |/ _ \
|
\ \ /\ / / _ \| '__/ _` | |/ _ \
|
||||||
\ V V / (_) | | | (_| | | __/
|
\ V V / (_) | | | (_| | | __/
|
||||||
\_/\_/ \___/|_| \__,_|_|\___| '''
|
\_/\_/ \___/|_| \__,_|_|\___| '''
|
||||||
else:
|
else:
|
||||||
screen=fg('green')+'''
|
screen=term.bright_green+'''
|
||||||
████████████████████████████████████████
|
████████████████████████████████████████
|
||||||
█▄─█▀▀▀█─▄█─▄▄─█▄─▄▄▀█▄─▄▄▀█▄─▄███▄─▄▄─█
|
█▄─█▀▀▀█─▄█─▄▄─█▄─▄▄▀█▄─▄▄▀█▄─▄███▄─▄▄─█
|
||||||
██─█─█─█─██─██─██─▄─▄██─██─██─██▀██─▄█▀█
|
██─█─█─█─██─██─██─▄─▄██─██─██─██▀██─▄█▀█
|
||||||
▀▀▄▄▄▀▄▄▄▀▀▄▄▄▄▀▄▄▀▄▄▀▄▄▄▄▀▀▄▄▄▄▄▀▄▄▄▄▄▀'''
|
▀▀▄▄▄▀▄▄▄▀▀▄▄▄▄▀▄▄▀▄▄▀▄▄▄▄▀▀▄▄▄▄▄▀▄▄▄▄▄▀'''
|
||||||
screen +='''
|
screen +='''
|
||||||
clone by xereeto
|
clone by xereeto
|
||||||
original by josh wardle '''+fg('white')+'''
|
original by josh wardle '''+termwhite+'''
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
Guess the WORDLE in 6 tries.
|
Guess the WORDLE in 6 tries.
|
||||||
Each guess must be a valid 5 letter word.
|
Each guess must be a valid 5 letter word.
|
||||||
|
@ -175,7 +204,7 @@ def main():
|
||||||
a s d f g h j k l
|
a s d f g h j k l
|
||||||
z x c v b n m
|
z x c v b n m
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
Game:
|
Game: Turn:
|
||||||
'''
|
'''
|
||||||
put(screen)
|
put(screen)
|
||||||
goHome()
|
goHome()
|
||||||
|
@ -189,6 +218,7 @@ def main():
|
||||||
char = 0
|
char = 0
|
||||||
w.placeCursor()
|
w.placeCursor()
|
||||||
while not turnOver:
|
while not turnOver:
|
||||||
|
put(term.black)
|
||||||
try:
|
try:
|
||||||
char = getch().upper()
|
char = getch().upper()
|
||||||
except OverflowError:
|
except OverflowError:
|
||||||
|
@ -220,7 +250,7 @@ def main():
|
||||||
elif w.check():
|
elif w.check():
|
||||||
turnOver=True
|
turnOver=True
|
||||||
else:
|
else:
|
||||||
w.updateError("You have to enter a real word!")
|
w.updateError("Word not in dictionary!")
|
||||||
if w.wonGame():
|
if w.wonGame():
|
||||||
s="s"
|
s="s"
|
||||||
if w.turn==1:
|
if w.turn==1:
|
||||||
|
@ -243,13 +273,15 @@ def main():
|
||||||
import sys
|
import sys
|
||||||
w=None
|
w=None
|
||||||
try:
|
try:
|
||||||
|
with term.fullscreen(), term.hidden_cursor():
|
||||||
w=main()
|
w=main()
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
blankScreen()
|
with term.fullscreen():
|
||||||
print("Goodbye!")
|
put(term.clear)
|
||||||
|
print(reset+"Goodbye!")
|
||||||
#put("Goodbye!")
|
#put("Goodbye!")
|
||||||
cliflag = sys.argv[1] if len(sys.argv) > 1 else ''
|
cliflag = sys.argv[1] if len(sys.argv) > 1 else ''
|
||||||
if(w and cliflag != "--no-unicode" and unicode):
|
if(w and cliflag != "--no-unicode" and unicode):
|
||||||
|
|
Loading…
Reference in New Issue