Initial
This commit is contained in:
66
TestProject/Controller/MainController.cs
Normal file
66
TestProject/Controller/MainController.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
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--;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user