项目-坦克大战学习笔记-地图对象绘制思路

在窗体绘制地图对象时我们需要考虑到绘制对象的分类,首先统一称为Object类,

细分为不可移动类(墙体),可移动类(玩家,人机,子弹),可移动类又分为三类

在Object类中有4个子类,他们都继承在Object,在父类中,我们需要实现对象的绘制,坐标的定义

坐标的定义

 public int x{get;set;}
 public int y{get;set;}

用构造函数在设置坐标

对象的绘制我们需要一个对象绘制函数

public void HuiZhi()//绘制功能的函数
{
    Graphics g = tankthread.g;//创建一个画布变量并使他拥有画布组件
    g.DrawImage(shehziImage(),x,y);//调用画布变量的绘制图片方法,传入(图片,坐标)
}

一个图片设置的方法

 protected abstract Image shehziImage(); //抽象方法,需要在子类重写,方法重写后传回的参数传入绘制函数

需要将父类设置为抽象类abstract才能在里面设置抽象方法,抽象方法在父类中调用却在子类中定义,根据子类中定义后传入的image返回值传入绘制方法中调用方法在窗体中绘制对象

在可移动子类中分为上下左右四种情况的图片对象,我们需要一个枚举类型来设置当前方向

enum fangxiang
{
    Up,
    Down, 
    Left, 
    Right
}

在可移动对象中要设置每个方向对应的对象,还要设置移动速度,设置移动方向

 public Bitmap BitmapUp { get; set; }//设置向上的图片
 public Bitmap BitmapDown { get; set; }//设置向下的图片
 public  Bitmap BitmapLeft { get; set; }//设置向左的图片
 public Bitmap BitmapRight { get; set; }//设置向右的图片
 public int speed {  get; set; }//设置速度
 public fangxiang fangxiang { get; set; }//设置方向

在重写父类中设置图片的方法,根据当前方向运用switch选择根据fangxaing设置image

protected override Image shehziImage()//根据方向设置图片传到GameObject类的绘制函数将指定图片绘制出来
{Bitmap image = null;//创建一个空的Bitmap对象
  switch(fangxiang)//设置image的图片
    {
        case fangxiang.Up:
            image = BitmapUp;
            break;
            case fangxiang.Down:
            image = BitmapDown;
            break;
            case fangxiang.Left:
            image = BitmapLeft;
            break;
            case fangxiang.Right:
            image = BitmapRight;
            break;  
    }
    image.MakeTransparent(Color.Black);//调用Bitmap中的方法将黑色设置为透明
    return image;//将image的对象返回出函数
}

可移动图片有黑色底色,所以得运用Bitmap内置的方法将图片的黑色设置为透明

  image.MakeTransparent(Color.Black);//调用Bitmap中的方法将黑色设置为透明

然后设置调整好的图片为返回值

窗体底色的设置:窗体变量.Clear(Color.Black);//调用Clear方法,清除覆盖掉当前窗体内容,用黑色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值