1v1hangman / app.py
Sergidev's picture
Update app.py
94bfcb7 verified
raw
history blame
2.95 kB
import random
import string
from flask import Flask, request, jsonify, render_template
import time
from threading import Timer
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key' # Replace with a real secret key
# In-memory storage for game sessions and player data
sessions = {}
waiting_session = None
def generate_session_id():
return ''.join(random.choices(string.digits, k=4))
def generate_player_id():
return ''.join(random.choices(string.ascii_uppercase + string.digits, k=6))
def create_game_session():
global waiting_session
session_id = generate_session_id()
while session_id in sessions:
session_id = generate_session_id()
sessions[session_id] = {
'players': [],
'words': {},
'current_player': None,
'guesses': set(),
'incorrect_guesses': 0,
'last_activity': time.time()
}
waiting_session = session_id
return session_id
def join_game_session():
global waiting_session
if waiting_session and waiting_session in sessions:
session_id = waiting_session
is_new_session = False
else:
session_id = create_game_session()
is_new_session = True
player_id = generate_player_id()
sessions[session_id]['players'].append(player_id)
sessions[session_id]['last_activity'] = time.time()
if len(sessions[session_id]['players']) == 2:
waiting_session = None
return session_id, player_id, is_new_session
@app.route('/')
def index():
return render_template('index.html')
@app.route('/play', methods=['POST'])
def play():
session_id, player_id, is_new_session = join_game_session()
status = 'waiting' if is_new_session else 'ready'
return jsonify({
'session_id': session_id,
'player_id': player_id,
'status': status
})
@app.route('/check_status/<session_id>', methods=['GET'])
def check_status(session_id):
if session_id in sessions:
status = 'ready' if len(sessions[session_id]['players']) == 2 else 'waiting'
return jsonify({'status': status})
return jsonify({'error': 'Session not found'}), 404
@app.route('/submit_word', methods=['POST'])
def submit_word():
data = request.json
session_id = data['session_id']
player_id = data['player_id']
word = data['word'].lower()
if len(word) != 7:
return jsonify({'error': 'Word must be 7 letters long'}), 400
sessions[session_id]['words'][player_id] = word
sessions[session_id]['last_activity'] = time.time()
if len(sessions[session_id]['words']) == 2:
sessions[session_id]['current_player'] = sessions[session_id]['players'][0]
return jsonify({'status': 'game_started'})
return jsonify({'status': 'waiting_for_opponent'})
# ... (rest of the code remains the same)
if __name__ == '__main__':
cleanup_inactive_sessions()
app.run(host='0.0.0.0', port=7860)