Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
KellerKing committed Dec 19, 2020
1 parent 8dfdf89 commit aea4dfd
Show file tree
Hide file tree
Showing 25 changed files with 188 additions and 255 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
.vs
.\AStar\bin\
AStar\bin
AStar/obj/
Binary file modified .vs/AStar/v16/.suo
Binary file not shown.
42 changes: 0 additions & 42 deletions .vscode/launch.json

This file was deleted.

4 changes: 2 additions & 2 deletions AStar/AStar.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,17 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Konstanten\ZielsuchErgebnis.cs" />
<Compile Include="Logik\AStar.cs" />
<Compile Include="Controller.cs" />
<Compile Include="Konstanten\Feldtyp.cs" />
<Compile Include="FeldFormatierer.cs" />
<Compile Include="Helper.cs" />
<Compile Include="Logik\PathscoreBerechner.cs" />
<Compile Include="Logik\ZielChecker.cs" />
<Compile Include="Transferobjekte\PathScoreDTO.cs" />
<Compile Include="UI Elemente\MeinRadioButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="RandomMapGenerator.cs" />
<Compile Include="Transferobjekte\ListenUpdateDTO.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
Expand Down
50 changes: 23 additions & 27 deletions AStar/Controller.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
using System;
using AStar.Logik;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

Expand All @@ -11,8 +10,8 @@ namespace AStar
class Controller
{
private List<Feld> m_Spielfeld;
private List<Feld> m_OpenList = new List<Feld>(); //Bekommt Felder die geprüft werden müssen
private List<Feld> m_ClosedList = new List<Feld>(); //Bereits begangene Felder
private List<Feld> m_OpenList = new List<Feld>();
private List<Feld> m_ClosedList = new List<Feld>();
private MainForm m_MainForm;

public Controller(MainForm mainForm)
Expand All @@ -23,13 +22,13 @@ public Controller(MainForm mainForm)

private void InitForm()
{
var felderProAchse = 12;
m_Spielfeld = ViewModelCreator.GetSpielfeld(felderProAchse); //TODO: Feldgröße automatisch berechnen
var lastField = m_Spielfeld.First(feld => feld.X == felderProAchse - 1 && feld.Y == felderProAchse - 1);
var radButtons = ViewModelCreator.GetRadioButtons(lastField.Width + lastField.Location.X, lastField.Y, 20);
var felderProAchse = 16;
m_Spielfeld = ViewModelCreator.GetSpielfeld(felderProAchse);
var lastField = m_Spielfeld.First(feld => feld.myPosX == felderProAchse - 1 && feld.myPosY == felderProAchse - 1);
var radButtons = ViewModelCreator.GetRadioButtons(lastField.Width + lastField.Location.X, lastField.myPosY, 20);
var uiButtons = ViewModelCreator.GetButtons(radButtons.Last().Location.X, radButtons.Last().Location.Y, 40);

var formSize = Helper.CalculateWindowSize(Convert.ToInt32(Math.Sqrt(m_Spielfeld.Count)), 20, 25); //TODO Naming und Klasse mit Groeßsen.
var formSize = Helper.CalculateWindowSize(Convert.ToInt32(Math.Sqrt(m_Spielfeld.Count)), 20, 25);

SetzeUIFelder(uiButtons, formSize, radButtons);
ConnectEvents(uiButtons);
Expand Down Expand Up @@ -57,20 +56,12 @@ private void ConnectEvents(List<Button> uiButtons)
m_MainForm.BtnZufaelligesSpielfedClicked += SetZufaelligesFeld;
}

private void SetZufaelligesFeld()
{
//TODO: Oder auch nur als ref
m_Spielfeld = RandomMapGenerator.GenerateRandomMap(new List<Feld>(m_Spielfeld), 50);
}
private void SetZufaelligesFeld() => RandomMapGenerator.GenerateRandomMap(m_Spielfeld, 50);

private void StatusFeldSetzen(Feld currentFeld, Feldtyp currentFeldtyp) => FeldFormatierer.SetSpecialFeld(m_Spielfeld, currentFeld, currentFeldtyp);

private void BtnClearClicked() => Application.Restart();

private void StatusFeldSetzen(Feld currentFeld, Feldtyp currentFeldtyp)
{
FeldFormatierer.SetSpecialFeld(m_Spielfeld, currentFeld, currentFeldtyp);
}
private void BtnClearClicked()
{
Application.Restart();
}

private async void BtnZumZielClicked()
{
Expand All @@ -79,11 +70,16 @@ private async void BtnZumZielClicked()

if (startfeld == null || zielfeld == null) return;

//TODO: Wie geht es weiter ?
var zielsucheErgebnis = await Task.Run(() => Pfadfinder.GeheKomplettenWeg(m_Spielfeld, m_OpenList, m_ClosedList, startfeld, zielfeld));
var zielsucheErgebnis = await Task.Run(() => Pfadfinder.FindeWegZumZiel(m_Spielfeld, m_OpenList, m_ClosedList, startfeld, zielfeld));

await Task.Run(() => ZielChecker.FormatiereFallsPfadGefunden(zielsucheErgebnis));

var neustartAntwort = m_MainForm.ZeigeSpielBeendenDialog(zielsucheErgebnis.Ausgabetext);

MessageBox.Show(zielsucheErgebnis.Ausgabetext); //TODO: Hier das dann auslagern
Application.Restart();
if (neustartAntwort == DialogResult.Yes)
Application.Exit();
else
Application.Restart();
}
}
}
6 changes: 3 additions & 3 deletions AStar/FeldFormatierer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static void SetSpecialFeld(List<Feld> spielfeld, Feld currentFeld, Feldty
{
FormatiereAlsStandardfeld(currentFeld);
}
else
else //Wenn Startfeld oder Zielfeld gestzt werden muss geschaut werden ob es die schon gibt, und wenn ja das alte erst entfernen
{
var oldSpecialFeld = spielfeld.FirstOrDefault(feld => feld.Feldtyp == currentFeldtyp);

Expand All @@ -28,7 +28,7 @@ public static void SetSpecialFeld(List<Feld> spielfeld, Feld currentFeld, Feldty
}
}

public static void FormatiereStartOderZielfeld(Feld currentFeld, Feldtyp currentFeldtyp) //TODO: Komplettes Rework
public static void FormatiereStartOderZielfeld(Feld currentFeld, Feldtyp currentFeldtyp)
{
currentFeld.Feldtyp = currentFeldtyp;

Expand Down Expand Up @@ -60,7 +60,7 @@ public static void FormatiereFinalenPfad(List<Feld> derPfad)
derPfad.ForEach(feld =>
{
feld.BackColor = Color.Blue;
feld.Feldtyp = Feldtyp.Pfad;
feld.Feldtyp = Feldtyp.FinalerPfad;
});
}
}
Expand Down
52 changes: 39 additions & 13 deletions AStar/Helper.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AStar
{
Expand All @@ -19,23 +16,52 @@ public static Tuple<int, int> CalculateWindowSize(int anzahlFelderProAchse, int

public static bool IsFeldDiagonalZumVorgaenger(Feld feld)
{
var vorgaengerX = feld.Vorgaenger.X;
var vorgaengerY = feld.Vorgaenger.Y;
var vorgaengerX = feld.Vorgaenger.myPosX;
var vorgaengerY = feld.Vorgaenger.myPosY;

if (vorgaengerX == feld.X - 1 && vorgaengerY == feld.Y - 1) return true;
else if (vorgaengerX == feld.X + 1 && vorgaengerY == feld.Y - 1) return true;
else if (vorgaengerX == feld.X + 1 && vorgaengerY == feld.Y + 1) return true;
else if (vorgaengerX == feld.X - 1 && vorgaengerY == feld.Y + 1) return true;
if (vorgaengerX == feld.myPosX - 1 && vorgaengerY == feld.myPosY - 1) return true;
else if (vorgaengerX == feld.myPosX + 1 && vorgaengerY == feld.myPosY - 1) return true;
else if (vorgaengerX == feld.myPosX + 1 && vorgaengerY == feld.myPosY + 1) return true;
else if (vorgaengerX == feld.myPosX - 1 && vorgaengerY == feld.myPosY + 1) return true;
else return false;
}

public static void ResetSpielfeld(List<Feld> m_Spielfeld) //TODO: Muss ich das wirklich mit Return machen, oder mache ich alles mit byRef

public static List<Feld> GetBetretbareUmliegendeFelder(List<Feld> spielfeld, Feld currentFeld)
{
var currentFieldX = currentFeld.myPosX;
var currentFieldY = currentFeld.myPosY;

var maxX = Math.Min(spielfeld.Max(f => f.myPosX), currentFieldX + 1);
var minX = Math.Max(currentFieldX - 1, 0);

var maxY = Math.Min(spielfeld.Max(f => f.myPosY), currentFieldY + 1);
var minY = Math.Max(currentFieldY - 1, 0);

var nearestFields = spielfeld.Where(f => f.myPosX >= minX && f.myPosX <= maxX &&
f.myPosY >= minY && f.myPosY <= maxY).ToList();

return nearestFields.Where(f => f.Feldtyp != Feldtyp.Hindernis &&
f.Feldtyp != Feldtyp.AktuellesFeld).ToList();
}

public static void SetVorgaenger(Feld currentFeld, Feld vorgaengerFeld)
{
foreach (var feld in m_Spielfeld)
currentFeld.Vorgaenger = vorgaengerFeld;
}


public static List<Feld> GetFinalenPfad(Feld lastFeld)
{
List<Feld> output = new List<Feld>();

while (lastFeld.Vorgaenger != null)
{
feld.BackColor = Color.AliceBlue;
feld.Feldtyp = Feldtyp.Normal;
output.Add(lastFeld);
lastFeld = lastFeld.Vorgaenger;
}
return output;
}

}
}
16 changes: 8 additions & 8 deletions AStar/Konstanten/Feldtyp.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
namespace AStar
{
public enum Feldtyp
{
Zielfeld,
AktuellesFeld,
Hindernis,
Pfad,
Normal
}
public enum Feldtyp
{
Zielfeld,
AktuellesFeld,
Hindernis,
Normal,
FinalerPfad
}
}
90 changes: 0 additions & 90 deletions AStar/Logik/AStar.cs

This file was deleted.

Loading

0 comments on commit aea4dfd

Please sign in to comment.