#59 feat:Die become abstract & add dice tipes as children

pull/62/head
Ismail TAHA JANAN 2 years ago
parent 908c725573
commit 306315c2ff

@ -29,16 +29,16 @@ namespace Data
return list;
}
public static List<Die> LoadDices()
public static List<AbstractDie> LoadDices()
{
List<Die> list = new()
List<AbstractDie> list = new()
{
new Die("Dice 1"),
new Die("Dice 1"),
new Die("Dice 1"),
new Die("Dice 1"),
new Die("Dice 1"),
new Die("Dice 1")
new AbstractDie("Dice 1"),
new AbstractDie("Dice 1"),
new AbstractDie("Dice 1"),
new AbstractDie("Dice 1"),
new AbstractDie("Dice 1"),
new AbstractDie("Dice 1")
};
return list;

@ -0,0 +1,30 @@
using System.Collections.Generic;
namespace Model
{
public abstract class AbstractDie<T> where T : AbstractDieFace
{
protected string Name;
public IEnumerable<T> ListFaces => listFaces;
private readonly List<T> listFaces =new();
public AbstractDie(string name, params T[] faces)
{
this.Name = name;
listFaces.AddRange(faces) ;
}
public string GetName() => Name;
public abstract AbstractDieFace GetRandomFace();
public List<T> GetDieFaces()
{
return (List<T>)ListFaces;
}
}
}

@ -0,0 +1,24 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public class ColorDie : AbstractDie<ColorDieFace>
{
public ColorDie(string name, params ColorDieFace[] faces) : base(name, faces)
{
}
public override AbstractDieFace GetRandomFace()
{
Random rnd = new();
int faceIndex = rnd.Next(1, ListFaces.Count() + 1);
return ListFaces.ElementAt(faceIndex);
}
}
}

@ -1,14 +0,0 @@
namespace Model
{
public class Die
{
private readonly string _name;
public Die(string name)
{
_name = name;
}
public string Name => _name;
}
}

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public class ImageDie : AbstractDie<ImageDieFace>
{
public ImageDie(string name, params ImageDieFace[] faces) : base(name, faces)
{
}
public override ImageDieFace GetRandomFace()
{
Random rnd = new();
int faceIndex = rnd.Next(1, ListFaces.Count() + 1);
return ListFaces.ElementAt(faceIndex);
}
}
}

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public class NumberDie : AbstractDie<NumberDieFace>
{
public NumberDie(string name, params NumberDieFace[] faces ) : base(name,faces)
{
}
public override NumberDieFace GetRandomFace()
{
Random rnd = new();
int faceIndex = rnd.Next(1, ListFaces.Count()+1);
return ListFaces.ElementAt(faceIndex);
}
}
}

@ -8,7 +8,7 @@ namespace Tests.Model_UTs
[Fact]
public void TestConstructor()
{
Die die = new Die("Ben");
AbstractDie die = new AbstractDie("Ben");
Assert.Equal("Ben", die.Name);
}
}

Loading…
Cancel
Save