You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#开发Pong游戏使用enum表示玩家方向功能不生效问题求助

Pong游戏Enum使用错误修复方案

核心问题

你定义的全局UpDown枚举字段从未被正确赋值,按键事件中声明的都是仅在方法内生效的局部变量,方法执行完就被销毁,所以移动逻辑永远不会触发。

具体修改步骤

  1. 先修正枚举定义,补充静止状态、修正拼写错误
// 原错误代码:enum Deraction {goUp, goDown}
// 修改为
enum Direction { Idle, GoUp, GoDown }
// 同步修改对应的全局字段,替换原来的Deraction UpDown;
Direction playerMoveState = Direction.Idle;

加Idle状态是为了实现松开按键后玩家 paddle 静止的效果,符合游戏操作逻辑。

  1. 修正按键按下事件逻辑,直接修改全局枚举字段,不要声明局部变量
private void keyIsDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Down)
    {
        playerMoveState = Direction.GoDown;
    }
    else if (e.KeyCode == Keys.Up)
    {
        playerMoveState = Direction.GoUp;
    }
}
  1. 修正按键抬起事件逻辑,松开按键后设置为静止状态
private void keyIsUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
    {
        playerMoveState = Direction.Idle;
    }
}
  1. 同步修改timerTick中的玩家移动判断逻辑
// 替换原来的UpDown相关判断
if (playerMoveState == Direction.GoUp && player.Top > topScreen)
{
    player.Top -= playerSpeed;
}
if (playerMoveState == Direction.GoDown && player.Top < bottemScreen)
{ 
    player.Top += playerSpeed;
}

额外优化提示

你代码里存在少量拼写错误,后续维护可以顺便修正:

  • Deraction → Direction
  • bottem → bottom
  • middel → middle
  • bouwns → bounces

内容的提问来源于stack exchange,提问作者Massuus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:57:02