jiang buqing commited on
Commit
2e254f6
·
1 Parent(s): 51fe0af

1. 删除放弃按钮

Browse files

2. 新游戏必须猜出来才能按

Files changed (5) hide show
  1. .gitignore +3 -1
  2. app.py +12 -10
  3. static/css/style.css +8 -0
  4. static/js/app.js +21 -38
  5. templates/index.html +0 -1
.gitignore CHANGED
@@ -32,4 +32,6 @@ Thumbs.db
32
  .idea/
33
  .vscode/
34
  *.swp
35
- *.swo
 
 
 
32
  .idea/
33
  .vscode/
34
  *.swp
35
+ *.swo
36
+
37
+ Semantic_Hunter.code-workspace
app.py CHANGED
@@ -86,9 +86,18 @@ def game_status():
86
  @app.route('/new-game', methods=['POST'])
87
  def new_game():
88
  global game_state
89
- # 重置游戏状态
90
- game_state = initialize_game_state()
91
- return jsonify({"status": "success", "message": "新游戏已开始"})
 
 
 
 
 
 
 
 
 
92
 
93
  @app.route('/guess', methods=['POST'])
94
  def guess():
@@ -135,13 +144,6 @@ def guess():
135
 
136
  return jsonify(response)
137
 
138
- @app.route('/give-up', methods=['POST'])
139
- def give_up():
140
- return jsonify({
141
- "status": "success",
142
- "secret_word": game_state["secret_word"]
143
- })
144
-
145
  if __name__ == '__main__':
146
  port = int(os.environ.get("PORT", 7860))
147
  print(f"启动服务器在端口: {port}")
 
86
  @app.route('/new-game', methods=['POST'])
87
  def new_game():
88
  global game_state
89
+
90
+ # 检查是否有人已经猜对了
91
+ has_correct_guess = any(guess["is_correct"] for guess in game_state["guesses"])
92
+
93
+ # 只有在已经猜中的情况下才重置游戏
94
+ if has_correct_guess:
95
+ # 重置游戏状态
96
+ game_state = initialize_game_state()
97
+ return jsonify({"status": "success", "message": "新游戏已开始"})
98
+ else:
99
+ # 不重置游戏状态
100
+ return jsonify({"status": "success", "message": "游戏仍在进行中"})
101
 
102
  @app.route('/guess', methods=['POST'])
103
  def guess():
 
144
 
145
  return jsonify(response)
146
 
 
 
 
 
 
 
 
147
  if __name__ == '__main__':
148
  port = int(os.environ.get("PORT", 7860))
149
  print(f"启动服务器在端口: {port}")
static/css/style.css CHANGED
@@ -76,6 +76,14 @@ h1 {
76
  transform: translateY(-2px);
77
  }
78
 
 
 
 
 
 
 
 
 
79
  .btn-primary {
80
  background-color: var(--highlight-color);
81
  color: var(--primary-color);
 
76
  transform: translateY(-2px);
77
  }
78
 
79
+ .btn:disabled {
80
+ background-color: #4b5563;
81
+ color: #9ca3af;
82
+ cursor: not-allowed;
83
+ opacity: 0.6;
84
+ transform: none;
85
+ }
86
+
87
  .btn-primary {
88
  background-color: var(--highlight-color);
89
  color: var(--primary-color);
static/js/app.js CHANGED
@@ -11,7 +11,6 @@ class SemanticHunterUI {
11
  this.messageArea = document.getElementById('message-area');
12
  this.guessesList = document.getElementById('guesses-list');
13
  this.newGameBtn = document.getElementById('new-game-btn');
14
- this.giveUpBtn = document.getElementById('give-up-btn');
15
  this.itemsPerPage = 7;
16
  }
17
 
@@ -254,22 +253,6 @@ class SemanticHunterAPI {
254
  throw new Error('无法连接到服务器');
255
  }
256
  }
257
-
258
- // 放弃游戏
259
- async giveUp() {
260
- try {
261
- const response = await fetch('/give-up', {
262
- method: 'POST',
263
- headers: {
264
- 'Content-Type': 'application/json'
265
- }
266
- });
267
- return await response.json();
268
- } catch (error) {
269
- console.error('放弃游戏时出错:', error);
270
- throw new Error('无法连接到服务器');
271
- }
272
- }
273
  }
274
 
275
  /**
@@ -286,6 +269,9 @@ class SemanticHunterGame {
286
  this.allGuesses = []; // 所有猜测历史
287
  this.currentPage = 1; // 当前分页
288
 
 
 
 
289
  // 初始化事件监听器
290
  this.initEventListeners();
291
 
@@ -300,7 +286,6 @@ class SemanticHunterGame {
300
  if (e.key === 'Enter') this.submitGuess();
301
  });
302
  this.ui.newGameBtn.addEventListener('click', () => this.initGame());
303
- this.ui.giveUpBtn.addEventListener('click', () => this.giveUp());
304
  }
305
 
306
  // 加载游戏状态 - 从后端获取当前状态
@@ -330,6 +315,9 @@ class SemanticHunterGame {
330
  this.ui.showMessage('游戏开始! 尝试猜测秘密词语!');
331
  }
332
 
 
 
 
333
  // 清空输入框并聚焦
334
  this.ui.clearAndFocusInput();
335
  } else {
@@ -352,6 +340,9 @@ class SemanticHunterGame {
352
  this.latestGuess = null;
353
  this.currentPage = 1;
354
  this.ui.showMessage('新游戏开始! 尝试猜测秘密词语!');
 
 
 
355
  } else {
356
  this.ui.showError(data.message || '初始化游戏时出错');
357
  }
@@ -393,6 +384,9 @@ class SemanticHunterGame {
393
  this.ui.showMessage(`相似度: ${data.similarity}%`);
394
  }
395
 
 
 
 
396
  // 清空输入框并聚焦
397
  this.ui.clearAndFocusInput();
398
  } else {
@@ -403,26 +397,6 @@ class SemanticHunterGame {
403
  }
404
  }
405
 
406
- // 放弃游戏
407
- async giveUp() {
408
- if (!this.gameActive) {
409
- this.ui.showError('游戏已结束,请点击新游戏');
410
- return;
411
- }
412
-
413
- try {
414
- const data = await this.api.giveUp();
415
- if (data.status === 'success') {
416
- this.gameActive = false;
417
- this.ui.showError(`你放弃了! 秘密词语是: ${data.secret_word}`);
418
- } else {
419
- this.ui.showError(data.message || '放弃游戏时出错');
420
- }
421
- } catch (error) {
422
- this.ui.showError(error.message);
423
- }
424
- }
425
-
426
  // 更新猜测列表 - 同时处理最新猜测和历史猜测
427
  updateGuessList(guesses, latestGuess) {
428
  // 渲染猜测列表
@@ -436,6 +410,15 @@ class SemanticHunterGame {
436
  });
437
  }
438
  }
 
 
 
 
 
 
 
 
 
439
  }
440
 
441
  // 当DOM内容加载完成时初始化游戏
 
11
  this.messageArea = document.getElementById('message-area');
12
  this.guessesList = document.getElementById('guesses-list');
13
  this.newGameBtn = document.getElementById('new-game-btn');
 
14
  this.itemsPerPage = 7;
15
  }
16
 
 
253
  throw new Error('无法连接到服务器');
254
  }
255
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  }
257
 
258
  /**
 
269
  this.allGuesses = []; // 所有猜测历史
270
  this.currentPage = 1; // 当前分页
271
 
272
+ // 初始设置新游戏按钮为禁用状态
273
+ this.ui.newGameBtn.disabled = true;
274
+
275
  // 初始化事件监听器
276
  this.initEventListeners();
277
 
 
286
  if (e.key === 'Enter') this.submitGuess();
287
  });
288
  this.ui.newGameBtn.addEventListener('click', () => this.initGame());
 
289
  }
290
 
291
  // 加载游戏状态 - 从后端获取当前状态
 
315
  this.ui.showMessage('游戏开始! 尝试猜测秘密词语!');
316
  }
317
 
318
+ // 更新新游戏按钮状态
319
+ this.updateNewGameButton();
320
+
321
  // 清空输入框并聚焦
322
  this.ui.clearAndFocusInput();
323
  } else {
 
340
  this.latestGuess = null;
341
  this.currentPage = 1;
342
  this.ui.showMessage('新游戏开始! 尝试猜测秘密词语!');
343
+
344
+ // 更新新游戏按钮状态
345
+ this.updateNewGameButton();
346
  } else {
347
  this.ui.showError(data.message || '初始化游戏时出错');
348
  }
 
384
  this.ui.showMessage(`相似度: ${data.similarity}%`);
385
  }
386
 
387
+ // 更新新游戏按钮状态
388
+ this.updateNewGameButton();
389
+
390
  // 清空输入框并聚焦
391
  this.ui.clearAndFocusInput();
392
  } else {
 
397
  }
398
  }
399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  // 更新猜测列表 - 同时处理最新猜测和历史猜测
401
  updateGuessList(guesses, latestGuess) {
402
  // 渲染猜测列表
 
410
  });
411
  }
412
  }
413
+
414
+ // 更新新游戏按钮状态
415
+ updateNewGameButton() {
416
+ // 检查是否有正确的猜测
417
+ const hasCorrectGuess = this.allGuesses.some(guess => guess.is_correct);
418
+
419
+ // 只有在游戏已结束(有正确猜测)时,新游戏按钮才可用
420
+ this.ui.newGameBtn.disabled = !hasCorrectGuess;
421
+ }
422
  }
423
 
424
  // 当DOM内容加载完成时初始化游戏
templates/index.html CHANGED
@@ -16,7 +16,6 @@
16
  <h1>词猎人 <span class="subtitle">| Semantic Hunter</span></h1>
17
  <div class="controls">
18
  <button id="new-game-btn" class="btn"><i class="fas fa-sync-alt"></i> 新游戏</button>
19
- <button id="give-up-btn" class="btn btn-danger"><i class="fas fa-flag"></i> 放弃</button>
20
  </div>
21
  </header>
22
 
 
16
  <h1>词猎人 <span class="subtitle">| Semantic Hunter</span></h1>
17
  <div class="controls">
18
  <button id="new-game-btn" class="btn"><i class="fas fa-sync-alt"></i> 新游戏</button>
 
19
  </div>
20
  </header>
21