C#坦克大战问题

问题1:

System.NullReferenceException:“未将对象引用设置到对象的实例。”

bmp 是 null。

public Direction Dir { get {return dir; }
    set {
        dir = value;
        Bitmap bmp = null;

        switch (dir)
        {
            case Direction.Up:
                bmp = BitmapUp;
                break;
            case Direction.Down:
                bmp = BitmapDown;
                break;
            case Direction.Left:
                bmp = BitmapLeft;
                break;
            case Direction.Right:
                bmp = BitmapRight;
                break;
        }
        Width = bmp.Width;
        Height = bmp.Height;
    } }

原因:BitmapUp的值为null,导致不能获取bmp.Width, bmp.Height
由于先赋值了this.Dir 返回public Direction Dir { get ; set;}中而此时BitmapUp还没赋值

        public MyTank(int x, int y, int speed)
        {
            Ismove = false;
            this.X = x;
            this.Y = y;
            this.speed = speed;
            this.Dir = Direction.Up;
            BitmapUp = Resources.MyTankUp;
            BitmapDown = Resources.MyTankDown;
            BitmapLeft = Resources.MyTankLeft;
            BitmapRight = Resources.MyTankRight;
        }

问题2

显示当前对象正在其他地方使用

原因:

按下多次方向键,多次触发导致争夺资源

解决:用lock锁

问题3:

子弹已被移除

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_52541394

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值