applied patch to uncover cells next to 0 automatically
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -95,6 +95,7 @@ class BombsCanvasClass: public wxWindow
|
|||||||
void OnPaint(wxPaintEvent& event);
|
void OnPaint(wxPaintEvent& event);
|
||||||
void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
|
void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
|
||||||
void Refresh(int xc1, int yc1, int xc2, int yc2);
|
void Refresh(int xc1, int yc1, int xc2, int yc2);
|
||||||
|
void Uncover(int x, int y);
|
||||||
void OnEvent(wxMouseEvent& event);
|
void OnEvent(wxMouseEvent& event);
|
||||||
void UpdateFieldSize();
|
void UpdateFieldSize();
|
||||||
|
|
||||||
|
@@ -164,6 +164,41 @@ void BombsCanvasClass::Refresh(int xc1, int yc1, int xc2, int yc2)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Called when uncovering a cell.
|
||||||
|
void BombsCanvasClass::Uncover(int x, int y)
|
||||||
|
{
|
||||||
|
wxGetApp().Game.Unhide(x,y);
|
||||||
|
Refresh(x, y, x, y);
|
||||||
|
if (wxGetApp().Game.IsBomb(x,y) || wxGetApp().Game.GetRemainingCells()==0)
|
||||||
|
{ wxBell();
|
||||||
|
if (!wxGetApp().Game.IsBomb(x,y))
|
||||||
|
{ wxMessageBox("Nice! You found all the bombs!", "wxWin Bombs",
|
||||||
|
wxOK|wxCENTRE, wxGetApp().BombsFrame);
|
||||||
|
}
|
||||||
|
else // x,y is a bomb
|
||||||
|
{ wxGetApp().Game.Explode(x, y);
|
||||||
|
}
|
||||||
|
for(x=0; x<field_width; x++)
|
||||||
|
for(y=0; y<field_height; y++)
|
||||||
|
wxGetApp().Game.Unhide(x,y);
|
||||||
|
Refresh(0, 0, field_width-1, field_height-1);
|
||||||
|
}
|
||||||
|
else if (!wxGetApp().Game.Get(x, y))
|
||||||
|
{ int left = ( x > 0 ) ? x-1 : 0;
|
||||||
|
int right = ( x < wxGetApp().Game.GetWidth() - 1 )?
|
||||||
|
x+1 : wxGetApp().Game.GetWidth() - 1;
|
||||||
|
int top = ( y > 0 ) ? y-1 : 0;
|
||||||
|
int bottom = ( y < wxGetApp().Game.GetHeight() - 1 )?
|
||||||
|
y+1 : wxGetApp().Game.GetHeight() - 1;
|
||||||
|
int i,j;
|
||||||
|
for (j = top; j <= bottom; j++)
|
||||||
|
for (i=left; i <= right; i++)
|
||||||
|
if ((i != x || j != y) && wxGetApp().Game.IsHidden(i,j)
|
||||||
|
&& !wxGetApp().Game.IsMarked(i,j))
|
||||||
|
Uncover(i,j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Called when the canvas receives a mouse event.
|
// Called when the canvas receives a mouse event.
|
||||||
void BombsCanvasClass::OnEvent(wxMouseEvent& event)
|
void BombsCanvasClass::OnEvent(wxMouseEvent& event)
|
||||||
{
|
{
|
||||||
@@ -181,23 +216,8 @@ void BombsCanvasClass::OnEvent(wxMouseEvent& event)
|
|||||||
}
|
}
|
||||||
else if (event.LeftDown() && wxGetApp().Game.IsHidden(x,y)
|
else if (event.LeftDown() && wxGetApp().Game.IsHidden(x,y)
|
||||||
&& !wxGetApp().Game.IsMarked(x,y))
|
&& !wxGetApp().Game.IsMarked(x,y))
|
||||||
{ wxGetApp().Game.Unhide(x,y);
|
{ Uncover(x,y);
|
||||||
Refresh(x, y, x, y);
|
return;
|
||||||
if (wxGetApp().Game.IsBomb(x,y) || wxGetApp().Game.GetRemainingCells()==0)
|
|
||||||
{ wxBell();
|
|
||||||
if (!wxGetApp().Game.IsBomb(x,y))
|
|
||||||
{ wxMessageBox("Nice! You found all the bombs!", "wxWin Bombs",
|
|
||||||
wxOK|wxCENTRE, wxGetApp().BombsFrame);
|
|
||||||
}
|
|
||||||
else // x,y is a bomb
|
|
||||||
{ wxGetApp().Game.Explode(x, y);
|
|
||||||
}
|
|
||||||
for(x=0; x<field_width; x++)
|
|
||||||
for(y=0; y<field_height; y++)
|
|
||||||
wxGetApp().Game.Unhide(x,y);
|
|
||||||
Refresh(0, 0, field_width-1, field_height-1);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user