本文介绍一个简单的扫雷游戏例子,屏幕抓图如下。
可执行的jar文件(j2sdk1.4.2_08编译打包,包括源代码):附件:jMine.jar(20K)
『要解决的问题』 1. 地雷,标识棋等图形的绘制; 2. 游戏数据(地雷位置)的产生; 3. 非地雷格子显示数字的计算; 4. 游戏逻辑 『包中源文件列表』 - hysun.minegame -- ConfigDialog.java -- FieldCell.java -- GameFrame.java -- GamePanel.java -- GraphicsUtil.java
- ConfigDialog(extends JDialog)是配置游戏数据(雷场行列数,地雷数目)的对话框,就不多说了。
- GameFrame(extends JFrame)只是提供一个应用窗口,也不说了。
- GraphicsUtil提供图形绘制方法。
- FieldCell代表一个格子。
- GamePanel(extends JComponent implements MouseListener)代表整个雷场,并且控制游戏逻辑。
『GraphicsUtil』
该类提供static方法,绘制游戏中各种图形,并且将格子大小设成32x32。详情如下表所列:
未知区域 [蓝色区域] |
.... public static Color ukcolor = new Color(99, 130, 191); .... public static void drawUnknown(Graphics g, int x, int y) { g.setColor(ukcolor); g.fillRect(x, y, 32, 32); } |
地雷 | .... public static Color mbcolor = new Color(90, 90, 90); .... public static void drawMine(Graphics g, int x, int y) { g.clearRect(x, y, 32, 32); g.setColor(mbcolor); g.fillOval(x+5, y+9, 21, 19); g.setColor(Color.black); g.fillRect(x+11, y+5, 10, 6); } |
地雷标识旗 [小红旗] |
.... public static void drawFlag(Graphics g, int x, int y) { g.clearRect(x, y, 32, 32); g.setColor(Color.red); g.fillRect(x+8, y+8, 16, 10); g.setColor(Color.black); g.drawLine(x+8, y+8, x+8, y+24); g.drawLine(x+9, y+8, x+9, y+24); } |
非地雷格数字(0-8) |