Added partial file import and Hints calculation
This commit is contained in:
+6
-2
@@ -25,7 +25,7 @@ namespace NonoGramme
|
|||||||
private void NewGame()
|
private void NewGame()
|
||||||
{
|
{
|
||||||
nonogramme1.NewRandomGame(new Size(5, 5));
|
nonogramme1.NewRandomGame(new Size(5, 5));
|
||||||
nonogramme1.Refresh();
|
RefreshUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Form1_Load(object sender, EventArgs e)
|
private void Form1_Load(object sender, EventArgs e)
|
||||||
@@ -47,9 +47,12 @@ namespace NonoGramme
|
|||||||
{
|
{
|
||||||
nonogramme1.Size = new Size(ClientSize.Width - UI_BORDER, ClientSize.Width);
|
nonogramme1.Size = new Size(ClientSize.Width - UI_BORDER, ClientSize.Width);
|
||||||
}
|
}
|
||||||
|
RefreshUi();
|
||||||
|
}
|
||||||
|
private void RefreshUi()
|
||||||
|
{
|
||||||
nonogramme1.Refresh();
|
nonogramme1.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button1_Click(object sender, EventArgs e)
|
private void button1_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
||||||
@@ -80,6 +83,7 @@ namespace NonoGramme
|
|||||||
{
|
{
|
||||||
selectedNonoGram = selectedFile;
|
selectedNonoGram = selectedFile;
|
||||||
nonogramme1.LoadNewGame(selectedNonoGram);
|
nonogramme1.LoadNewGame(selectedNonoGram);
|
||||||
|
RefreshUi();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+44
-7
@@ -14,6 +14,7 @@ namespace NonoGramme
|
|||||||
{
|
{
|
||||||
private readonly Color DEFAULT_FULL_COLOR = Color.Black;
|
private readonly Color DEFAULT_FULL_COLOR = Color.Black;
|
||||||
private readonly Color DEFAULT_EMPTY_COLOR = Color.LightGray;
|
private readonly Color DEFAULT_EMPTY_COLOR = Color.LightGray;
|
||||||
|
private readonly Color DEBUG_UNDISCOVERED_COLOR = Color.DarkOliveGreen;
|
||||||
private readonly Color DEFAULT_BORDER_COLOR = Color.Pink;
|
private readonly Color DEFAULT_BORDER_COLOR = Color.Pink;
|
||||||
private readonly Color DEFAULT_ERROR_COLOR = Color.Purple;
|
private readonly Color DEFAULT_ERROR_COLOR = Color.Purple;
|
||||||
|
|
||||||
@@ -127,14 +128,37 @@ namespace NonoGramme
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MessageBox.Show(rawData);
|
//MessageBox.Show(rawData);
|
||||||
|
if (rawData.Length != size.Width * size.Height)
|
||||||
|
MessageBox.Show("The file contains conflicting datas");
|
||||||
|
|
||||||
/*
|
//Filling the class with infos
|
||||||
for ()
|
GridSize = size;
|
||||||
|
HorizontalLines = new Line[GridSize.Height];
|
||||||
|
VerticalLines = new Line[GridSize.Width];
|
||||||
|
|
||||||
|
for (int y = 0; y < GridSize.Height; y++)
|
||||||
{
|
{
|
||||||
|
HorizontalLines[y] = new Line(GridSize.Width);
|
||||||
|
for (int x = 0; x < GridSize.Width; x++)
|
||||||
|
{
|
||||||
|
if (y == 0)
|
||||||
|
{
|
||||||
|
VerticalLines[x] = new Line(GridSize.Height);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
Tile.State tileState = Tile.State.Empty;
|
||||||
|
int flatIndex = y * GridSize.Width + x;
|
||||||
|
if (rawData[flatIndex] == 1)
|
||||||
|
{
|
||||||
|
tileState = Tile.State.Undiscovered;
|
||||||
|
}
|
||||||
|
HorizontalLines[y].Edit(x,tileState);
|
||||||
|
VerticalLines[x].Edit(y,tileState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("File imported Successfully");
|
||||||
}
|
}
|
||||||
private void Populate()
|
private void Populate()
|
||||||
{
|
{
|
||||||
@@ -157,7 +181,7 @@ namespace NonoGramme
|
|||||||
state = Tile.State.Empty;
|
state = Tile.State.Empty;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
state = Tile.State.Full;
|
state = Tile.State.Undiscovered;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
state = Tile.State.Empty;
|
state = Tile.State.Empty;
|
||||||
@@ -169,8 +193,21 @@ namespace NonoGramme
|
|||||||
}
|
}
|
||||||
Console.WriteLine("Coucou");
|
Console.WriteLine("Coucou");
|
||||||
}
|
}
|
||||||
|
public void RefreshGrid()
|
||||||
|
{
|
||||||
|
foreach (Line line in HorizontalLines)
|
||||||
|
{
|
||||||
|
line.RecalculateHints();
|
||||||
|
}
|
||||||
|
foreach (Line line in VerticalLines)
|
||||||
|
{
|
||||||
|
line.RecalculateHints();
|
||||||
|
}
|
||||||
|
}
|
||||||
public Bitmap Draw(Bitmap UI,Point offset)
|
public Bitmap Draw(Bitmap UI,Point offset)
|
||||||
{
|
{
|
||||||
|
RefreshGrid();
|
||||||
|
|
||||||
Size actualSize = new Size(UI.Width - offset.X, UI.Height - offset.Y);
|
Size actualSize = new Size(UI.Width - offset.X, UI.Height - offset.Y);
|
||||||
Size blocSize = new Size(actualSize.Width/GridSize.Width,actualSize.Height/GridSize.Height);
|
Size blocSize = new Size(actualSize.Width/GridSize.Width,actualSize.Height/GridSize.Height);
|
||||||
|
|
||||||
@@ -216,7 +253,7 @@ namespace NonoGramme
|
|||||||
g.FillRectangle(new SolidBrush(DEFAULT_EMPTY_COLOR), new Rectangle(position, blocSize));
|
g.FillRectangle(new SolidBrush(DEFAULT_EMPTY_COLOR), new Rectangle(position, blocSize));
|
||||||
break;
|
break;
|
||||||
case Tile.State.Undiscovered:
|
case Tile.State.Undiscovered:
|
||||||
g.FillRectangle(new SolidBrush(DEFAULT_FULL_COLOR), new Rectangle(position, blocSize));
|
g.FillRectangle(new SolidBrush(DEBUG_UNDISCOVERED_COLOR), new Rectangle(position, blocSize));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
g.FillRectangle(new SolidBrush(DEFAULT_ERROR_COLOR), new Rectangle(position, blocSize));
|
g.FillRectangle(new SolidBrush(DEFAULT_ERROR_COLOR), new Rectangle(position, blocSize));
|
||||||
|
|||||||
+34
-6
@@ -16,7 +16,8 @@ namespace NonoGramme
|
|||||||
public int Length { get => _length; set => _length = value; }
|
public int Length { get => _length; set => _length = value; }
|
||||||
public List<int> Hints { get => _hints; set => _hints = value; }
|
public List<int> Hints { get => _hints; set => _hints = value; }
|
||||||
|
|
||||||
public Line(Tile[] states) {
|
public Line(Tile[] states)
|
||||||
|
{
|
||||||
//This method will create a new Line wich can then be edited
|
//This method will create a new Line wich can then be edited
|
||||||
Data = states;
|
Data = states;
|
||||||
RecalculateHints();
|
RecalculateHints();
|
||||||
@@ -67,13 +68,40 @@ namespace NonoGramme
|
|||||||
}
|
}
|
||||||
public void RecalculateHints()
|
public void RecalculateHints()
|
||||||
{
|
{
|
||||||
//This will have to be done, for now its just a placeholder
|
|
||||||
//TO REMOVE !!
|
|
||||||
Hints = new List<int>();
|
Hints = new List<int>();
|
||||||
int count = rnd.Next(1, Data.Count()-1);
|
bool previousTile = false;
|
||||||
for (int i = 0;i < count;i++)
|
bool currentTile = false;
|
||||||
|
int counter = 0;
|
||||||
|
for (int i = 0; i < Data.Length; i++)
|
||||||
{
|
{
|
||||||
Hints.Add(rnd.Next(1, Data.Count()-1));
|
switch (Data[i].CurrentState)
|
||||||
|
{
|
||||||
|
case Tile.State.Discovered:
|
||||||
|
case Tile.State.Empty:
|
||||||
|
case Tile.State.Full:
|
||||||
|
currentTile = false;
|
||||||
|
break;
|
||||||
|
case Tile.State.Undiscovered:
|
||||||
|
currentTile = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (currentTile)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
if (!currentTile && previousTile)
|
||||||
|
{
|
||||||
|
//We had a full segment that just finished
|
||||||
|
Hints.Add(counter);
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
previousTile = currentTile;
|
||||||
|
}
|
||||||
|
if (currentTile)
|
||||||
|
{
|
||||||
|
//if the last tilke is full then we need to add it at the end
|
||||||
|
Hints.Add(counter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user