feat(chat): 完善五子棋功能,包含AI对战、PvP邀请、断线重连及界面美化
This commit is contained in:
+35
-1
@@ -30,7 +30,6 @@ Route::post('/login', [AuthController::class, 'login'])->name('login.post');
|
||||
// 处理退出登录
|
||||
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
|
||||
|
||||
|
||||
// 聊天室系统内部路由 (需要鉴权)
|
||||
Route::middleware(['chat.auth'])->group(function () {
|
||||
// ---- 第六阶段:大厅与房间管理 ----
|
||||
@@ -177,6 +176,40 @@ Route::middleware(['chat.auth'])->group(function () {
|
||||
Route::get('/my', [\App\Http\Controllers\LotteryController::class, 'my'])->name('my');
|
||||
});
|
||||
|
||||
// ── 五子棋(前台)───────────────────────────────────────────────
|
||||
Route::prefix('gomoku')->name('gomoku.')->group(function () {
|
||||
// 获取五子棋配置(入场费、奖励,对外暴露给前端面板)
|
||||
Route::get('/config', function () {
|
||||
$c = \App\Models\GameConfig::query()->where('game_key', 'gomoku')->first();
|
||||
$p = $c?->params ?? [];
|
||||
|
||||
return response()->json([
|
||||
'ok' => true,
|
||||
'pvp_reward' => (int) ($p['pvp_reward'] ?? 80),
|
||||
'pve_levels' => [
|
||||
['level' => 1, 'name' => '简单', 'fee' => (int) ($p['pve_easy_fee'] ?? 0), 'reward' => (int) ($p['pve_easy_reward'] ?? 20)],
|
||||
['level' => 2, 'name' => '普通', 'fee' => (int) ($p['pve_normal_fee'] ?? 10), 'reward' => (int) ($p['pve_normal_reward'] ?? 50)],
|
||||
['level' => 3, 'name' => '困难', 'fee' => (int) ($p['pve_hard_fee'] ?? 30), 'reward' => (int) ($p['pve_hard_reward'] ?? 120)],
|
||||
['level' => 4, 'name' => '专家', 'fee' => (int) ($p['pve_expert_fee'] ?? 80), 'reward' => (int) ($p['pve_expert_reward'] ?? 300)],
|
||||
],
|
||||
]);
|
||||
})->name('config');
|
||||
// 查询当前用户是否有进行中的对局(用于重进时恢复)
|
||||
Route::get('/active', [\App\Http\Controllers\GomokuController::class, 'active'])->name('active');
|
||||
// 创建对局(pvp=随机邀请 | pve=人机对战)
|
||||
Route::post('/create', [\App\Http\Controllers\GomokuController::class, 'create'])->name('create');
|
||||
// 加入 PvP 对战
|
||||
Route::post('/{game}/join', [\App\Http\Controllers\GomokuController::class, 'join'])->name('join');
|
||||
// 落子
|
||||
Route::post('/{game}/move', [\App\Http\Controllers\GomokuController::class, 'move'])->name('move');
|
||||
// 认输
|
||||
Route::post('/{game}/resign', [\App\Http\Controllers\GomokuController::class, 'resign'])->name('resign');
|
||||
// 取消等待中的邀请
|
||||
Route::post('/{game}/cancel', [\App\Http\Controllers\GomokuController::class, 'cancel'])->name('cancel');
|
||||
// 获取当前棋盘状态
|
||||
Route::get('/{game}/state', [\App\Http\Controllers\GomokuController::class, 'state'])->name('state');
|
||||
});
|
||||
|
||||
// ── 游戏大厅:实时开关状态接口 ────────────────────────────────────
|
||||
Route::get('/games/enabled', function () {
|
||||
return response()->json([
|
||||
@@ -187,6 +220,7 @@ Route::middleware(['chat.auth'])->group(function () {
|
||||
'fortune_telling' => \App\Models\GameConfig::isEnabled('fortune_telling'),
|
||||
'fishing' => \App\Models\GameConfig::isEnabled('fishing'),
|
||||
'lottery' => \App\Models\GameConfig::isEnabled('lottery'),
|
||||
'gomoku' => \App\Models\GameConfig::isEnabled('gomoku'),
|
||||
]);
|
||||
})->name('games.enabled');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user