1818app .config ['SQLALCHEMY_TRACK_MODIFICATIONS' ] = False
1919app .config ['SECRET_KEY' ] = 'supersecretkey'
2020
21-
2221# Initialize the database object only once
2322migrate = Migrate (app , db )
2423db .init_app (app )
3130def load_user (user_id ):
3231 return User .query .get (int (user_id ))
3332
34-
3533# Home Page (Landing Page)
3634@app .route ('/' )
3735def home ():
3836 return render_template ('index.html' )
3937
40-
4138# Register Page
4239@app .route ('/register' , methods = ['GET' , 'POST' ])
4340def register ():
@@ -57,12 +54,11 @@ def register():
5754 db .session .add (new_user )
5855 db .session .commit ()
5956
60- flash ("Registration successful! Please log in. " , "success" )
57+ flash ("Registration Successful! " , "success" )
6158 return redirect (url_for ('login' ))
6259
6360 return render_template ('register.html' )
6461
65-
6662# Login Page
6763@app .route ('/login' , methods = ['GET' , 'POST' ])
6864def login ():
@@ -75,42 +71,40 @@ def login():
7571 if user and user .check_password (password ):
7672 # Log the user in using Flask-Login
7773 login_user (user ) # This will manage the session automatically
78-
79- flash ("Login successful!" , "success" )
74+ flash (f"Welcome back, { user .username } !" , "success" )
8075 return redirect (url_for ('dashboard' )) # Redirect to the dashboard
8176 else :
8277 flash ("Invalid credentials! Try again." , "danger" )
8378
8479 return render_template ('login.html' )
8580
86-
87-
8881@app .route ('/config-check' )
8982def config_check ():
9083 return f"Testing Mode: { app .config ['TESTING' ]} "
9184
92-
9385@app .route ('/user-check' )
9486def user_check ():
9587 if current_user .is_authenticated :
9688 return f"Logged in as: { current_user .username } "
9789 else :
9890 return "No user is currently logged in."
9991
100-
10192# Dashboard Page
10293@app .route ('/dashboard' )
10394@login_required
10495def dashboard ():
10596 print (f"[DEBUG] Logged in user: { current_user .username } " )
10697 return render_template ('dashboard.html' , username = current_user .username )
10798
108-
109-
11099@app .route ('/guess' , methods = ['POST' ])
111100@login_required
112101def guess ():
113- guess = int (request .form ['guess' ])
102+ try :
103+ guess = int (request .form ['guess' ])
104+ except ValueError :
105+ flash ("Invalid guess! Please enter a valid number." , "danger" )
106+ return redirect (url_for ('play_game' , level = session .get ('level' , 'easy' )))
107+
114108 number_to_guess = session .get ('number_to_guess' )
115109
116110 if guess == number_to_guess :
@@ -122,7 +116,6 @@ def guess():
122116 else :
123117 return jsonify ({'result' : 'Too high!' })
124118
125-
126119# Game Page (Handles Easy, Medium, Hard)
127120@app .route ('/play/<level>' , methods = ['GET' , 'POST' ])
128121@login_required # This ensures the user is logged in
@@ -141,6 +134,7 @@ def play_game(level):
141134 session ['random_number' ] = random .randint (1 , levels [level ])
142135 session ['attempts' ] = 5 # Total number of attempts
143136 session ['game_status' ] = None # Track the game status (win/loss)
137+ session ['level' ] = level # Store the current level
144138
145139 # Game variables
146140 correct_number = session ['random_number' ]
@@ -194,19 +188,16 @@ def play_game(level):
194188 correct_number = correct_number ,
195189 game_status = game_status )
196190
197-
198191# Leaderboard
199192@app .route ('/leaderboard' )
200193def leaderboard ():
201-
202194 leaderboard_data = User .query .order_by (User .score .desc ()).all ()
203195 leaderboard = [{"username" : user .username , "score" : user .score } for user in leaderboard_data ]
204196 return render_template ('leaderboard.html' , leaderboard = leaderboard )
205- #return render_template('leaderboard.html', leaderboard=leaderboard)
206197
207198@app .route ('/reset' )
208199def reset_game ():
209- session .pop ('number ' , None )
200+ session .pop ('random_number ' , None )
210201 session .pop ('attempts' , None )
211202 level = session .get ('level' , 'easy' ) # fallback level
212203 return redirect (url_for ('play_game' , level = level ))
@@ -219,7 +210,6 @@ def logout():
219210 flash ("You have been logged out successfully." , "info" )
220211 return redirect (url_for ('home' ))
221212
222-
223213# Run the application
224214if __name__ == "__main__" :
225215 with app .app_context ():
0 commit comments