1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
///////////////////////////////////////////////////////////////////////////////
// Name: bombs.h
// Purpose: Bombs game
// Author: P. Foggia 1996
// Modified by: Wlodzimierz Skiba (ABX) since 2003
// Created: 1996
// Copyright: (c) 1996 P. Foggia
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DEMOS_BOMBS_BOMBS_H_
#define _WX_DEMOS_BOMBS_BOMBS_H_
#include "game.h"
class BombsFrame;
/*
* Class representing the entire Application
*/
class BombsApp: public wxApp
{
public:
virtual bool OnInit();
private :
BombsFrame *m_frame;
BombsGame m_game;
};
DECLARE_APP(BombsApp)
class BombsCanvas;
class BombsFrame : public wxFrame
{
public:
BombsFrame(BombsGame *bombsGame);
void NewGame(int level, bool query);
private:
void OnNewGame(wxCommandEvent& event);
void OnEasyGame(wxCommandEvent& event);
void OnMediumGame(wxCommandEvent& event);
void OnHardGame(wxCommandEvent& event);
void OnEasyCorner(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
BombsGame *m_game;
bool m_easyCorner;
int m_lastLevel;
// Subwindows for reference within the program.
BombsCanvas *m_canvas;
DECLARE_EVENT_TABLE()
};
// App specific menu identifiers
enum
{
bombsID_LEVEL = wxID_HIGHEST,
bombsID_EASY,
bombsID_MEDIUM,
bombsID_HARD,
bombsID_EASYCORNER
};
class BombsCanvas : public wxPanel
{
public:
// Constructor and destructor
BombsCanvas(wxFrame *parent, BombsGame *game);
void UpdateGridSize();
wxSize GetGridSizeInPixels() const;
virtual ~BombsCanvas();
private:
void OnPaint(wxPaintEvent& event);
void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
void RefreshField(int xc1, int yc1, int xc2, int yc2);
void Uncover(int x, int y);
void OnMouseEvent(wxMouseEvent& event);
void OnChar(wxKeyEvent& event);
BombsGame *m_game;
wxBitmap *m_bmp;
// Cell size in pixels
int m_cellWidth;
int m_cellHeight;
DECLARE_EVENT_TABLE()
};
/* The following sizes should probably be redefined */
/* dimensions of a scroll unit, in pixels */
#define X_UNIT 4
#define Y_UNIT 4
/* the dimensions of a cell, in scroll units are in
* BombsCanvas::x_cell and y_cell
*/
#ifdef __WXWINCE__
#define BOMBS_FONT wxFont(12, wxSWISS, wxNORMAL, wxNORMAL)
#else
#define BOMBS_FONT wxFont(14, wxROMAN, wxNORMAL, wxNORMAL)
#endif
#endif // #ifndef _WX_DEMOS_BOMBS_BOMBS_H_
|