X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6759ff7d4de5817b4b93f10e0b697700f5a18467..1680c3561bc4f44c63a026e0d1a5324a39336156:/demos/bombs/bombs.cpp diff --git a/demos/bombs/bombs.cpp b/demos/bombs/bombs.cpp index 53de513670..83e4652fca 100644 --- a/demos/bombs/bombs.cpp +++ b/demos/bombs/bombs.cpp @@ -2,17 +2,13 @@ // Name: bombs.cpp // Purpose: Bombs game // Author: P. Foggia 1996 -// Modified by: Wlodzimierz Skiba (ABX) 2003 +// Modified by: Wlodzimierz Skiba (ABX) since 2003 // Created: 1996 // RCS-ID: $Id$ // Copyright: (c) 1996 P. Foggia // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -# pragma implementation -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -61,11 +57,13 @@ bool BombsApp::OnInit() } BEGIN_EVENT_TABLE(BombsFrame, wxFrame) - EVT_MENU(bombsID_EASY, BombsFrame::OnNewEasyGame) - EVT_MENU(bombsID_MEDIUM, BombsFrame::OnNewMediumGame) - EVT_MENU(bombsID_HARD, BombsFrame::OnNewHardGame) - EVT_MENU(wxID_EXIT, BombsFrame::OnExit) - EVT_MENU(wxID_ABOUT, BombsFrame::OnAbout) + EVT_MENU(wxID_NEW, BombsFrame::OnNewGame) + EVT_MENU(bombsID_EASY, BombsFrame::OnEasyGame) + EVT_MENU(bombsID_MEDIUM, BombsFrame::OnMediumGame) + EVT_MENU(bombsID_HARD, BombsFrame::OnHardGame) + EVT_MENU(bombsID_EASYCORNER, BombsFrame::OnEasyCorner) + EVT_MENU(wxID_EXIT, BombsFrame::OnExit) + EVT_MENU(wxID_ABOUT, BombsFrame::OnAbout) END_EVENT_TABLE() BombsFrame::BombsFrame(BombsGame *game) @@ -73,6 +71,8 @@ BombsFrame::BombsFrame(BombsGame *game) wxSize(300, 300), wxDEFAULT_DIALOG_STYLE|wxMINIMIZE_BOX) { m_game = game; + m_easyCorner = false; + m_lastLevel = bombsID_EASY; SetIcon(wxICON(bombs)); @@ -88,8 +88,9 @@ BombsFrame::BombsFrame(BombsGame *game) menuLevel->AppendRadioItem(bombsID_MEDIUM, wxT("&Medium (15x15)\tCtrl-2")); menuLevel->AppendRadioItem(bombsID_HARD, wxT("&Hard (25x20)\tCtrl-3")); - menuFile->Append(bombsID_NEWGAME, wxT("&New Game"), - menuLevel, wxT("Starts a new game")); + menuFile->Append(wxID_NEW, wxT("&New game\tCtrl-N")); + menuFile->Append(bombsID_LEVEL, wxT("&Level"),menuLevel, wxT("Starts a new game")); + menuFile->AppendCheckItem(bombsID_EASYCORNER, wxT("&Easy corner")); menuFile->AppendSeparator(); menuFile->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT), wxT("Quits the application")); @@ -137,6 +138,7 @@ void BombsFrame::NewGame(int level, bool query) } int numHorzCells = 20, numVertCells = 20; + m_lastLevel = level; switch(level) { @@ -157,7 +159,7 @@ void BombsFrame::NewGame(int level, bool query) break; } - m_game->Init(numHorzCells, numVertCells); + m_game->Init(numHorzCells, numVertCells, m_easyCorner); GetMenuBar()->Check(level, true); @@ -172,21 +174,50 @@ void BombsFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxT("About wxBombs") ); } -void BombsFrame::OnNewEasyGame(wxCommandEvent& WXUNUSED(event)) +void BombsFrame::OnNewGame(wxCommandEvent& WXUNUSED(event)) +{ + NewGame(m_lastLevel, true); +} + +void BombsFrame::OnEasyGame(wxCommandEvent& WXUNUSED(event)) { NewGame(bombsID_EASY, true); } -void BombsFrame::OnNewMediumGame(wxCommandEvent& WXUNUSED(event)) +void BombsFrame::OnMediumGame(wxCommandEvent& WXUNUSED(event)) { NewGame(bombsID_MEDIUM, true); } -void BombsFrame::OnNewHardGame(wxCommandEvent& WXUNUSED(event)) +void BombsFrame::OnHardGame(wxCommandEvent& WXUNUSED(event)) { NewGame(bombsID_HARD, true); } +void BombsFrame::OnEasyCorner(wxCommandEvent& WXUNUSED(event)) +{ + wxString msg; + if(m_easyCorner) + msg = wxT("enable"); + else + msg = wxT("disable"); + + msg = wxT("Do you really want to ") + msg + wxT(" having\ntop left corner always empty for easier start?"); + + int ok = wxMessageBox( + msg, + wxT("Confirm"), + wxYES_NO | wxICON_QUESTION, + this + ); + + if(ok!=wxYES)return; + + m_easyCorner = !m_easyCorner; + + NewGame(m_lastLevel, true); +} + BEGIN_EVENT_TABLE(BombsCanvas, wxPanel) EVT_PAINT(BombsCanvas::OnPaint) EVT_MOUSE_EVENTS(BombsCanvas::OnMouseEvent) @@ -202,7 +233,7 @@ BombsCanvas::BombsCanvas(wxFrame *parent, BombsGame *game) wxFont font= BOMBS_FONT; dc.SetFont(font); - long chw, chh; + wxCoord chw, chh; wxString buf = wxT("M"); dc.GetTextExtent(buf, &chw, &chh); @@ -284,7 +315,7 @@ void BombsCanvas::UpdateGridSize() delete m_bmp; m_bmp = NULL; } - + SetSize(GetGridSizeInPixels()); Refresh(); }