如何让派生类从基类继承变量以获得不同的值?

时间:2014-04-05 21:34:08

标签: c# class oop inheritance picturebox

我有一个简单的游戏,其中点击移动通过一组图片框的图像为玩家提供一个点,我计划为此添加另一个图像,以便子类在点击时为用户授予不同的点数一个不同的形象。 我想知道如何让派生类继承基类中的变量并更改数值。

以下是我的代码的相关部分:

 public class Monster
 {
    public static int Score = 1;
    public Monster()
    {

    }

 }

 class Skeleton:Monster         
 {
    public Skeleton()
    {
        Score = 2;
    }

 }


public partial class Form1 : Form
{

    PictureBox[] boxes;
    int initialscore = 0;
    public Form1()
    {
        InitializeComponent();
    }

    private void boxes_MouseClick(object sender, MouseEventArgs e)
    {
        for (int x = 0; x < 27; x++)
        {
            if (sender.Equals(boxes[x]))
            {
                Image grass = Image.FromFile("swamp.png");
                PictureBox temp = (PictureBox)sender;
                temp.Image = grass;
            }
            if (sender.Equals(boxes[x]))
            {
                PictureBox pb = (PictureBox)sender;
                if (pb.Tag == "skeleton.png")
                {
                    addScore(Monster.Score);
                }
            }
        }

        label1.Text = " Score: " +initialscore.ToString();  
    }
    public void addScore(int add)
    {
        initialscore += add;
        label1.Text = " Score: " + initialscore.ToString();
    }
    private void Form1_Load(object sender, EventArgs e)
    {

        addScore(0);
    }
}

我如何让骨架类能够获得与Monster类不同的分数值?是否需要为Form1添加/更改任何其他内容,如果是这样,需要做些什么才能维护工作分数系统?

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

public class Monster
{
    public Monster()
    {
        this.Score = 1;
    }

    public int Score
    {
        get;
        set;
    }
}

public class Skeleton : Monster
{
    public Skeleton()
        : base()
    {
        this.Score = 2;
    }
}