俄罗斯方块课程设计报告
一、系统概述 1.1现状分析 在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。 此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。 1.2项目要求 俄罗斯方块游戏是一款适合大众的游戏软件,它适合不同年龄的人玩。本软件要实现的功能如下: (1)游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。 (2)游戏控制:玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。 (3) 级别设置:玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏的速度越快,难度越大。 (4) 系统功能模块示意图如下: 俄罗斯方块游戏 游戏区 游戏控制 显示玩家操作 显示操作结果 开始 暂停/继续 提高等级 退出 降低等级 二、设计说明 2.1游戏区模块 游戏区模块 创建游戏区 处理玩家游戏操作 显示游戏结果 2.2控制区模块 游戏控制模块 开始游戏 暂停游戏 初始级别设置 退出游戏 2.3系统流程图 是否到顶部 处理玩家操作 开始 设置初始级别 创建游戏区 游戏开局 随机选择方块类型 是否到顶部 方块下落一行 游戏结束 是 否 2.4系统操作界面 游戏打开界面 游戏进行中界面 三、源程序编码 import javax.swing.*; import java.awt.*; import javax.swing.border.Border; import java.awt.event.*; public class ErsBlocksGame extends JFrame { public final static int alinescore = 100; public final static int everylevelscore = alinescore * 20; public final static int maxlevel = 10; public final static int initlevel = 5; private GameCanvas canvas; private ErsBlock block; private boolean playing = false; private ControlPanel ctrlPanel; private JMenuBar bar = new JMenuBar(); private JMenu mGame = new JMenu(“游戏“), mControl = new JMenu(“控制“), mhelp = new JMenu(“帮助“); private JMenuItem miNewGame = new JMenuItem(“新游戏“), milevelup = new JMenuItem(“提高级数“), mileveldown = new JMenuItem(“降低级数“), miExit = new JMenuItem(“退出“), miPlay = new JMenuItem(“开始“), miPause = new JMenuItem(“暂停“), miResume = new JMenuItem(“重新开始“), miStop = new JMenuItem(“停止“), miCtrlBlock = new JMenuItem(“方块控制键“); public ErsBlocksGame(String title) { super(title); setSize(315, 392); Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((scrSize.width - getSize().width) / 2, (scrSize.height - getSize().height) / 2); createMenu(); Container container = getContentPane(); container.setLayout(new BorderLayout(6, 0)); canvas = new GameCanvas(20, 12); ctrlPanel = new ControlPanel(this); container.add(canvas, BorderLayout.CENTER); container.add(ctrlPanel, BorderLayout.EAST); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { stopGame(); System.exit(0); } }); addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent ce) { canvas.fanning(); } }); show(); canvas.fanning(); } private void createMenu() { bar.add(mGame); bar.add(mControl); bar.add(mhelp); mGame.add(miNewGame); mGame.addSeparator(); mGame.add(milevelup); mGame.addSeparator(); mGame.add(mileveldown); mGame.addSeparator(); mGame.add(miExit); mControl.add(miPlay); mControl.addSeparator(); mControl.add(miPause); mControl.addSeparator(); mControl.add(miResume); mControl.addSeparat