从无到有写一个C#弹球小游戏(二)

本文介绍了如何在C#中为弹球小游戏创建砖块和球拍类。通过设立静态常量字段,简化了图形绘制和参数调整,使得代码更加维护友好。
摘要由CSDN通过智能技术生成

父类写完之后,考虑子类应该怎么写。

最简单的子类:砖块类,砖块类基本上没有什么新的字段和方法,不过为了方便画图,我加了一部分常量字段。顺便说一句,C#里常量字段默认是静态的,可是操作常量字段的get和set访问器得自己显示的定义为静态。

上代码:

using System.Drawing;

namespace 弹球
{
    /// <summary>
    /// 方块:弹球世界中的矩形物体,被撞击后消失
    /// </summary>
    class Block : Actor
    {
        /// <summary>
        /// 方块的宽度
        /// </summary>
        private const int width = 50;

        /// <summary>
        /// 获取方块的宽度
        /// </summary>
        public static int Width
        {
            get { return width; }
        }

        /// <summary>
        /// 方块的高度
        /// </summary>
        private const int height = 10;

        /// <summary>
        /// 获取方块的高度
        /// </summary>
        public static int Height
        {
            get { return height; }
        }

        public Block()
        { }

        /// <summary>
        /// 构造函数:设置方块的左上角顶点位置
        /// </summary>
        /// <param name="iX"></param>
        /// <param name="iY"></param>
        /// <param name="iWidth"></param>
        /// <param name="iHeight"></param>
        public Block(int iX, int iY)
        {
            PositionBounds.SetBounds(iX, iY, Block.width, Block.height);
            CollisionBounds.SetBounds(iX, iY, Block.width, Block.height);

            MoveBounds.SetBounds(0, 0, 0, 0);
        }

        /// <summary>
        /// 绘制方块
        /// </summary>
        /// <param name="g"></param>
        public override void Draw(Graphics g)
        {
            g.FillRectangle(new SolidBrush(Color.Black), new Rectangle(PositionBounds.Left, PositionBounds.Top, Block.width, Block.height));
            g.DrawRectangle(Pens.White, new Rectangle(PositionBounds.Left, PositionBounds.Top, Block.width, Block.height));
        }

        public override void Update()
        {
            //该物体不更新信息
        }
    }
}
然后写球拍类,这个类相当于在基类的基础上新增一个移动方向,并且定义了自己的update()方法用来更新信息,其实球拍的移动就是更新了位置信息(包括碰撞)。

相应的我也给这个类写了几个静态字段用来表示球拍的一些参数,以后如果要修改这些参数的话只需

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值