Sergidev commited on
Commit
94bfcb7
·
verified ·
1 Parent(s): 07bb9cd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -75
app.py CHANGED
@@ -37,8 +37,10 @@ def join_game_session():
37
  global waiting_session
38
  if waiting_session and waiting_session in sessions:
39
  session_id = waiting_session
 
40
  else:
41
  session_id = create_game_session()
 
42
 
43
  player_id = generate_player_id()
44
  sessions[session_id]['players'].append(player_id)
@@ -47,35 +49,7 @@ def join_game_session():
47
  if len(sessions[session_id]['players']) == 2:
48
  waiting_session = None
49
 
50
- return session_id, player_id
51
-
52
- def update_game_state(session_id, guess):
53
- session = sessions[session_id]
54
- current_player = session['current_player']
55
- opponent = [p for p in session['players'] if p != current_player][0]
56
-
57
- guess = guess.lower()
58
- session['guesses'].add(guess)
59
-
60
- if guess not in session['words'][opponent]:
61
- session['incorrect_guesses'] += 1
62
-
63
- if session['incorrect_guesses'] >= 6:
64
- return 'game_over'
65
-
66
- if all(letter in session['guesses'] for letter in session['words'][opponent]):
67
- return 'winner'
68
-
69
- session['current_player'] = opponent
70
- session['last_activity'] = time.time()
71
- return 'continue'
72
-
73
- def check_win_condition(session_id):
74
- session = sessions[session_id]
75
- for player in session['players']:
76
- if all(letter in session['guesses'] for letter in session['words'][player]):
77
- return player
78
- return None
79
 
80
  @app.route('/')
81
  def index():
@@ -83,11 +57,12 @@ def index():
83
 
84
  @app.route('/play', methods=['POST'])
85
  def play():
86
- session_id, player_id = join_game_session()
 
87
  return jsonify({
88
  'session_id': session_id,
89
  'player_id': player_id,
90
- 'status': 'waiting' if len(sessions[session_id]['players']) == 1 else 'ready'
91
  })
92
 
93
  @app.route('/check_status/<session_id>', methods=['GET'])
@@ -115,50 +90,7 @@ def submit_word():
115
  return jsonify({'status': 'game_started'})
116
  return jsonify({'status': 'waiting_for_opponent'})
117
 
118
- @app.route('/guess', methods=['POST'])
119
- def guess():
120
- data = request.json
121
- session_id = data['session_id']
122
- player_id = data['player_id']
123
- guess = data['guess'].lower()
124
-
125
- if player_id != sessions[session_id]['current_player']:
126
- return jsonify({'error': 'Not your turn'}), 400
127
-
128
- result = update_game_state(session_id, guess)
129
-
130
- if result == 'game_over':
131
- winner = check_win_condition(session_id)
132
- return jsonify({'status': 'game_over', 'winner': winner})
133
- elif result == 'winner':
134
- return jsonify({'status': 'game_over', 'winner': player_id})
135
-
136
- return jsonify({'status': 'continue'})
137
-
138
- @app.route('/game_state/<session_id>')
139
- def game_state(session_id):
140
- if session_id not in sessions:
141
- return jsonify({'error': 'Session not found'}), 404
142
-
143
- session = sessions[session_id]
144
- return jsonify({
145
- 'players': session['players'],
146
- 'current_player': session['current_player'],
147
- 'guesses': list(session['guesses']),
148
- 'incorrect_guesses': session['incorrect_guesses'],
149
- 'words': {player: ''.join(['_' if letter not in session['guesses'] else letter for letter in word])
150
- for player, word in session['words'].items()}
151
- })
152
-
153
- def cleanup_inactive_sessions():
154
- global waiting_session
155
- current_time = time.time()
156
- for session_id in list(sessions.keys()):
157
- if current_time - sessions[session_id]['last_activity'] > 60:
158
- if session_id == waiting_session:
159
- waiting_session = None
160
- del sessions[session_id]
161
- Timer(60, cleanup_inactive_sessions).start()
162
 
163
  if __name__ == '__main__':
164
  cleanup_inactive_sessions()
 
37
  global waiting_session
38
  if waiting_session and waiting_session in sessions:
39
  session_id = waiting_session
40
+ is_new_session = False
41
  else:
42
  session_id = create_game_session()
43
+ is_new_session = True
44
 
45
  player_id = generate_player_id()
46
  sessions[session_id]['players'].append(player_id)
 
49
  if len(sessions[session_id]['players']) == 2:
50
  waiting_session = None
51
 
52
+ return session_id, player_id, is_new_session
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  @app.route('/')
55
  def index():
 
57
 
58
  @app.route('/play', methods=['POST'])
59
  def play():
60
+ session_id, player_id, is_new_session = join_game_session()
61
+ status = 'waiting' if is_new_session else 'ready'
62
  return jsonify({
63
  'session_id': session_id,
64
  'player_id': player_id,
65
+ 'status': status
66
  })
67
 
68
  @app.route('/check_status/<session_id>', methods=['GET'])
 
90
  return jsonify({'status': 'game_started'})
91
  return jsonify({'status': 'waiting_for_opponent'})
92
 
93
+ # ... (rest of the code remains the same)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
 
95
  if __name__ == '__main__':
96
  cleanup_inactive_sessions()