Oplossing opgave 2
Dank aan Wael Orraby.
Klassen:
enum Kleuren {Rood=1, Geel, Groen };
internal class Schilderij: IComparable
{
public static Random r = new Random();
protected int aantalRodeVlakken=0;
protected Kleuren[,] vlakkenArray = new Kleuren[10, 10];
public Schilderij(int x, int y)
{
vlakkenArray = new Kleuren[x, y];
for (int i = 0; i < vlakkenArray.GetLength(0); i++)
{
for (int j = 0; j < vlakkenArray.GetLength(1); j++)
{
vlakkenArray[i, j] = (Kleuren)r.Next(1, 4);
if (vlakkenArray[i, j] == Kleuren.Rood)
aantalRodeVlakken++;
}
}
}
public Schilderij(): this(10,10)
{
}
public virtual void TekenSchilderij()
{
for (int i = 0; i < vlakkenArray.GetLength(0); i++)
{
for (int j = 0; j < vlakkenArray.GetLength(1); j++)
{
if (vlakkenArray[i, j] == Kleuren.Rood)
{
Console.BackgroundColor = ConsoleColor.Red;
}
else if (vlakkenArray[i, j] == Kleuren.Geel)
{
Console.BackgroundColor = ConsoleColor.Yellow;
}
else
{
Console.BackgroundColor = ConsoleColor.Green;
}
Console.Write(" ");
Console.ResetColor();
}
Console.WriteLine();
}
}
public int KrijgData()
{
return aantalRodeVlakken;
}
public int CompareTo(object? obj)
{
double thisWaarde = WaardeBepaler.BerekenWaarde(this.KrijgData());
double thatWaarde = WaardeBepaler.BerekenWaarde((obj as Schilderij).KrijgData());
return thatWaarde.CompareTo(thisWaarde);
}
}
internal class Picasso : Schilderij
{
public Picasso():base(15,15)
{
}
}
internal class WaardeBepaler
{
public static double BerekenWaarde(int aantalRodeVlakken)
{
return Math.Round(Math.Sqrt(1000 * aantalRodeVlakken), 1);
}
}
internal class Koper
{
private List<Schilderij> schilderijenList = null;
public Koper()
{
Budget = 1500;
schilderijenList = new List<Schilderij>();
}
private double budget;
public double Budget
{
get { return budget; }
private set { budget = value; }
}
public bool Koop(Schilderij schilderij)
{
double schilderijWaarde = WaardeBepaler.BerekenWaarde(schilderij.KrijgData());
if (Budget >= schilderijWaarde)
{
Budget -= schilderijWaarde;
schilderijenList.Add(schilderij);
return true;
}
return false;
}
public int TotaleWinst()
{
int totaleWinst = 0;
foreach (var item in schilderijenList)
{
totaleWinst += (int)WaardeBepaler.BerekenWaarde(item.KrijgData());
}
return totaleWinst;
}
public List<Schilderij> SorteerBezit()
{
schilderijenList.Sort();
return schilderijenList;
}
public void KrijgSchilderij(Koper other)
{
if (other.schilderijenList.Count > 0)
{
this.schilderijenList.Add(other.schilderijenList[0]);
other.schilderijenList.RemoveAt(0);
}
}
}Program.cs
Last updated
Was this helpful?