Projektdateien hinzufügen.
This commit is contained in:
137
GameOfLife/Game.cs
Normal file
137
GameOfLife/Game.cs
Normal file
@@ -0,0 +1,137 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GameOfLife
|
||||
{
|
||||
public class Game
|
||||
{
|
||||
public Game(int x, int y) {
|
||||
ActiveMap = new(x, y);
|
||||
SwapMap = new(x, y);
|
||||
}
|
||||
public int Iteration => _Iteration;
|
||||
private GameMap ActiveMap, SwapMap;
|
||||
private int _Iteration;
|
||||
|
||||
|
||||
public void Update()
|
||||
{
|
||||
//SwapMap.Clear();
|
||||
|
||||
foreach ( var cell in ActiveMap.GetAllCells())
|
||||
{
|
||||
cell.Update(ref ActiveMap, ref SwapMap);
|
||||
}
|
||||
_Iteration++;
|
||||
|
||||
//Swap Maps
|
||||
ActiveMap.CloneFrom(SwapMap);
|
||||
}
|
||||
|
||||
public GameMap getActiveMap()
|
||||
{
|
||||
return ActiveMap;
|
||||
}
|
||||
|
||||
public string ToString()
|
||||
{
|
||||
return $"""
|
||||
Current Iteration: {Iteration}
|
||||
""";
|
||||
}
|
||||
|
||||
public string RenderToString()
|
||||
{
|
||||
int MapRowSize = ActiveMap.SizeY;
|
||||
int row = 0;
|
||||
int rowCounter = 0;
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
|
||||
stringBuilder.Append("\t0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5\n");
|
||||
stringBuilder.AppendLine();
|
||||
stringBuilder.Append("0\t");
|
||||
|
||||
foreach ( var cell in ActiveMap.GetAllCells())
|
||||
{
|
||||
stringBuilder.Append(cell.ToString() + " ");
|
||||
|
||||
rowCounter++;
|
||||
if (rowCounter == MapRowSize)
|
||||
{
|
||||
rowCounter = 0;
|
||||
row++;
|
||||
stringBuilder.Append($"\n{row}\t");
|
||||
}
|
||||
}
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public string RenderToDebugString()
|
||||
{
|
||||
int row = 0;
|
||||
int MapRowSize = (int)Math.Sqrt(ActiveMap.GetAllCells().Length);
|
||||
int rowCounter = 0;
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.Append("\t0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5\n");
|
||||
stringBuilder.AppendLine();
|
||||
stringBuilder.Append("0\t");
|
||||
foreach (var cell in ActiveMap.GetAllCells())
|
||||
{
|
||||
stringBuilder.Append(cell.GetNeighborVal(ref ActiveMap) + " ");
|
||||
|
||||
|
||||
rowCounter++;
|
||||
if (rowCounter == MapRowSize)
|
||||
{
|
||||
rowCounter = 0;
|
||||
row++;
|
||||
stringBuilder.Append($"\n{row}\t");
|
||||
}
|
||||
}
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public string RenderToSwapDebugString()
|
||||
{
|
||||
int MapRowSize = (int)Math.Sqrt(SwapMap.GetAllCells().Length);
|
||||
int rowCounter = 0;
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
foreach (var cell in SwapMap.GetAllCells())
|
||||
{
|
||||
stringBuilder.Append(cell.GetNeighborVal(ref SwapMap));
|
||||
|
||||
rowCounter++;
|
||||
if (rowCounter == MapRowSize)
|
||||
{
|
||||
rowCounter = 0;
|
||||
stringBuilder.Append("\n");
|
||||
}
|
||||
}
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
|
||||
public void SetRandomStart(int XSize, int YSize, int Seed = 0,int mod = 2)
|
||||
{
|
||||
//Not using Size args right now
|
||||
for (int i = 0; i < ActiveMap.SizeX - 1; i++)
|
||||
{
|
||||
for (int j = 0; j < ActiveMap.SizeY - 1; j++)
|
||||
{
|
||||
ActiveMap.GetCell(i,j).isAlive = (Random.Shared.Next()%mod == 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void GeneraterSwitcher()
|
||||
{
|
||||
ActiveMap.GetCell(ActiveMap.SizeX/2, ActiveMap.SizeY/2).isAlive = true;
|
||||
ActiveMap.GetCell(ActiveMap.SizeX / 2, (ActiveMap.SizeY / 2)+1).isAlive = true;
|
||||
ActiveMap.GetCell(ActiveMap.SizeX / 2, (ActiveMap.SizeY / 2)-1).isAlive = true;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user