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

C#迷宫游戏问题:到达终点未弹出“end game”提示

问题分析与解决

核心问题

你把通关碰撞判断放在了Form1_Load方法里,这个方法只会在窗体初始化加载时执行一次。玩家移动过程中,程序完全没有再检查PlayerPictureBox和endPointPictureBox是否相交,自然不会触发通关提示。

次要问题

  • 道路判断逻辑错误:当前的isRoad是判断玩家当前所在格子是否为道路,但实际应该判断移动方向的下一个格子是否可通行。否则玩家会直接走到墙里才触发位置重置,逻辑不符合迷宫游戏的常规设计。
  • 拼写错误:ResetLocaiton应该是ResetLocation(少了字母c),虽然编译器可能不报错,但属于不良编码习惯。

修正方案

  1. 把通关判断移到玩家移动后的逻辑里,每次移动(或重置位置)后都检查是否到达终点
  2. 修正道路判断逻辑,提前验证移动目标格子是否可通行

修改后的ProcessCmdKey代码如下:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    int targetX = PlayerPictureBox.Left;
    int targetY = PlayerPictureBox.Top;
    bool canMove = false;

    switch (keyData)
    {
        case Keys.Left:
            targetX -= 10;
            // 验证左侧目标格子是否为道路
            canMove = mazeTiles[(targetX - 25) / TILESIZE, (PlayerPictureBox.Top - 10) / TILESIZE].BackColor != Color.Black;
            break;
        case Keys.Right:
            targetX += 10;
            canMove = mazeTiles[(targetX - 25) / TILESIZE, (PlayerPictureBox.Top - 10) / TILESIZE].BackColor != Color.Black;
            break;
        case Keys.Up:
            targetY -= 10;
            canMove = mazeTiles[(PlayerPictureBox.Left - 25) / TILESIZE, (targetY - 10) / TILESIZE].BackColor != Color.Black;
            break;
        case Keys.Down:
            targetY += 10;
            canMove = mazeTiles[(PlayerPictureBox.Left - 25) / TILESIZE, (targetY - 10) / TILESIZE].BackColor != Color.Black;
            break;
        default:
            return base.ProcessCmdKey(ref msg, keyData);
    }

    if (canMove)
    {
        PlayerPictureBox.Left = targetX;
        PlayerPictureBox.Top = targetY;
    }
    else
    {
        ResetLocation(); // 修正拼写错误
    }

    // 每次操作后检查是否到达终点
    if (PlayerPictureBox.Bounds.IntersectsWith(endPointPictureBox.Bounds))
    {
        MessageBox.Show("end game");
        // 可选:添加游戏结束后的逻辑,比如禁用方向键
        // this.Enabled = false;
    }

    return true;
}
  1. 删除Form1_Load方法里的无用碰撞判断,因为窗体加载时玩家不可能在终点位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:57:15