This commit is contained in:
tanglong 2025-10-20 13:37:58 +08:00
parent 08d45bc464
commit 7372c015c3
2 changed files with 75 additions and 50 deletions

View File

@ -170,6 +170,17 @@ namespace Wpf_AiSportsMicrospace.Views
switch (_currentGameState)
{
case GameState.NotStarted: // 未开始
int leftWaving = DetectLeftHandRaise(humans);
if (leftWaving == 5)
{
_mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
_mainWin.WebcamClient.StopExtract();
// 举左手逻辑,例如结束动画或退出
var newPage = new Home();
_mainWin?.SwitchPageWithMaskAnimation(newPage, true);
}
else {
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3)
{
@ -187,6 +198,7 @@ namespace Wpf_AiSportsMicrospace.Views
break;
}
}
}
break;
case GameState.Running: // 游戏进行中
@ -196,18 +208,18 @@ namespace Wpf_AiSportsMicrospace.Views
// if (CheckGameFinished()) _currentGameState = GameState.Finished;
break;
case GameState.Finished: // 游戏完成
int leftWaving = DetectLeftHandRaise(humans);
if (leftWaving == 5)
{
_mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
_mainWin.WebcamClient.StopExtract();
//case GameState.Finished: // 游戏完成
// int leftWaving = DetectLeftHandRaise(humans);
// if (leftWaving == 5)
// {
// _mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
// _mainWin.WebcamClient.StopExtract();
// 举左手逻辑,例如结束动画或退出
var newPage = new Home();
_mainWin?.SwitchPageWithMaskAnimation(newPage, true);
}
break;
// // 举左手逻辑,例如结束动画或退出
// var newPage = new Home();
// _mainWin?.SwitchPageWithMaskAnimation(newPage, true);
// }
// break;
}
}
catch (Exception ex)
@ -283,7 +295,7 @@ namespace Wpf_AiSportsMicrospace.Views
ShowRankingBoard(RankingItemList);
Utils.StopBackgroundMusic();
_currentGameState = GameState.Finished;
_currentGameState = GameState.Running;
_mainWin.HumanFrameUpdated += OnHumanFrameUpdated;
_mainWin.WebcamClient.StartExtract();
}

View File

@ -171,6 +171,18 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
switch (_currentGameState)
{
case GameState.NotStarted: // 未开始
int leftWaving = DetectLeftHandRaise(humans);
if (leftWaving == 5)
{
_mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
_mainWin.WebcamClient.StopExtract();
// 举左手逻辑,例如结束动画或退出
var newPage = new Home();
_mainWin?.SwitchPageWithMaskAnimation(newPage, true);
}
else
{
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3)
{
@ -188,6 +200,7 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
break;
}
}
}
break;
case GameState.Running: // 游戏进行中
@ -197,18 +210,18 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
// if (CheckGameFinished()) _currentGameState = GameState.Finished;
break;
case GameState.Finished: // 游戏完成
int leftWaving = DetectLeftHandRaise(humans);
if (leftWaving == 5)
{
_mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
_mainWin.WebcamClient.StopExtract();
//case GameState.Finished: // 游戏完成
// int leftWaving = DetectLeftHandRaise(humans);
// if (leftWaving == 5)
// {
// _mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
// _mainWin.WebcamClient.StopExtract();
// 举左手逻辑,例如结束动画或退出
var newPage = new Home();
_mainWin?.SwitchPageWithMaskAnimation(newPage, true);
}
break;
// // 举左手逻辑,例如结束动画或退出
// var newPage = new Home();
// _mainWin?.SwitchPageWithMaskAnimation(newPage, true);
// }
// break;
}
}
catch (Exception ex)
@ -288,7 +301,7 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
// 更新游戏状态
_currentGameState = GameState.Finished;
_currentGameState = GameState.Running;
// 恢复视频流
Application.Current.Dispatcher.Invoke(() =>