Extremely less key jank, bordered all windows, tidying up, dynamic win detection logic
This commit is contained in:
parent
4ba7cab763
commit
e05ea8cdaa
4 changed files with 117 additions and 75 deletions
|
@ -39,14 +39,14 @@ def post(
|
||||||
|
|
||||||
def databaseinit(): # Creates database if it doesn't exist
|
def databaseinit(): # Creates database if it doesn't exist
|
||||||
try:
|
try:
|
||||||
tempsql = mysql.connector.connect(host="localhost", user="root", passwd="")
|
tempsql = mysql.connector.connect(host="localhost", user="root", passwd="root")
|
||||||
tempcon = tempsql.cursor()
|
tempcon = tempsql.cursor()
|
||||||
tempcon.execute("CREATE DATABASE IF NOT EXISTS labyrinth")
|
tempcon.execute("CREATE DATABASE IF NOT EXISTS labyrinth")
|
||||||
tempsql.commit()
|
tempsql.commit()
|
||||||
|
|
||||||
global sql, con
|
global sql, con
|
||||||
sql = mysql.connector.connect(
|
sql = mysql.connector.connect(
|
||||||
host="localhost", user="root", passwd="", database="labyrinth"
|
host="localhost", user="root", passwd="root", database="labyrinth"
|
||||||
)
|
)
|
||||||
con = sql.cursor()
|
con = sql.cursor()
|
||||||
return True
|
return True
|
||||||
|
@ -103,6 +103,7 @@ def screenhandler(screen): # MAIN MENU
|
||||||
else:
|
else:
|
||||||
screen.addstr(h // 2 + 2, w // 2 - 3, "6. Logout")
|
screen.addstr(h // 2 + 2, w // 2 - 3, "6. Logout")
|
||||||
screen.addstr(h // 2 + 3, w // 2 - 3, "esc. Quit")
|
screen.addstr(h // 2 + 3, w // 2 - 3, "esc. Quit")
|
||||||
|
screen.border()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
|
@ -111,11 +112,11 @@ def screenhandler(screen): # MAIN MENU
|
||||||
elif key == ord("2"):
|
elif key == ord("2"):
|
||||||
new_add(screen)
|
new_add(screen)
|
||||||
elif key == ord("3"):
|
elif key == ord("3"):
|
||||||
Mod_account(screen)
|
modify_account(screen)
|
||||||
elif key == ord("4"):
|
elif key == ord("4"):
|
||||||
view_account(screen)
|
view_account(screen)
|
||||||
elif key == ord("5"):
|
elif key == ord("5"):
|
||||||
Delete(screen)
|
delete(screen)
|
||||||
elif key == ord("6"):
|
elif key == ord("6"):
|
||||||
if not loggedin:
|
if not loggedin:
|
||||||
forgotpassword(screen)
|
forgotpassword(screen)
|
||||||
|
@ -135,10 +136,11 @@ def screenwipe(screen, sx, sy): # Failed password and stuff reset from screen
|
||||||
for j in range(0, x - 1):
|
for j in range(0, x - 1):
|
||||||
if screen.instr(i, j, 1) != " ":
|
if screen.instr(i, j, 1) != " ":
|
||||||
screen.addstr(i, j, " ")
|
screen.addstr(i, j, " ")
|
||||||
|
screen.border()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
|
||||||
|
|
||||||
def Input(
|
def input(
|
||||||
y, x, screen, ispassword=False
|
y, x, screen, ispassword=False
|
||||||
): # Function to get type-able inputs, with delete, esc and other keys
|
): # Function to get type-able inputs, with delete, esc and other keys
|
||||||
inputted = ""
|
inputted = ""
|
||||||
|
@ -180,22 +182,24 @@ def login(screen, calledby=False): # Function to log in
|
||||||
global quitting, U, gamerid, loggedin
|
global quitting, U, gamerid, loggedin
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
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")
|
||||||
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)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.addstr("Going back to account settings...")
|
screen.addstr("Going back to account settings...")
|
||||||
sleep(3)
|
sleep(3)
|
||||||
quitting = False
|
quitting = False
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
screenhandler(screen)
|
||||||
return
|
return
|
||||||
if inputU not in usernamelist:
|
if inputU not in usernamelist:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2, 0, "Username does not exist. Do you want to create one? (y/n)"
|
y // 2, 5, "Username does not exist. Do you want to create one? (y/n)"
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
|
@ -220,9 +224,9 @@ def login(screen, calledby=False): # Function to log in
|
||||||
actualpass = (b64decode(res[0][0].encode("ascii"))).decode("ascii")
|
actualpass = (b64decode(res[0][0].encode("ascii"))).decode("ascii")
|
||||||
screen.addstr(y // 2, x // 2 - 7, "Password: ")
|
screen.addstr(y // 2, x // 2 - 7, "Password: ")
|
||||||
while True:
|
while True:
|
||||||
inputP = Input(y // 2, x // 2 + 3, screen, ispassword=True)
|
inputP = input(y // 2, x // 2 + 3, screen, ispassword=True)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.addstr("Going back to account settings...")
|
screen.addstr(y // 2 + 3, 5, "Going back to account settings...")
|
||||||
sleep(3)
|
sleep(3)
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -266,14 +270,14 @@ def user(
|
||||||
userlist = list_getter("username")
|
userlist = list_getter("username")
|
||||||
screen.addstr(sy, sx, optionaltxt)
|
screen.addstr(sy, sx, optionaltxt)
|
||||||
while True:
|
while True:
|
||||||
Name = Input(sy, sx + len(optionaltxt), screen)
|
Name = input(sy, sx + len(optionaltxt), screen)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
return
|
return
|
||||||
if Name in userlist:
|
if Name in userlist:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
sy + 1, 0, "Username already exists, please choose a different one"
|
sy + 1, 5, "Username already exists, please choose a different one"
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
|
@ -297,7 +301,7 @@ def password(screen, sy, sx, optionaltxt="Enter Password: "):
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
while True:
|
while True:
|
||||||
screen.addstr(sy, sx, optionaltxt)
|
screen.addstr(sy, sx, optionaltxt)
|
||||||
Password = Input(sy, sx + len(optionaltxt), screen, ispassword=True)
|
Password = input(sy, sx + len(optionaltxt), screen, ispassword=True)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -327,7 +331,7 @@ def password(screen, sy, sx, optionaltxt="Enter Password: "):
|
||||||
return encoded_pass
|
return encoded_pass
|
||||||
|
|
||||||
|
|
||||||
def Email(screen, sy, sx, optionaltxt="Enter Email: "): # Function to accept email id
|
def email(screen, sy, sx, optionaltxt="Enter Email: "): # Function to accept email id
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -338,7 +342,7 @@ def Email(screen, sy, sx, optionaltxt="Enter Email: "): # Function to accept em
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
while True:
|
while True:
|
||||||
screen.addstr(sy, sx, optionaltxt)
|
screen.addstr(sy, sx, optionaltxt)
|
||||||
email = Input(sy, sx + len(optionaltxt), screen)
|
email = input(sy, sx + len(optionaltxt), screen)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -372,6 +376,7 @@ def Email(screen, sy, sx, optionaltxt="Enter Email: "): # Function to accept em
|
||||||
def new_add(screen, calledby=False):
|
def new_add(screen, calledby=False):
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
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")
|
||||||
|
@ -379,7 +384,7 @@ def new_add(screen, calledby=False):
|
||||||
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
|
||||||
add_password = password(screen, y // 2 - 2, x // 2 - 10)
|
add_password = password(screen, y // 2 - 2, x // 2 - 10)
|
||||||
add_email = Email(screen, y // 2, x // 2 - 10)
|
add_email = email(screen, y // 2, x // 2 - 10)
|
||||||
add_gamerid = "".join(
|
add_gamerid = "".join(
|
||||||
random.choices(string.ascii_uppercase + string.digits, k=4)
|
random.choices(string.ascii_uppercase + string.digits, k=4)
|
||||||
) # Generates random 4 character alphanumeric
|
) # Generates random 4 character alphanumeric
|
||||||
|
@ -387,7 +392,7 @@ def new_add(screen, calledby=False):
|
||||||
if add_name == None or add_password == None or add_email == None:
|
if add_name == None or add_password == None or add_email == None:
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 + 2, 0, "Cancelling account creation. Returning to account menu..."
|
y // 2 + 2, 5, "Cancelling account creation. Returning to account menu..."
|
||||||
)
|
)
|
||||||
sleep(3)
|
sleep(3)
|
||||||
screen.clear()
|
screen.clear()
|
||||||
|
@ -409,31 +414,31 @@ def new_add(screen, calledby=False):
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
if calledby:
|
if calledby:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 + 2, 0, "Account has been created. Returning to login..."
|
y // 2 + 2, 5, "Account has been created. Returning to login..."
|
||||||
)
|
)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
sleep(3)
|
sleep(3)
|
||||||
login(screen, calledby=calledby)
|
login(screen, calledby=calledby)
|
||||||
else:
|
else:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 + 2, 0, "Account has been created. Returning to account menu..."
|
y // 2 + 2, 5, "Account has been created. Returning to account menu..."
|
||||||
)
|
)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
sleep(3)
|
sleep(3)
|
||||||
screenhandler(screen)
|
screenhandler(screen)
|
||||||
|
|
||||||
|
|
||||||
def Mod_account(screen):
|
def modify_account(screen):
|
||||||
Userlist = list_getter("username")
|
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
screen.border()
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
global loggedin, quitting
|
global loggedin, quitting, U
|
||||||
screen.addstr(1, x // 2 - 8, "MODIFY ACCOUNT SETTINGS")
|
screen.addstr(1, x // 2 - 8, "MODIFY ACCOUNT SETTINGS")
|
||||||
if loggedin == False:
|
if loggedin == False:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2,
|
y // 2,
|
||||||
0,
|
5,
|
||||||
"Please log in to you account... Redirecting you to the login menu",
|
"Please log in to you account... Redirecting you to the login menu",
|
||||||
)
|
)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -464,11 +469,13 @@ def Mod_account(screen):
|
||||||
SET username = '{newuser}'\
|
SET username = '{newuser}'\
|
||||||
WHERE gamerid = '{gamerid}' "
|
WHERE gamerid = '{gamerid}' "
|
||||||
)
|
)
|
||||||
|
U = newuser
|
||||||
|
break
|
||||||
|
|
||||||
elif key == ord("2"):
|
elif key == ord("2"):
|
||||||
screenwipe(screen, 0, 2)
|
screenwipe(screen, 0, 2)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
newemail = Email(
|
newemail = email(
|
||||||
screen, y // 2, x // 2 - 10, optionaltxt="Enter new email: "
|
screen, y // 2, x // 2 - 10, optionaltxt="Enter new email: "
|
||||||
)
|
)
|
||||||
post(
|
post(
|
||||||
|
@ -476,6 +483,7 @@ def Mod_account(screen):
|
||||||
SET email = '{newemail}'\
|
SET email = '{newemail}'\
|
||||||
WHERE gamerid = '{gamerid}' "
|
WHERE gamerid = '{gamerid}' "
|
||||||
)
|
)
|
||||||
|
break
|
||||||
|
|
||||||
screenwipe(screen, 0, 2)
|
screenwipe(screen, 0, 2)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -485,6 +493,7 @@ def Mod_account(screen):
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
sleep(3)
|
sleep(3)
|
||||||
screenhandler(screen)
|
screenhandler(screen)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
def view_account(screen):
|
def view_account(screen):
|
||||||
|
@ -492,11 +501,12 @@ def view_account(screen):
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
screen.border()
|
||||||
screen.addstr(1, x // 2 - 6, "VIEW ACCOUNT DETAILS")
|
screen.addstr(1, x // 2 - 6, "VIEW ACCOUNT DETAILS")
|
||||||
if not loggedin:
|
if not loggedin:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2,
|
y // 2,
|
||||||
0,
|
5,
|
||||||
"Please log in to you account... Redirecting you to the login menu",
|
"Please log in to you account... Redirecting you to the login menu",
|
||||||
)
|
)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
@ -518,7 +528,7 @@ def view_account(screen):
|
||||||
screen.addstr(y // 2 + 4, x // 2 - 5, "Last Played: " + str(score_details[0][2]))
|
screen.addstr(y // 2 + 4, x // 2 - 5, "Last Played: " + str(score_details[0][2]))
|
||||||
screen.addstr(y // 2 + 6, x // 2 - 5, "Times Played: " + str(score_details[0][3]))
|
screen.addstr(y // 2 + 6, x // 2 - 5, "Times Played: " + str(score_details[0][3]))
|
||||||
|
|
||||||
screen.addstr(y - 1, 0, "Press esc to return to main menu.")
|
screen.addstr(y - 1, 5, "Press esc to return to main menu.")
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
if key == 27:
|
if key == 27:
|
||||||
|
@ -528,27 +538,45 @@ def view_account(screen):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def Delete(screen):
|
def delete(screen):
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
global loggedin, gamerid, U
|
global loggedin, gamerid, U
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
screen.border()
|
||||||
if loggedin == False:
|
if loggedin == False:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2,
|
y // 2,
|
||||||
0,
|
5,
|
||||||
"Please log in to you account... Redirecting you to the login menu",
|
"Please log in to you account... Redirecting you to the login menu",
|
||||||
)
|
)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
sleep(3)
|
sleep(3)
|
||||||
login(screen)
|
login(screen)
|
||||||
return
|
return
|
||||||
|
screen.addstr(y // 2 - 3, 10, "Do you really want to delete your account?")
|
||||||
|
screen.addstr(y // 2 - 2, 10, "Press y to delete or n to return to account menu.")
|
||||||
|
while True:
|
||||||
|
key = screen.getch()
|
||||||
|
if key == ord("y"):
|
||||||
|
break
|
||||||
|
elif key == ord("n"):
|
||||||
|
screen.addstr(y // 2, 5, "Returning to the account menu")
|
||||||
|
sleep(3)
|
||||||
|
screenhandler(screen)
|
||||||
|
return
|
||||||
post(
|
post(
|
||||||
f"DELETE FROM player_details\
|
f"DELETE FROM player_details\
|
||||||
WHERE gamerid = '{gamerid}'"
|
WHERE gamerid = '{gamerid}'"
|
||||||
)
|
)
|
||||||
|
curses.ungetch(" ")
|
||||||
|
screen.addstr(y // 2, 10, "Account has been deleted. Returning to account menu...")
|
||||||
|
screen.refresh()
|
||||||
loggedin = False
|
loggedin = False
|
||||||
gamerid = U = None
|
gamerid = U = None
|
||||||
|
sleep(3)
|
||||||
|
screenhandler(screen)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
def Update_score(Score):
|
def Update_score(Score):
|
||||||
|
@ -590,7 +618,7 @@ def forgotpassword(screen):
|
||||||
tries = 0
|
tries = 0
|
||||||
screen.addstr(y // 2 - 2, x // 2 - 7, "Username: ")
|
screen.addstr(y // 2 - 2, x // 2 - 7, "Username: ")
|
||||||
while True:
|
while True:
|
||||||
input_u = Input(y // 2 - 2, x // 2 + 3, screen)
|
input_u = input(y // 2 - 2, x // 2 + 3, screen)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.addstr("Going back to account settings...")
|
screen.addstr("Going back to account settings...")
|
||||||
sleep(3)
|
sleep(3)
|
||||||
|
@ -603,7 +631,7 @@ def forgotpassword(screen):
|
||||||
if input_u not in usernamelist:
|
if input_u not in usernamelist:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 - 1,
|
y // 2 - 1,
|
||||||
0,
|
5,
|
||||||
"Username does not exist. Press Enter/Space to continue...",
|
"Username does not exist. Press Enter/Space to continue...",
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
|
@ -621,10 +649,10 @@ def forgotpassword(screen):
|
||||||
)
|
)
|
||||||
email = res[0][0]
|
email = res[0][0]
|
||||||
otp = sender(input_u, email)
|
otp = sender(input_u, email)
|
||||||
screen.addstr(y // 2 + 1, 0, "Enter OTP recieved in registered mail address:")
|
screen.addstr(y // 2 + 1, 5, "Enter OTP recieved in registered mail address:")
|
||||||
while True:
|
while True:
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
enter_otp = Input(y // 2 + 1, 47, screen)
|
enter_otp = input(y // 2 + 1, 47, screen)
|
||||||
if quitting:
|
if quitting:
|
||||||
screen.addstr("Going back to account settings...")
|
screen.addstr("Going back to account settings...")
|
||||||
sleep(3)
|
sleep(3)
|
||||||
|
@ -649,7 +677,7 @@ def forgotpassword(screen):
|
||||||
else:
|
else:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 + 3,
|
y // 2 + 3,
|
||||||
0,
|
5,
|
||||||
"Passwords do not match. Press Enter to try again.",
|
"Passwords do not match. Press Enter to try again.",
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
|
@ -661,7 +689,7 @@ def forgotpassword(screen):
|
||||||
if tries < 10:
|
if tries < 10:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 + 3,
|
y // 2 + 3,
|
||||||
0,
|
5,
|
||||||
"Entered OTP is wrong. Press esc to exit or Enter to try again.",
|
"Entered OTP is wrong. Press esc to exit or Enter to try again.",
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
|
@ -681,7 +709,7 @@ def forgotpassword(screen):
|
||||||
else:
|
else:
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
y // 2 + 3,
|
y // 2 + 3,
|
||||||
0,
|
5,
|
||||||
"Entered OTP is wrong. Maximum tries exceeded. Returning to account menu...",
|
"Entered OTP is wrong. Maximum tries exceeded. Returning to account menu...",
|
||||||
)
|
)
|
||||||
sleep(5)
|
sleep(5)
|
||||||
|
@ -723,7 +751,8 @@ def logout(screen):
|
||||||
def leaderboard(screen):
|
def leaderboard(screen):
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.addstr(1, y // 2 - 5, "Leaderboard")
|
screen.border()
|
||||||
|
screen.addstr(1, x // 2 - 5, "LEADERBOARD")
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
res = get(
|
res = get(
|
||||||
"SELECT p.gamerid,\
|
"SELECT p.gamerid,\
|
||||||
|
@ -751,7 +780,7 @@ def leaderboard(screen):
|
||||||
screen.addstr(sy, 50, str(i[2]))
|
screen.addstr(sy, 50, str(i[2]))
|
||||||
screen.addstr(sy, 70, str(i[3]))
|
screen.addstr(sy, 70, str(i[3]))
|
||||||
sy += 1
|
sy += 1
|
||||||
screen.addstr(y - 1, 0, "Press esc to return to main menu.")
|
screen.addstr(y - 1, x - 35, "Press esc to return to main menu.")
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
if key == 27:
|
if key == 27:
|
||||||
|
|
|
@ -5,6 +5,7 @@ def about(screen):
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
screen.border()
|
||||||
screen.addstr(1, x // 2 - 2, "ABOUT US")
|
screen.addstr(1, x // 2 - 2, "ABOUT US")
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
3,
|
3,
|
||||||
|
@ -12,7 +13,7 @@ def about(screen):
|
||||||
"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 - XII - C - Roll no: 3")
|
screen.addstr(5, 5, "B. Adithya - XII - C - Roll no: 3")
|
||||||
screen.addstr(6, 5, "V. Kirthivaasan - XII - C - Roll no: ")
|
screen.addstr(6, 5, "V. Kirthivaasan - XII - C - Roll no: 17")
|
||||||
screen.addstr(7, 5, "Manwanthakrishnan - XII - C - Roll no: 21")
|
screen.addstr(7, 5, "Manwanthakrishnan - XII - C - Roll no: 21")
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
9,
|
9,
|
||||||
|
@ -41,7 +42,7 @@ def about(screen):
|
||||||
)
|
)
|
||||||
screen.addstr(19, 5, "Signing off,")
|
screen.addstr(19, 5, "Signing off,")
|
||||||
screen.addstr(20, 5, "The Labyrinth")
|
screen.addstr(20, 5, "The Labyrinth")
|
||||||
screen.addstr(y - 2, x - 32, "Press Enter to exit this screen.")
|
screen.addstr(y - 2, x - 33, "Press Enter to exit this screen.")
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
|
|
|
@ -135,11 +135,13 @@ class Maze:
|
||||||
buffer[2 * self.height][0] = CONNECTED["N"] | CONNECTED["E"]
|
buffer[2 * self.height][0] = CONNECTED["N"] | CONNECTED["E"]
|
||||||
buffer[2 * self.height][2 * self.width] = CONNECTED["N"] | CONNECTED["W"]
|
buffer[2 * self.height][2 * self.width] = CONNECTED["N"] | CONNECTED["W"]
|
||||||
finalstr = "\n".join(["".join(WALL[cell] for cell in row) for row in buffer])
|
finalstr = "\n".join(["".join(WALL[cell] for cell in row) for row in buffer])
|
||||||
|
broken = list(finalstr)
|
||||||
|
broken[len(broken) - 2 - (2 * self.width + 1)] = " "
|
||||||
|
finalstr = "".join(broken)
|
||||||
return finalstr
|
return finalstr
|
||||||
|
|
||||||
|
|
||||||
def path(maze, start, finish):
|
def path(maze, start, finish): # Not used
|
||||||
heuristic = lambda node: abs(node[0] - finish[0]) + abs(node[1] - finish[1])
|
heuristic = lambda node: abs(node[0] - finish[0]) + abs(node[1] - finish[1])
|
||||||
nodes_to_explore = [start]
|
nodes_to_explore = [start]
|
||||||
explored_nodes = set()
|
explored_nodes = set()
|
||||||
|
@ -181,7 +183,7 @@ def draw_path(path, screen, delay=0.15, head=None, trail=None, skip_first=True):
|
||||||
old_cell = current_cell
|
old_cell = current_cell
|
||||||
for idx, next_cell in enumerate(path):
|
for idx, next_cell in enumerate(path):
|
||||||
first = (not idx) and skip_first
|
first = (not idx) and skip_first
|
||||||
if screen.getch() == ord("q"):
|
if screen.getch() == ord(" "):
|
||||||
break
|
break
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
for last, cell in enumerate(
|
for last, cell in enumerate(
|
||||||
|
@ -217,10 +219,9 @@ def construction_demo(maze, screen):
|
||||||
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
|
||||||
)
|
)
|
||||||
screen.nodelay(False)
|
screen.nodelay(False)
|
||||||
screen.getch()
|
|
||||||
|
|
||||||
|
|
||||||
def pathfinding_demo(maze, screen, start_ts):
|
def pathfinding_demo(maze, screen, start_ts, won_coords):
|
||||||
start = []
|
start = []
|
||||||
finish = []
|
finish = []
|
||||||
solution = None
|
solution = None
|
||||||
|
@ -243,6 +244,7 @@ def pathfinding_demo(maze, screen, start_ts):
|
||||||
screen.addstr(current_coords[0], current_coords[1], "█", curses.color_pair(2))
|
screen.addstr(current_coords[0], current_coords[1], "█", curses.color_pair(2))
|
||||||
WALL = ["═", "║", "╗", "╚", "╝", "╔", "╠", "╣", "╦", "╩", "╬", "═", "═", "║", "║"]
|
WALL = ["═", "║", "╗", "╚", "╝", "╔", "╠", "╣", "╦", "╩", "╬", "═", "═", "║", "║"]
|
||||||
pause_elapsed = 0
|
pause_elapsed = 0
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
global PAUSED
|
global PAUSED
|
||||||
if PAUSED:
|
if PAUSED:
|
||||||
|
@ -269,7 +271,7 @@ def pathfinding_demo(maze, screen, start_ts):
|
||||||
continue
|
continue
|
||||||
elif key == ord("m"):
|
elif key == ord("m"):
|
||||||
sl.save(screen, maze, current_coords)
|
sl.save(screen, maze, current_coords)
|
||||||
elif current_coords[0] == maxy - 4 and current_coords[1] == maxx - 24:
|
elif current_coords[0] == won_coords[0] and current_coords[1] == won_coords[1]:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
|
@ -395,24 +397,23 @@ def pathfinding_demo(maze, screen, start_ts):
|
||||||
def menu(screen):
|
def menu(screen):
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
screen.clear()
|
screen.clear()
|
||||||
text = """
|
|
||||||
|
|
||||||
██ █████ ██████ ██ ██ ██████ ██ ███ ██ ████████ ██ ██
|
|
||||||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ ██
|
|
||||||
██ ███████ ██████ ████ ██████ ██ ██ ██ ██ ██ ███████
|
|
||||||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
|
||||||
███████ ██ ██ ██████ ██ ██ ██ ██ ██ ████ ██ ██ ██
|
|
||||||
|
|
||||||
"""
|
|
||||||
screen.addstr(1, 3, str(text))
|
|
||||||
screen.refresh()
|
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(10, x // 2 - 2, "MENU")
|
||||||
screen.addstr(13, 0, "space - Play")
|
screen.addstr(13, 1, "space - Play")
|
||||||
screen.addstr(14, 0, "f - Load game from file")
|
screen.addstr(14, 1, "f - Load game from file")
|
||||||
screen.addstr(15, 0, "a - Account Settings")
|
screen.addstr(15, 1, "a - Account Settings")
|
||||||
screen.addstr(16, 0, "l - Leaderboard")
|
screen.addstr(16, 1, "l - Leaderboard")
|
||||||
screen.addstr(17, 0, "x - About")
|
screen.addstr(17, 1, "x - About")
|
||||||
screen.addstr(18, 0, "esc - Quit")
|
screen.addstr(18, 1, "esc - Quit")
|
||||||
|
screen.border()
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
key = screen.getch()
|
||||||
if key == ord(" "):
|
if key == ord(" "):
|
||||||
|
@ -420,7 +421,13 @@ def menu(screen):
|
||||||
elif key == 27:
|
elif key == 27:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
sys.exit()
|
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"):
|
elif key == ord("a"):
|
||||||
database.screenhandler(screen)
|
database.screenhandler(screen)
|
||||||
elif key == ord("l"):
|
elif key == ord("l"):
|
||||||
|
@ -435,11 +442,13 @@ def menu(screen):
|
||||||
play(screen, maze[0])
|
play(screen, maze[0])
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
screen.addstr(20, 0, "No saved mazes present.")
|
screen.addstr(
|
||||||
|
20, 5, "No saved mazes present. Press enter to continue..."
|
||||||
|
)
|
||||||
while True:
|
while True:
|
||||||
key2 = screen.getch()
|
key2 = screen.getch()
|
||||||
if key2 == 10:
|
if key2 == 10:
|
||||||
screen.addstr(20, 0, " " * 23)
|
screen.addstr(20, 5, " " * (x - 10))
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
@ -447,11 +456,16 @@ def play(screen, loadedmaze=None):
|
||||||
y, x = screen.getmaxyx()
|
y, x = screen.getmaxyx()
|
||||||
height, width = int((y - 2) / 2), int((x - 2) / 2)
|
height, width = int((y - 2) / 2), int((x - 2) / 2)
|
||||||
screen.clear()
|
screen.clear()
|
||||||
|
screen.refresh()
|
||||||
if not loadedmaze:
|
if not loadedmaze:
|
||||||
maze = Maze(height, width)
|
maze = Maze(height, width)
|
||||||
else:
|
else:
|
||||||
maze = loadedmaze
|
maze = loadedmaze
|
||||||
screen.addstr(0, 0, str(maze))
|
screen.addstr(0, 0, str(maze))
|
||||||
|
won_coords = screen.getyx()
|
||||||
|
won_coords = list(won_coords)
|
||||||
|
won_coords[0] = won_coords[0] - 1
|
||||||
|
won_coords = tuple(won_coords)
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
sx = x - 22 # x - 23
|
sx = x - 22 # x - 23
|
||||||
screen.addstr(0, sx, "LABYRINTH")
|
screen.addstr(0, sx, "LABYRINTH")
|
||||||
|
@ -466,17 +480,14 @@ def play(screen, loadedmaze=None):
|
||||||
screen.addstr(15, sx, "m - save")
|
screen.addstr(15, sx, "m - save")
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
start_ts = time.time()
|
start_ts = time.time()
|
||||||
pathfinding_demo(maze, screen, start_ts)
|
pathfinding_demo(maze, screen, start_ts, won_coords)
|
||||||
end_ts = time.time()
|
end_ts = time.time()
|
||||||
came_out = 1
|
came_out = 1
|
||||||
while True:
|
while True:
|
||||||
key = screen.getch()
|
|
||||||
if key == ord("q"):
|
|
||||||
break
|
|
||||||
|
|
||||||
if came_out != 0:
|
if came_out != 0:
|
||||||
screen.clear()
|
screen.clear()
|
||||||
screen.refresh()
|
screen.refresh()
|
||||||
|
screen.erase()
|
||||||
global WON
|
global WON
|
||||||
if WON != 0:
|
if WON != 0:
|
||||||
tt = (start_ts - end_ts) / 300
|
tt = (start_ts - end_ts) / 300
|
||||||
|
@ -486,7 +497,7 @@ def play(screen, loadedmaze=None):
|
||||||
else:
|
else:
|
||||||
score = 0
|
score = 0
|
||||||
screen.addstr(
|
screen.addstr(
|
||||||
height - 3, width - 4, str("Your score is: " + str(int(score)))
|
y // 2 - 5, x // 2 - 8, str("Your score is: " + str(int(score)))
|
||||||
)
|
)
|
||||||
res = database.Update_score(int(score))
|
res = database.Update_score(int(score))
|
||||||
if res == "guest":
|
if res == "guest":
|
||||||
|
@ -505,11 +516,11 @@ def play(screen, loadedmaze=None):
|
||||||
break
|
break
|
||||||
elif key == ord("n"):
|
elif key == ord("n"):
|
||||||
break
|
break
|
||||||
screen.refresh()
|
|
||||||
time.sleep(3)
|
|
||||||
screen.clear()
|
screen.clear()
|
||||||
menu(screen)
|
screen.refresh()
|
||||||
came_out = 0
|
came_out = 0
|
||||||
|
menu(screen)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
def main(screen):
|
def main(screen):
|
||||||
|
@ -520,6 +531,7 @@ def main(screen):
|
||||||
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_RED, curses.COLOR_BLACK)
|
||||||
screen.clear()
|
screen.clear()
|
||||||
|
screen.refresh()
|
||||||
height, width = screen.getmaxyx()
|
height, width = screen.getmaxyx()
|
||||||
height, width = int((height - 2) / 2), int((width - 2) / 2)
|
height, width = int((height - 2) / 2), int((width - 2) / 2)
|
||||||
database.databaseinit()
|
database.databaseinit()
|
||||||
|
|
|
@ -4,7 +4,7 @@ from time import sleep
|
||||||
|
|
||||||
import maze.modules.maze as m
|
import maze.modules.maze as m
|
||||||
|
|
||||||
from .PlayerBase_func import Input, screenwipe
|
from .PlayerBase_func import input, screenwipe
|
||||||
|
|
||||||
|
|
||||||
def save(screen, maze, coords):
|
def save(screen, maze, coords):
|
||||||
|
@ -13,7 +13,7 @@ def save(screen, maze, coords):
|
||||||
os.mkdir("saves")
|
os.mkdir("saves")
|
||||||
names = os.listdir("saves")
|
names = os.listdir("saves")
|
||||||
screen.addstr(17, x - 17, "Enter filename: ")
|
screen.addstr(17, x - 17, "Enter filename: ")
|
||||||
name = Input(18, x - 17, screen)
|
name = input(18, x - 17, screen)
|
||||||
if names:
|
if names:
|
||||||
num = int(((names[-1].replace(".maze", "")).split("_"))[1]) + 1
|
num = int(((names[-1].replace(".maze", "")).split("_"))[1]) + 1
|
||||||
if not name:
|
if not name:
|
||||||
|
@ -55,7 +55,7 @@ def load(screen):
|
||||||
sy += 1
|
sy += 1
|
||||||
while True:
|
while True:
|
||||||
screen.addstr(y // 2 + 5, 0, "Enter preferred maze number: ")
|
screen.addstr(y // 2 + 5, 0, "Enter preferred maze number: ")
|
||||||
num = Input(y // 2 + 5, 30, screen)
|
num = input(y // 2 + 5, 30, 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:
|
||||||
|
|
Loading…
Reference in a new issue