Introduced logout, fixed a problem in gen logic + blacked

This commit is contained in:
adithyagenie 2022-11-04 16:51:32 +05:30
parent 1022ba6f23
commit e29d3dda65
5 changed files with 95 additions and 35 deletions

View file

@ -36,14 +36,14 @@ def post(
def databaseinit(): # Creates database if it doesn't exist
try:
tempsql = mysql.connector.connect(host="localhost", user="root", passwd="root")
tempsql = mysql.connector.connect(host="localhost", user="root", passwd="")
tempcon = tempsql.cursor()
tempcon.execute("CREATE DATABASE IF NOT EXISTS labyrinth")
tempsql.commit()
global sql, con
sql = mysql.connector.connect(
host="localhost", user="root", passwd="root", database="labyrinth"
host="localhost", user="root", passwd="", database="labyrinth"
)
con = sql.cursor()
return True
@ -94,8 +94,12 @@ def screenhandler(screen): # MAIN MENU
screen.addstr(h // 2 - 1, w // 2 - 12, "3. Modify account details")
screen.addstr(h // 2 - 0, w // 2 - 12, "4. View account details")
screen.addstr(h // 2 + 1, w // 2 - 8, "5. Delete Account")
if not loggedin:
screen.addstr(h // 2 + 2, w // 2 - 9, "6. Forgot Password?")
screen.addstr(h // 2 + 3, w // 2 - 3, "esc. Quit")
else:
screen.addstr(h // 2 + 2, w // 2 - 3, "6. Logout")
screen.addstr(h // 2 + 3, w // 2 - 3, "esc. Quit")
screen.refresh()
while True:
key = screen.getch()
@ -110,7 +114,10 @@ def screenhandler(screen): # MAIN MENU
elif key == ord("5"):
Delete(screen)
elif key == ord("6"):
if not loggedin:
forgotpassword(screen)
elif loggedin:
logout(screen)
elif key == 27:
maze.modules.maze.menu(screen)
break
@ -182,7 +189,7 @@ def login(screen, calledby=False): # Function to log in
quitting = False
screen.clear()
screen.refresh()
screenhandler(screen)
return
if inputU not in usernamelist:
screen.addstr(
y // 2, 0, "Username does not exist. Do you want to create one? (y/n)"
@ -693,6 +700,23 @@ def forgotpassword(screen):
return
def logout(screen):
y, x = screen.getmaxyx()
screen.clear()
screen.refresh()
screen.addstr(1, x // 2 - 2, "LOGOUT")
screen.addstr(y // 2, 5, "Logging out of your account...")
global loggedin, U, gamerid
loggedin = False
U = gamerid = None
screen.refresh()
sleep(5)
screen.clear()
screen.refresh()
screenhandler(screen)
return
def leaderboard(screen):
y, x = screen.getmaxyx()
screen.clear()

View file

@ -1,21 +1,44 @@
import maze.modules.maze
def about(screen):
y, x = screen.getmaxyx()
screen.clear()
screen.refresh()
screen.addstr(1, x//2 - 2, "ABOUT US")
screen.addstr(3, 5, "This game which you have played was developed as a Computer Science Project by")
screen.addstr(1, x // 2 - 2, "ABOUT US")
screen.addstr(
3,
5,
"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(6, 5, "V. Kirthivaasan - XII - C - Roll no: ")
screen.addstr(7, 5, "Manwanthakrishnan - XII - C - Roll no: 21")
screen.addstr(9, 5, "This game aims at generating a maze which always has a path towards the right bottom corner")
screen.addstr(10, 5, "by using a famous generation algorithm named Depth First Search (DFS).")
screen.addstr(11, 5, "This game makes use of the 'curses' module which runs on any operating system")
screen.addstr(12, 5, "in the native terminal without use of any other external modules.")
screen.addstr(13, 5, "It makes use of SQL tables to store login details and maintain a leaderboard.")
screen.addstr(
9,
5,
"This game aims at generating a maze which always has a path towards the right bottom corner",
)
screen.addstr(
10, 5, "by using a famous generation algorithm named Depth First Search (DFS)."
)
screen.addstr(
11,
5,
"This game makes use of the 'curses' module which runs on any operating system",
)
screen.addstr(
12, 5, "in the native terminal without use of any other external modules."
)
screen.addstr(
13,
5,
"It makes use of SQL tables to store login details and maintain a leaderboard.",
)
screen.addstr(15, 5, "This project has been an absolute blast to make.")
screen.addstr(16, 5, "We thank you for playing this! Hope you liked it as much as we did!")
screen.addstr(
16, 5, "We thank you for playing this! Hope you liked it as much as we did!"
)
screen.addstr(19, 5, "Signing off,")
screen.addstr(20, 5, "The Labyrinth")
screen.addstr(y - 2, x - 32, "Press Enter to exit this screen.")

View file

@ -7,12 +7,14 @@ from itertools import tee
import maze.modules.PlayerBase_func as database
from .about import about
import maze.modules.maze_saveandload as sl
import sys
WON = 0
PAUSED = False
CONNECTED = {"N": 1, "S": 2, "E": 4, "W": 8}
DIRECTIONS = {"N": (-1, 0), "S": (1, 0), "E": (0, 1), "W": (0, -1)}
ANTIPODES = {"N": "S", "S": "N", "W": "E", "E": "W"}
WALL = {
12: "",
3: "",
@ -31,15 +33,16 @@ WALL = {
1: "",
2: "",
}
VISITED = 16
class Maze:
def __init__(self, height, width, start=(0, 0)):
self.height = height
self.width = width - 12
self.width = width - 11
self.stack = []
self.cells = {(y, x): 0 for y in range(height) for x in range(width)}
self.cells = {(y, x): 0 for y in range(self.height) for x in range(self.width)}
self.build(start)
def eligible_neighbours(self, y, x):
@ -233,7 +236,8 @@ def pathfinding_demo(maze, screen, start_ts):
solution, old_solution = tee(path(maze, start[0], finish[0]))
draw_path(solution, screen) """
maxy, maxx = screen.getmaxyx()
current_coords = [maxy - 5, maxx - 35]
current_coords = [maxy - 5, maxx - 27]
# current_coords = [1, 1]
screen.addstr(current_coords[0], current_coords[1], "", curses.color_pair(2))
WALL = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
pause_elapsed = 0
@ -251,7 +255,7 @@ def pathfinding_demo(maze, screen, start_ts):
PAUSED = False
break
pause_elapsed = int(end_paused_ts - start_paused_ts)
actual_elapsed = str(int(time.time()-start_ts) - pause_elapsed)
actual_elapsed = str(int(time.time() - start_ts) - pause_elapsed)
screen.addstr(5, maxx - 17, actual_elapsed + " sec")
screen.refresh()
key = screen.getch()
@ -263,7 +267,7 @@ def pathfinding_demo(maze, screen, start_ts):
continue
elif key == ord("m"):
sl.save(screen, maze, current_coords)
elif current_coords[0] == maxy - 3 and current_coords[1] == maxx - 27:
elif current_coords[0] == maxy - 4 and current_coords[1] == maxx - 24:
screen.clear()
screen.refresh()
screen.addstr(
@ -414,7 +418,7 @@ def menu(screen):
elif key == 27:
screen.clear()
screen.refresh()
break
sys.exit()
elif key == ord("a"):
database.screenhandler(screen)
elif key == ord("l"):
@ -436,7 +440,8 @@ def menu(screen):
screen.addstr(20, 0, " " * 23)
break
def play(screen, loadedmaze = None):
def play(screen, loadedmaze=None):
y, x = screen.getmaxyx()
height, width = int((y - 2) / 2), int((x - 2) / 2)
screen.clear()
@ -446,16 +451,17 @@ def play(screen, loadedmaze = None):
maze = loadedmaze
screen.addstr(0, 0, str(maze))
screen.refresh()
screen.addstr(0, x - 23, "LABYRINTH")
screen.addstr(5, x - 23, "Time:")
screen.addstr(8, x - 23, "esc - Quit")
screen.addstr(9, x - 23, "Up - Move up")
screen.addstr(10, x - 23, "Down - Move down")
screen.addstr(11, x - 23, "Left - Move left")
screen.addstr(12, x - 23, "Right - Move right")
screen.addstr(13, x - 23, "p - Pause")
screen.addstr(14, x - 23, "r - Resume")
screen.addstr(15, x - 23, "m - save")
sx = x - 22 # x - 23
screen.addstr(0, sx, "LABYRINTH")
screen.addstr(5, sx, "Time:")
screen.addstr(8, sx, "esc - Quit")
screen.addstr(9, sx, "Up - Move up")
screen.addstr(10, sx, "Down - Move down")
screen.addstr(11, sx, "Left - Move left")
screen.addstr(12, sx, "Right - Move right")
screen.addstr(13, sx, "p - Pause")
screen.addstr(14, sx, "r - Resume")
screen.addstr(15, sx, "m - save")
screen.refresh()
start_ts = time.time()
pathfinding_demo(maze, screen, start_ts)

View file

@ -4,6 +4,7 @@ from .PlayerBase_func import Input, screenwipe
import maze.modules.maze as m
from time import sleep
def save(screen, maze, coords):
y, x = screen.getmaxyx()
if "saves" not in os.listdir():
@ -12,7 +13,7 @@ def save(screen, maze, coords):
screen.addstr(17, x - 17, "Enter filename: ")
name = Input(18, x - 17, screen)
if names:
num = int(((names[-1].replace('.maze', '')).split('_'))[1]) + 1
num = int(((names[-1].replace(".maze", "")).split("_"))[1]) + 1
if not name:
name = "default"
filename = f"maze_{str(num)}_{name}.maze"
@ -30,10 +31,12 @@ def save(screen, maze, coords):
screen.addstr(19, x - 17, " " * 12)
screen.refresh()
def check():
if len(os.listdir("saves")):
return True
def load(screen):
y, x = screen.getmaxyx()
screen.clear()
@ -42,7 +45,11 @@ def load(screen):
mazes = os.listdir("saves")
sy = 4
for i in range(len(mazes)):
screen.addstr(sy, 10, f"{str(i + 1)}. Maze {((mazes[i].replace('.maze', '')).split('_'))[1]} - {((mazes[i].replace('.maze', '')).split('_'))[2]}")
screen.addstr(
sy,
10,
f"{str(i + 1)}. Maze {((mazes[i].replace('.maze', '')).split('_'))[1]} - {((mazes[i].replace('.maze', '')).split('_'))[2]}",
)
sy += 1
while True:
screen.addstr(y // 2 + 5, 0, "Enter preferred maze number: ")
@ -66,7 +73,7 @@ def load(screen):
screen.refresh()
break
continue
f = open("saves//"+mazes[num], "rb")
f = open("saves//" + mazes[num], "rb")
maze = pickle.load(f)
coords = pickle.load(f)
f.close()