This commit is contained in:
tanglong 2025-10-20 13:38:59 +08:00
commit c3a70dc612
2 changed files with 75 additions and 50 deletions

View File

@ -170,21 +170,33 @@ namespace Wpf_AiSportsMicrospace.Views
switch (_currentGameState)
{
case GameState.NotStarted: // 未开始
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3)
int leftWaving = DetectLeftHandRaise(humans);
if (leftWaving == 5)
{
switch (rightWaving)
_mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
_mainWin.WebcamClient.StopExtract();
// 举左手逻辑,例如结束动画或退出
var newPage = new Home();
_mainWin?.SwitchPageWithMaskAnimation(newPage, true);
}
else {
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3)
{
case (int)WavingAction.FirstHand:
StartCountdown(3);
break;
case (int)WavingAction.Raising:
UpdateCountdown();
break;
case (int)WavingAction.RaiseHand:
FinishCountdown();
_currentGameState = GameState.Running; // 倒计时完成 → 游戏开始
break;
switch (rightWaving)
{
case (int)WavingAction.FirstHand:
StartCountdown(3);
break;
case (int)WavingAction.Raising:
UpdateCountdown();
break;
case (int)WavingAction.RaiseHand:
FinishCountdown();
_currentGameState = GameState.Running; // 倒计时完成 → 游戏开始
break;
}
}
}
break;
@ -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,21 +171,34 @@ namespace Wpf_AiSportsMicrospace.Views.JumpRope
switch (_currentGameState)
{
case GameState.NotStarted: // 未开始
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3)
int leftWaving = DetectLeftHandRaise(humans);
if (leftWaving == 5)
{
switch (rightWaving)
_mainWin.HumanFrameUpdated -= OnHumanFrameUpdated;
_mainWin.WebcamClient.StopExtract();
// 举左手逻辑,例如结束动画或退出
var newPage = new Home();
_mainWin?.SwitchPageWithMaskAnimation(newPage, true);
}
else
{
int rightWaving = DetectRightHandRaise(humans);
if (rightWaving >= 3)
{
case (int)WavingAction.FirstHand:
StartCountdown(3);
break;
case (int)WavingAction.Raising:
UpdateCountdown();
break;
case (int)WavingAction.RaiseHand:
FinishCountdown();
_currentGameState = GameState.Running; // 倒计时完成 → 游戏开始
break;
switch (rightWaving)
{
case (int)WavingAction.FirstHand:
StartCountdown(3);
break;
case (int)WavingAction.Raising:
UpdateCountdown();
break;
case (int)WavingAction.RaiseHand:
FinishCountdown();
_currentGameState = GameState.Running; // 倒计时完成 → 游戏开始
break;
}
}
}
break;
@ -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(() =>