void minerFrame::OnPanel1LeftDown(wxMouseEvent& event) { wxPaintDC z(Panel1); // об'єкт для малювання клітин z.SetPen(wxPen(wxColor(200,200,200),2)); wxColour c[10]; c[0].Set(wxT("#eeeeee"));// білий колір c[1].Set(wxT("#0000ee"));// синій колір c[2].Set(wxT("#008800"));// зелений колір c[3].Set(wxT("#daa520"));// золотарний колір goldenrod c[4].Set(wxT("#800080"));// фіолетовий колір c[5].Set(wxT("#ee0000"));// червоний колір c[6].Set(wxT("#808000"));// оливковий колір c[7].Set(wxT("#4b0082"));// колір індиго c[8].Set(wxT("#8b4513"));// сідельно коричневий колір saddle brown c[9].Set(wxT("#808080"));// сірий колір - для невиявленої міни wxString s[10]={wxT(" "),wxT("1"),wxT("2"),wxT("3"),wxT("4"),wxT("5"),wxT("6"),wxT("7"),wxT("8"),wxT("●")};// ☼ цифри + міна wxFont font (20,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,"Ubuntu Calibri"); z.SetFont(font); // встановлення властивостей шрифту // координати вказівника миші: wxPoint pt = wxGetMousePosition(); // на екрані int x = pt.x - this -> GetScreenPosition().x-15; // на панелі int y = pt.y - this -> GetScreenPosition().y-60; j=y/30 + 1; k=x/30 + 1; if (d[j][k]) // якщо клітину зафарбовано зеленим кольором { d[j][k]=false; if (b[j][k]) // якщо клітина містить міну { z.DrawRectangle((k-1)*30,(j-1)*30,30,30); z.SetTextForeground(*wxRED); z.DrawText(s[9],(k-1)*30+3,(j-1)*30-3); for (j=1; j<=ny; j++) for (k=1; k<=nx; k++) if (d[j][k]) { z.DrawRectangle((k-1)*30,(j-1)*30,30,30); if (d[j][k]) { if (b[j][k]) { z.SetTextForeground(c[9]); z.DrawText(s[9],(k-1)*30+3,(j-1)*30-3); } else { z.SetTextForeground(c[a[j][k]]); z.DrawText(s[a[j][k]],(k-1)*30+5,(j-1)*30); } } } Panel1 -> Update(); sleep(2); wxMessageDialog *d0 = new wxMessageDialog(NULL,wxT("Ви програли!"), wxT("Гра «Сапер»"),wxOK); d0->ShowModal(); } else if (a[j][k]==0) { l=1; // кількість клітин, які потрібно відкрити l0=0;// кількість клітин з розглянутими сусідами u[0]=j; v[0]=k; while (l0 Update(); sleep(2); wxMessageDialog *d0 = new wxMessageDialog(NULL,wxT("Ви виграли!"), wxT("Гра «Сапер»"),wxOK); d0->ShowModal(); for (j=1; j<=ny; j++) for (k=1; k<=nx; k++) d[j][k]=false; } } }