67 lines
2.7 KiB
C#
67 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace TestProject
|
|
{
|
|
class MainController
|
|
{
|
|
//Liste der Karten
|
|
List<Karte> KartenListe = new();
|
|
//"View"
|
|
MainWindow mainWindow;
|
|
|
|
//Hierbei handelt es sich um einen Konstruktor. Dieser wird immer beim Erstellen der Klasse mit new aufgerufen. Dieser Konstruktor will zusätzlich als Übergabewert das MainWindow haben.
|
|
public MainController(MainWindow mw)
|
|
{
|
|
//Setzen der "View", also des Hauptfensters
|
|
mainWindow = mw;
|
|
//Erstellen der Karten
|
|
KartenListe = Karte.GenerateCardPairs(5);
|
|
|
|
//Einfügen der Karten in die GUI
|
|
mainWindow.InsertCardsIntoGui(KartenListe);
|
|
|
|
|
|
}
|
|
|
|
//Diese Methode behandelt die Aktion, wenn ein User auf ein gewisses Element klickt. Dabei benötigt die Methode die individuelle ID der Karte.
|
|
public void ClickOnCard(int individualID)
|
|
{
|
|
//Zuerst suchen wir die Karte, zu der die ID gehört
|
|
Karte k = KartenListe.Where(k => k.IndividualID == individualID).ToList().First();
|
|
//Dann ändern wir den Status ab
|
|
k.IsChecked = !k.IsChecked;
|
|
//Danach prüfen wir, ob Elemente rausgenommen werden müssen.
|
|
testCards();
|
|
//Zum Schluss geben wir die neue Liste zur GUI, die diese dann aktualisiert
|
|
mainWindow.InsertCardsIntoGui(KartenListe);
|
|
}
|
|
|
|
//Diese Methode überprüft, ob zwei gleiche Elemente ausgewählt sind und löscht diese dann aus der Liste.
|
|
void testCards()
|
|
{
|
|
//Zuerst holen wir uns alle Elemente, die gecheckt (ausgewählt) sind.
|
|
var checkedList = KartenListe.Where(k => k.IsChecked).ToList();
|
|
//In dieser Liste sollen dann alle PairIDs stehen, die rausgelöscht werden sollen
|
|
List<int> ints = new();
|
|
//Mit der geschachtelten foreach-Schleife vergleichen wir alle Elemente miteinander und merken uns, wo beide Pairs gleich gleich waren
|
|
foreach (var element in checkedList)
|
|
foreach(var item in checkedList)
|
|
if(element.IndividualID != item.IndividualID && element.PairID == item.PairID)
|
|
ints.Add(item.PairID);
|
|
//Zum Schluss laufen wir durch alle Karten durch und löschen die jewiligen Pairs aus der Liste.
|
|
for (int i = 0; i < KartenListe.Count; i++)
|
|
if (ints.Contains(KartenListe[i].PairID))
|
|
{
|
|
KartenListe.RemoveAt(i);
|
|
i--;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|