Huge amount of UI improvement + Wordle scoring. Hopefully the final review.

This commit is contained in:
adithyagenie 2022-11-28 01:32:47 +05:30
parent dea8f183be
commit d318ce41a4
13 changed files with 141 additions and 181 deletions

View file

@ -8,13 +8,14 @@ import maze.modules.PlayerBase_func as database
import pong import pong
import snake import snake
from maze.modules.about import about from maze.modules.about import about
import wordle.wordle as wordlegame
def menu(screen): def menu(screen):
exit = False exit = False
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
screen.clear() screen.clear()
screen.nodelay(True) screen.nodelay(True)
curses.init_pair(5, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
screen.refresh() screen.refresh()
text = """ text = """
\t\t\t \t\t\t
@ -23,14 +24,14 @@ def menu(screen):
\t\t\t \t\t\t
\t\t\t """ \t\t\t """
screen.addstr(1, 5, str(text)) screen.addstr(1, x // 2 - 34, str(text), curses.color_pair(5))
screen.addstr(10, x // 2 - 2, "MENU") screen.addstr(10, x // 2 - 2, "MENU", curses.color_pair(3) | curses.A_BOLD)
screen.addstr(13, 1, "space - Play") screen.addstr(13, x // 2 - 6, "space - PLAY", curses.A_BOLD)
screen.addstr(14, 1, "f - Load game from file") screen.addstr(15, x // 2 - 11, "f - LOAD GAME FROM FILE", curses.A_BOLD)
screen.addstr(15, 1, "a - Account Settings") screen.addstr(17, x // 2 - 10, "a - ACCOUNT SETTINGS", curses.A_BOLD)
screen.addstr(16, 1, "l - Leaderboard") screen.addstr(19, x // 2 - 7, "l - LEADERBOARD", curses.A_BOLD)
screen.addstr(17, 1, "x - About") screen.addstr(21, x // 2 - 4, "x - ABOUT", curses.A_BOLD)
screen.addstr(18, 1, "esc - Quit") screen.addstr(23, x // 2 - 4, "esc - QUIT", curses.A_BOLD)
screen.border() screen.border()
while True: while True:
if exit: if exit:
@ -40,11 +41,11 @@ def menu(screen):
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.border() screen.border()
screen.addstr(1, x // 2 - 2, "PLAY") screen.addstr(1, x // 2 - 2, "PLAY", curses.color_pair(3) | curses.A_BOLD)
screen.addstr(y // 2 - 4, x // 2 - 2, "1. MAZE") screen.addstr(y // 2 - 4, x // 2 - 2, "1. MAZE", curses.A_BOLD)
screen.addstr(y // 2 - 2, x // 2 - 2, "2. PONG") screen.addstr(y // 2 - 2, x // 2 - 2, "2. PONG", curses.A_BOLD)
screen.addstr(y // 2, x // 2 - 2, "3. SNAKE") screen.addstr(y // 2, x // 2 - 2, "3. SNAKE", curses.A_BOLD)
screen.addstr(y // 2 + 2, x // 2 - 2, "4. WORDLE") screen.addstr(y // 2 + 2, x // 2 - 2, "4. WORDLE", curses.A_BOLD)
while True: while True:
key2 = screen.getch() key2 = screen.getch()
if key2 == ord("1"): if key2 == ord("1"):
@ -54,7 +55,9 @@ def menu(screen):
elif key2 == ord("3"): elif key2 == ord("3"):
snake.main(screen) snake.main(screen)
elif key2 == ord("4"): elif key2 == ord("4"):
pass screen.nodelay(False)
screen.keypad(False)
wordlegame.main(screen)
elif key2 == 27: elif key2 == 27:
menu(screen) menu(screen)
break break

View file

@ -106,9 +106,9 @@ def screenhandler(screen): # MAIN MENU
global loggedin, U, gamerid global loggedin, U, gamerid
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.addstr(1, w // 2 - 8, "ACCOUNT SETTINGS") screen.addstr(1, w // 2 - 8, "ACCOUNT SETTINGS", curses.color_pair(3) | curses.A_BOLD)
if loggedin: if loggedin:
screen.addstr(2, w // 2 - 8, f"Logged in as: {U}") screen.addstr(2, w // 2 - 8, f"Logged in as: {U}", curses.color_pair(6) | curses.A_BOLD)
screen.addstr(h // 2 - 3, w // 2 - 4, "1. Login") screen.addstr(h // 2 - 3, w // 2 - 4, "1. Login")
screen.addstr(h // 2 - 2, w // 2 - 8, "2. Create Account") screen.addstr(h // 2 - 2, w // 2 - 8, "2. Create Account")
screen.addstr(h // 2 - 1, w // 2 - 12, "3. Modify account details") screen.addstr(h // 2 - 1, w // 2 - 12, "3. Modify account details")
@ -203,7 +203,7 @@ def login(screen, calledby=None): # Function to log in
screen.border() screen.border()
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
usernamelist = list_getter("username") usernamelist = list_getter("username")
screen.addstr(1, x // 2 - 3, "LOGIN") screen.addstr(1, x // 2 - 3, "LOGIN", curses.color_pair(3) | curses.A_BOLD)
screen.addstr(y // 2 - 2, x // 2 - 7, "Username: ") screen.addstr(y // 2 - 2, x // 2 - 7, "Username: ")
while True: while True:
inputU = input(y // 2 - 2, x // 2 + 3, screen) inputU = input(y // 2 - 2, x // 2 + 3, screen)
@ -253,21 +253,21 @@ def login(screen, calledby=None): # Function to log in
loggedin = True loggedin = True
gamerid = res[0][1] gamerid = res[0][1]
U = inputU U = inputU
screen.addstr(y // 2 + 2, x // 2 - 4, "Login Successful!") screen.addstr(y // 2 + 3, x // 2 - 9, "Login Successful!", curses.color_pair(6) | curses.A_BOLD)
if calledby is not None: if calledby is not None:
screen.addstr(y // 2 + 3, x // 2 - 4, "Updating score...") screen.addstr(y // 2 + 4, x // 2 - 8, "Updating score...", curses.color_pair(6) | curses.A_BOLD)
screen.refresh() screen.refresh()
sleep(3) sleep(3)
Update_score(calledby[0], calledby[1]) Update_score(calledby[0], calledby[1])
return return
else: else:
screen.addstr(y // 2 + 3, x // 2 - 4, "Returning to menu screen...") screen.addstr(y // 2 + 4, x // 2 - 13, "Returning to menu screen...")
screen.refresh() screen.refresh()
sleep(3) sleep(3)
screenhandler(screen) screenhandler(screen)
return return
else: else:
screen.addstr(y // 2 + 2, x // 2 - 4, "Wrong password. Try again.") screen.addstr(y // 2 + 2, x // 2 - 13, "Wrong password. Try again.")
while True: while True:
key = screen.getch() key = screen.getch()
if key == 10: if key == 10:
@ -397,7 +397,7 @@ def new_add(screen, calledby=None):
screen.border() screen.border()
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
global quitting global quitting
screen.addstr(1, x // 2 - 8, "ACCOUNT CREATION") screen.addstr(1, x // 2 - 8, "ACCOUNT CREATION", curses.color_pair(3) | curses.A_BOLD)
add_name = user( add_name = user(
screen, y // 2 - 4, x // 2 - 10 screen, y // 2 - 4, x // 2 - 10
) # calling fn user for username, password and email ) # calling fn user for username, password and email
@ -452,7 +452,7 @@ def modify_account(screen):
screen.border() screen.border()
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
global loggedin, quitting, U global loggedin, quitting, U
screen.addstr(1, x // 2 - 8, "MODIFY ACCOUNT SETTINGS") screen.addstr(1, x // 2 - 8, "MODIFY ACCOUNT SETTINGS", curses.color_pair(3) | curses.A_BOLD)
if loggedin == False: if loggedin == False:
screen.addstr( screen.addstr(
y // 2, y // 2,
@ -522,7 +522,7 @@ def view_account(screen):
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.border() screen.border()
screen.addstr(1, x // 2 - 9, "VIEW ACCOUNT DETAILS") screen.addstr(1, x // 2 - 9, "VIEW ACCOUNT DETAILS", curses.color_pair(3) | curses.A_BOLD)
if not loggedin: if not loggedin:
screen.addstr( screen.addstr(
y // 2, y // 2,
@ -568,6 +568,7 @@ def delete(screen):
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.border() screen.border()
screen.addstr(1, x // 2 - 6, "DELETE ACCOUNT", curses.color_pair(3) | curses.A_BOLD)
if loggedin == False: if loggedin == False:
screen.addstr( screen.addstr(
y // 2, y // 2,
@ -645,7 +646,7 @@ def forgotpassword(screen):
screen.clear() screen.clear()
screen.refresh() screen.refresh()
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
screen.addstr(1, x // 2 - 7, "FORGOT PASSWORD") screen.addstr(1, x // 2 - 7, "FORGOT PASSWORD", curses.color_pair(3) | curses.A_BOLD)
screen.refresh() screen.refresh()
global quitting global quitting
usernamelist = list_getter("username") usernamelist = list_getter("username")
@ -770,13 +771,13 @@ def logout(screen):
screen.clear() screen.clear()
screen.refresh() screen.refresh()
scree.border() scree.border()
screen.addstr(1, x // 2 - 2, "LOGOUT") screen.addstr(1, x // 2 - 2, "LOGOUT", curses.color_pair(3) | curses.A_BOLD)
screen.addstr(y // 2, 5, "Logging out of your account...") screen.addstr(y // 2, 5, "Logging out of your account...")
global loggedin, U, gamerid global loggedin, U, gamerid
loggedin = False loggedin = False
U = gamerid = None U = gamerid = None
screen.refresh() screen.refresh()
sleep(5) sleep(3)
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screenhandler(screen) screenhandler(screen)
@ -795,7 +796,7 @@ def leaderboard(screen):
screen.clear() screen.clear()
screen.border() screen.border()
screen.refresh() screen.refresh()
screen.addstr(1, x // 2 - 5, "LEADERBOARD", curses.A_BOLD) screen.addstr(1, x // 2 - 5, "LEADERBOARD", curses.color_pair(3) | curses.A_BOLD)
screen.addstr(3, x // 2 - 2, f"{tables[current_page].split('_')[0].upper()}", curses.color_pair(6) | curses.A_BOLD) screen.addstr(3, x // 2 - 2, f"{tables[current_page].split('_')[0].upper()}", curses.color_pair(6) | curses.A_BOLD)
res = get( res = get(
f"SELECT p.gamerid,\ f"SELECT p.gamerid,\

View file

@ -1,50 +1,50 @@
import maze.menu import maze.menu
import curses
def about(screen): def about(screen):
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.border() screen.border()
screen.addstr(1, x // 2 - 2, "ABOUT US") screen.addstr(1, x // 2 - 2, "ABOUT US", curses.color_pair(3) | curses.A_BOLD)
screen.addstr( screen.addstr(
3, 3,
5, 5,
"This game which you have played was developed as a Computer Science Project by", "This game which you have played was developed as a Computer Science Project by",
) )
screen.addstr(5, 5, "B. Adithya\t\t\t - XII - C - Roll no: 3") screen.addstr(5, 5, "B. Adithya\t\t\t - XII - C - Roll no: 3", curses.A_BOLD)
screen.addstr(6, 5, "V. Kirthivaasan\t\t - XII - C - Roll no: 17") screen.addstr(6, 5, "V. Kirthivaasan\t\t - XII - C - Roll no: 17", curses.A_BOLD)
screen.addstr(7, 5, "R. Manwanthakrishnan\t - XII - C - Roll no: 21") screen.addstr(7, 5, "R. Manwanthakrishnan\t - XII - C - Roll no: 22", curses.A_BOLD)
screen.addstr( screen.addstr(
9, 9,
5, 5,
"This game aims at generating a maze which always has a path towards the right bottom corner", "There are a series of retro games namely the maze, pong, snake and wordle.",
) )
screen.addstr( screen.addstr(
10, 5, "by using a famous generation algorithm named Depth First Search (DFS)." 10, 5, "The maze is generated which always has a path towards the right bottom corner by using "
) )
screen.addstr( screen.addstr(11, 5, "a famous generation algorithm named Depth First Search (DFS).")
11,
5,
"This game makes use of the 'curses' module which runs on any operating system in the native terminal without",
)
screen.addstr(12, 5, "use of any other external modules.")
screen.addstr( screen.addstr(
13, 13,
5, 5,
"It makes use of SQL tables to store login details and maintain a leaderboard.", "This game makes use of the 'curses' module which runs on any operating system in the native terminal.",
) )
screen.addstr( screen.addstr(
14, 14,
5, 5,
"It also makes use of binary files to save and load mazes.", "It makes use of SQL tables to store login details and maintain a leaderboard.",
) )
screen.addstr(16, 5, "This project has been an absolute blast to make.")
screen.addstr( screen.addstr(
17, 5, "We thank you for playing this! Hope you liked it as much as we did!" 15,
5,
"It also makes use of binary files to save and load mazes and other credentials necessary.",
) )
screen.addstr(20, 5, "Signing off,") screen.addstr(17, 5, "This project has been an absolute blast to make.")
screen.addstr(21, 5, "The Labyrinth") screen.addstr(
18, 5, "We thank you for playing this! Hope you liked it as much as we did!"
)
screen.addstr(21, 5, "Signing off,")
screen.addstr(22, 5, "The Labyrinth")
screen.addstr(y - 2, x - 31, "Press Esc to exit this screen.") screen.addstr(y - 2, x - 31, "Press Esc to exit this screen.")
screen.refresh() screen.refresh()
while True: while True:

View file

@ -216,8 +216,8 @@ def coords(node):
def construction_demo(maze, screen): def construction_demo(maze, screen):
head = (".", curses.color_pair(3)) head = (".", curses.color_pair(5) | curses.A_BOLD)
trail = (".", curses.color_pair(2)) trail = (".", curses.color_pair(2) | curses.A_BOLD)
draw_path( draw_path(
maze.track(), screen, delay=0.01, head=head, trail=trail, skip_first=False maze.track(), screen, delay=0.01, head=head, trail=trail, skip_first=False
) )
@ -290,21 +290,20 @@ def pathfinding_demo(
elif current_coords[0] == won_coords[0] and current_coords[1] == won_coords[1]: elif current_coords[0] == won_coords[0] and current_coords[1] == won_coords[1]:
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.border()
winmsg = """
\t\t\t
\t\t\t
\t\t\t
\t\t\t
\t\t\t """
screen.addstr( screen.addstr(
0, maxy // 2 - 5,
0, maxx // 2 - 31,
""" winmsg,
curses.color_pair(5)
""",
) )
screen.border()
screen.refresh() screen.refresh()
global WON global WON
WON = WON + 1 WON = WON + 1
@ -317,7 +316,7 @@ def pathfinding_demo(
# if state & curses.BUTTON3_PRESSED: # if state & curses.BUTTON3_PRESSED:
# reset(finish, cell, curses.color_pair(2)) # reset(finish, cell, curses.color_pair(2))
# elif state & curses.BUTTON1_PRESSED: # elif state & curses.BUTTON1_PRESSED:
# reset(start, cell, curses.color_pair(3)) # reset(start, cell, curses.color_pair(1))
elif key == curses.KEY_UP: elif key == curses.KEY_UP:
if ( if (
@ -410,64 +409,6 @@ def pathfinding_demo(
# print(screen.instr(current_coords[0],current_coords[1]+1,1).decode("utf-8"), "RSIDE PRESS") # print(screen.instr(current_coords[0],current_coords[1]+1,1).decode("utf-8"), "RSIDE PRESS")
# def menu(screen):
# y, x = screen.getmaxyx()
# screen.clear()
# screen.refresh()
# text = """
# \t\t\t██ █████ ██████ ██ ██ ██████ ██ ███ ██ ████████ ██ ██
# \t\t\t██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██
# \t\t\t██ ███████ ██████ ████ ██████ ██ ██ ██ ██ ██ ███████
# \t\t\t██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
# \t\t\t███████ ██ ██ ██████ ██ ██ ██ ██ ██ ████ ██ ██ ██"""
#
# screen.addstr(1, 5, str(text))
# screen.addstr(10, x // 2 - 2, "MENU")
# screen.addstr(13, 1, "space - Play")
# screen.addstr(14, 1, "f - Load game from file")
# screen.addstr(15, 1, "a - Account Settings")
# screen.addstr(16, 1, "l - Leaderboard")
# screen.addstr(17, 1, "x - About")
# screen.addstr(18, 1, "esc - Quit")
# screen.border()
# while True:
# key = screen.getch()
# if key == ord(" "):
# play(screen)
# elif key == 27:
# screen.clear()
# screen.refresh()
# screen.border()
# screen.addstr(y // 2 - 5, x // 2 - 5, "THANK YOU!")
# while True:
# breakkey = screen.getch()
# if breakkey:
# time.sleep(1)
# sys.exit()
# elif key == ord("a"):
# database.screenhandler(screen)
# elif key == ord("l"):
# database.leaderboard(screen)
# elif key == ord("x"):
# about(screen)
# elif key == ord("f"):
# present = sl.check()
# if present:
# maze = sl.load(screen)
# if maze:
# play(screen, maze[0], maze[1], maze[2])
# return
# else:
# screen.addstr(
# 20, 5, "No saved mazes present. Press enter to continue..."
# )
# while True:
# key2 = screen.getch()
# if key2 == 10:
# screen.addstr(20, 5, " " * (x - 10))
# break
def play( def play(
screen, screen,
loadedmaze=None, loadedmaze=None,
@ -484,16 +425,18 @@ def play(
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.border() screen.border()
screen.addstr(y // 2 - 5, x // 2 - 8, str("Your score is: " + str(int(score)))) screen.addstr(y // 2 - 5, x // 2 - 7, str("Your score is: " + str(int(score))), curses.color_pair(3) | curses.A_BOLD)
res = database.Update_score(int(score), game) res = database.Update_score(int(score), game)
if res == "guest": if res == "guest":
screen.addstr( screen.addstr(
height - 1, height - 1,
5, 31,
"You are not signed in. You will lose your score if you proceed.", "You are not signed in. You will lose your score if you proceed.",
curses.color_pair(1) | curses.A_BOLD
) )
screen.addstr( screen.addstr(
height, 5, "Do you want to login and save your progress? (y/n)" height, 37, "Do you want to login and save your progress? (y/n)",
curses.color_pair(1) | curses.A_BOLD
) )
while True: while True:
key = screen.getch() key = screen.getch()
@ -551,37 +494,16 @@ def play(
score = 0 score = 0
guestswitch(score, game="maze") guestswitch(score, game="maze")
# res = database.Update_score(int(score))
# if res == "guest":
# screen.addstr(
# height - 1,
# 5,
# "You are not signed in. You will lose your score if you proceed.",
# )
# screen.addstr(
# height, 5, "Do you want to login and save your progress? (y/n)"
# )
# while True:
# key = screen.getch()
# if key == ord("y"):
# database.login(screen, calledby=int(score))
# break
# elif key == ord("n"):
# break
# screen.clear()
# screen.refresh()
# came_out = 0
# menu(screen)
# return
def main(screen): def main(screen):
screen.nodelay(True) screen.nodelay(True)
curses.curs_set(False) curses.curs_set(False)
curses.mousemask(curses.ALL_MOUSE_EVENTS) curses.mousemask(curses.ALL_MOUSE_EVENTS)
curses.init_pair(1, curses.COLOR_BLUE, curses.COLOR_BLACK) curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)
curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK) curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)
curses.init_pair(3, curses.COLOR_RED, curses.COLOR_BLACK) curses.init_pair(3, curses.COLOR_YELLOW, curses.COLOR_BLACK)
curses.init_pair(5, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
curses.init_pair(6, curses.COLOR_CYAN, curses.COLOR_BLACK)
screen.clear() screen.clear()
screen.refresh() screen.refresh()
y, x = screen.getmaxyx() y, x = screen.getmaxyx()

View file

@ -1,6 +1,7 @@
import os import os
import pickle import pickle
from time import sleep from time import sleep
import curses
import maze.menu as m import maze.menu as m
@ -50,19 +51,21 @@ def load(screen):
y, x = screen.getmaxyx() y, x = screen.getmaxyx()
screen.clear() screen.clear()
screen.refresh() screen.refresh()
screen.addstr(2, x // 2 - 4, "LOAD MAZE") screen.border()
screen.addstr(2, x // 2 - 4, "LOAD MAZE", curses.color_pair(3) | curses.A_BOLD)
mazes = os.listdir("saves") mazes = os.listdir("saves")
sy = 4 sy = 5
for i in range(len(mazes)): for i in range(len(mazes)):
msg = f"{str(i + 1)}. Maze {((mazes[i].replace('.maze', '')).split('_'))[1]} - {((mazes[i].replace('.maze', '')).split('_'))[2]}"
screen.addstr( screen.addstr(
sy, sy,
10, x // 2 - len(msg) // 2,
f"{str(i + 1)}. Maze {((mazes[i].replace('.maze', '')).split('_'))[1]} - {((mazes[i].replace('.maze', '')).split('_'))[2]}", msg
) )
sy += 1 sy += 1
while True: while True:
screen.addstr(y // 2 + 5, 0, "Enter preferred maze number: ") screen.addstr(y // 2 + 5, x // 2 - 15, "Enter preferred maze number: ")
num = input(y // 2 + 5, 30, screen) num = input(y // 2 + 5, x // 2 + 14, screen)
if num and type(int(num)) == type(0): if num and type(int(num)) == type(0):
num = int(num) - 1 num = int(num) - 1
else: else:
@ -73,7 +76,7 @@ def load(screen):
if num < len(mazes): if num < len(mazes):
break break
else: else:
screen.addstr(y - 1, 0, "Entered maze doesn't exist. Please try again.") screen.addstr(y - 5, x // 2 - 23, "Entered maze doesn't exist. Please try again.", curses.color_pair(1))
while True: while True:
key = screen.getch() key = screen.getch()
if key == 10: if key == 10:

View file

@ -206,3 +206,5 @@ def main(screen):
player_thread.run() player_thread.run()
time.sleep(1) time.sleep(1)
m1.play(screen, executeguest=True, outerscore=score.score, outergame="pong") m1.play(screen, executeguest=True, outerscore=score.score, outergame="pong")
maze.menu.menu(stdscr)
return

View file

@ -33,9 +33,14 @@ def main(stdscr):
# initial settings # initial settings
curses.curs_set(0) curses.curs_set(0)
stdscr.nodelay(1) stdscr.nodelay(1)
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)
curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)
curses.init_pair(3, curses.COLOR_YELLOW, curses.COLOR_BLACK)
curses.init_pair(6, curses.COLOR_CYAN, curses.COLOR_BLACK)
stdscr.timeout(100) stdscr.timeout(100)
stdscr.clear() stdscr.clear()
stdscr.refresh() stdscr.refresh()
# create a game box # create a game box
sh, sw = stdscr.getmaxyx() sh, sw = stdscr.getmaxyx()
box = [[3, 3], [sh - 3, sw - 3]] # [[ul_y, ul_x], [dr_y, dr_x]] box = [[3, 3], [sh - 3, sw - 3]] # [[ul_y, ul_x], [dr_y, dr_x]]
@ -47,11 +52,11 @@ def main(stdscr):
# draw snake # draw snake
for y, x in snake: for y, x in snake:
stdscr.addstr(y, x, "#") stdscr.addstr(y, x, "", curses.color_pair(3) | curses.A_BOLD)
# create food # create food
food = create_food(snake, box) food = create_food(snake, box)
stdscr.addstr(food[0], food[1], "*") stdscr.addstr(food[0], food[1], "🍎")
# print score # print score
score = 0 score = 0
@ -84,7 +89,7 @@ def main(stdscr):
new_head = [head[0] - 1, head[1]] new_head = [head[0] - 1, head[1]]
# insert and print new head # insert and print new head
stdscr.addstr(new_head[0], new_head[1], "#") stdscr.addstr(new_head[0], new_head[1], "", curses.color_pair(3) | curses.A_BOLD)
snake.insert(0, new_head) snake.insert(0, new_head)
# if sanke head is on food # if sanke head is on food
@ -96,7 +101,7 @@ def main(stdscr):
# create new food # create new food
food = create_food(snake, box) food = create_food(snake, box)
stdscr.addstr(food[0], food[1], "*") stdscr.addstr(food[0], food[1], "🍎", curses.color_pair(1) | curses.A_BOLD)
# increase speed of game # increase speed of game
stdscr.timeout(100 - (len(snake) // 3) % 90) stdscr.timeout(100 - (len(snake) // 3) % 90)
@ -112,7 +117,8 @@ def main(stdscr):
or snake[0] in snake[1:] or snake[0] in snake[1:]
): ):
msg = "Game Over!" msg = "Game Over!"
stdscr.addstr(sh // 2, sw // 2 - len(msg) // 2, msg) stdscr.addstr(sh // 2, sw // 2 - len(msg) // 2, msg, curses.color_pair(1) | curses.A_BOLD)
stdscr.addstr(sh // 2 + 1, sw // 2 - 8, "The Score is: "+str(score), curses.color_pair(3) | curses.A_BOLD)
while stdscr.getch() == -1: while stdscr.getch() == -1:
pass pass
time.sleep(2) time.sleep(2)

View file

@ -49,9 +49,8 @@ if len(sys.argv) == 1:
bruh() bruh()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
finally: player.sql.close()
player.sql.close() sys.exit()
sys.exit()
else: else:
if sys.argv[1] == "dumpsample": if sys.argv[1] == "dumpsample":
getcreds() getcreds()

View file

@ -1,6 +1,4 @@
import curses
import requests import requests
import json
app_id = "4a8fca56" app_id = "4a8fca56"
app_key = "85885b5929e5b14402e75fcb4898d7f5" app_key = "85885b5929e5b14402e75fcb4898d7f5"
@ -23,7 +21,7 @@ def defnsyn(w):
baseindex = s1[lexicalCategories.index("verb")]['entries'][0]['senses'][0] baseindex = s1[lexicalCategories.index("verb")]['entries'][0]['senses'][0]
defn = (baseindex['shortDefinitions'][0]) defn = (baseindex['shortDefinitions'][0])
if "synonyms" in baseindex: if "synonyms" in baseindex:
no = 3 if len(baseindex["synonyms"]) > 3 else len(baseindex["synonyms"]) no = 2 if len(baseindex["synonyms"]) > 3 else len(baseindex["synonyms"])
while no: while no:
synonyms.append(baseindex["synonyms"][no]["text"]) synonyms.append(baseindex["synonyms"][no]["text"])
no -= 1 no -= 1

View file

@ -1,4 +1,4 @@
words = open("words.txt").read().split() words = open("wordle\\words.txt").read().split()
guesslist = [] guesslist = []
maxguesses = 6 maxguesses = 6

View file

@ -1,9 +1,12 @@
# A slightly more readable version of wordle-curses # A slightly more readable version of wordle-curses
import curses, random, time import curses, random, time
from dictionary import defnsyn from wordle.dictionary import defnsyn
import maze.menu
import maze.modules.maze as m1
words = open("words.txt", "r").read().split("\n") quitwordle = False
words = open("wordle\\words.txt", "r").read().split("\n")
colorPairBindings = {"c": 2, "w": 3, "n": 7, "u": 6} colorPairBindings = {"c": 2, "w": 3, "n": 7, "u": 6}
completionMessages = [ completionMessages = [
"", "",
@ -80,7 +83,9 @@ def getWord(s, y):
if k == 8: # backspace if k == 8: # backspace
word = word[:-1] word = word[:-1]
elif k == 27: # esc elif k == 27: # esc
exit() global quitwordle
quitwordle = True
return "hello"
elif chr(k) == "\n" and len(word) == 5: elif chr(k) == "\n" and len(word) == 5:
return word return word
elif chr(k).isalpha() and len(word) < 5: elif chr(k).isalpha() and len(word) < 5:
@ -90,13 +95,16 @@ def getWord(s, y):
def run(s): def run(s):
s.clear() s.clear()
word = random.choice(words) #chosen word word = random.choice(words) #chosen word
print("Chosen word: ", word) with open("log.txt", "a") as f:
f.write("Chosen word: "+ word+"\n")
defn, synonyms = defnsyn(word) defn, synonyms = defnsyn(word)
guesses = [] # stores each guess and its result guesses = [] # stores each guess and its result
alphabet = ["u"] * 26 # current status of each letter whether used or not alphabet = ["u"] * 26 # current status of each letter whether used or not
# c = correct positon, w = correct letter but not position, n = wrong letter, u = not used # c = correct positon, w = correct letter but not position, n = wrong letter, u = not used
# "ccccc" means all letters are in correct spot # "ccccc" means all letters are in correct spot
while not (len(guesses)) or (guesses[-1][1] != "ccccc" and len(guesses) < 6): while not (len(guesses)) or (guesses[-1][1] != "ccccc" and len(guesses) < 6):
if quitwordle:
return
render(s, guesses, alphabet) # Update current state of board from start render(s, guesses, alphabet) # Update current state of board from start
guess = getWord(s, len(guesses) * 2 + 7).lower() guess = getWord(s, len(guesses) * 2 + 7).lower()
if not (guess in words): # Check if given word is valid if not (guess in words): # Check if given word is valid
@ -124,11 +132,28 @@ def run(s):
s.addstr(len(guesses) * 2 + 9, 8, defn) s.addstr(len(guesses) * 2 + 9, 8, defn)
s.addstr(len(guesses) * 2 + 10, 0, "Some synonyms: ", curses.color_pair(2)) s.addstr(len(guesses) * 2 + 10, 0, "Some synonyms: ", curses.color_pair(2))
s.addstr(len(guesses) * 2 + 10, 16, synonyms) s.addstr(len(guesses) * 2 + 10, 16, synonyms)
s.addstr(len(guesses) * 2 + 11, 0, "[esc] to quit, [enter] to play again", curses.color_pair(3)) if len(guesses) == 6 and guesses[-1][1] != "ccccc":
guesses.append("Bruh")
finalscore = allocatescore(guesses)
return finalscore
def allocatescore(guesses):
finalscore = 0
if len(guesses) <= 3:
finalscore = 50
elif len(guesses) == 4:
finalscore = 40
elif len(guesses) == 5:
finalscore = 30
elif len(guesses) == 6:
finalscore = 20
return finalscore
# Main function # Main function
def main(s): def main(s):
# Initialize colors # Initialize colors
global quitwordle
quitwordle = False
for p in [ for p in [
(1, curses.COLOR_RED), (1, curses.COLOR_RED),
(2, curses.COLOR_GREEN), (2, curses.COLOR_GREEN),
@ -138,10 +163,11 @@ def main(s):
]: ]:
curses.init_pair(p[0], p[1], curses.COLOR_BLACK) curses.init_pair(p[0], p[1], curses.COLOR_BLACK)
# Run game # Run game
while True: finalscore = run(s)
run(s) with open("log.txt", "a") as f:
if s.getch() == 27: # esc f.write(str(finalscore)+"\n")
break while s.getch() == -1:
pass
if __name__ == "__main__": m1.play(s, executeguest=True, outerscore=finalscore, outergame="wordle")
curses.wrapper(main) maze.menu.menu(s)
return