java俄罗斯方块设计报告,俄罗斯方块课程设计报告

《俄罗斯方块课程设计报告》由会员分享,可在线阅读,更多相关《俄罗斯方块课程设计报告(26页珍藏版)》请在人人文库网上搜索。

1、一、系统概述1.1现状分析在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。1.2项目要求俄罗斯方块游戏是一款适合大众的游戏软件,它适合不同年龄的人玩。本软件要实现的功能如下:(1)游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。(2)游戏控制:玩家可以通过游戏控制功能来选择开始新的一局。

2、游戏,暂停或退出游戏。(3) 级别设置:玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏的速度越快,难度越大。(4) 系统功能模块示意图如下:俄罗斯方块游戏游戏区游戏控制显示玩家操作显示操作结果开始暂停/继续提高等级退出降低等级二、设计说明2.1游戏区模块游戏区模块创建游戏区处理玩家游戏操作显示游戏结果2.2控制区模块游戏控制模块开始游戏暂停游戏初始级别设置退出游戏2.3系统流程图是否到顶部处理玩家操作开始设置初始级别创建游戏区游戏开局随机选择方块类型是否到顶部方块下落一行游戏结束是否2.4系统操作界面游戏打开界面 游戏进行中界面三、源程序编码import javax.swing.。

3、*;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;privat。

4、e GameCanvas canvas;private ErsBlock block;private boolean playing = false;private ControlPanel ctrlPanel;private JMenuBar bar = new JMenuBar();private JMenumGame = new JMenu(游戏),mControl = new JMenu(控制),mhelp = new JMenu(帮助);private JMenuItemmiNewGame = new JMenuItem(新游戏),milevelup = new JMenuItem(。

5、提高级数),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 = 。

6、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);cont。

7、ainer.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();。

8、 );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.。

9、add(miPause);mControl.addSeparator();mControl.add(miResume);mControl.addSeparator();mControl.add(miStop);mhelp.add(miCtrlBlock);setJMenuBar(bar);miNewGame.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) stopGame();reset();setLevel(initlevel););mileveldown.addAction。

10、Listener(new ActionListener() public void actionPerformed(ActionEvent ae)int curLevel = getLevel();if (curLevel 1) setLevel(curLevel - 1););milevelup.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae)int curLevel = getLevel();if (curLevel 1) setLevel(curLevel+1););miE。

11、xit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) System.exit(0););miPlay.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae)playGame(););miPause.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae)paus。

12、eGame(););miResume.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae)resumeGame(););miStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae)stopGame(););miCtrlBlock.addActionListener(new ActionListener() public void actionPerformed(Act。

13、ionEvent ae) reportGameMethod(););public void reset() ctrlPanel.reset(); canvas.reset(); public boolean isPlaying() return playing;public ErsBlock getCurBlock()return block;public GameCanvas getCanvas()return canvas;public void playGame()play();ctrlPanel.setPlayButtonEnable(false);miPlay.setEnabled(。

14、false);ctrlPanel.requestFocus();public void pauseGame() if (block != null) block.pauseMove();ctrlPanel.setPauseButtonLabel(false);miPause.setEnabled(false);miResume.setEnabled(true);public void resumeGame() if (block != null)block.resumeMove();ctrlPanel.setPauseButtonLabel(true);miPause.setEnabled(t。

15、rue);miResume.setEnabled(false);ctrlPanel.requestFocus();public void stopGame()playing = false;if (block != null)block.stopMove();miPlay.setEnabled(true);miPause.setEnabled(true);miResume.setEnabled(false);ctrlPanel.setPlayButtonEnable(true);ctrlPanel.setPauseButtonLabel(true);public int getLevel() 。

16、return ctrlPanel.getLevel();public void setLevel(int level)if (level 0) ctrlPanel.setLevel(level);public int getScore() if (canvas != null)return canvas.getScore();return 0;public int getScoreForLevelUpdate()if (canvas != null) return canvas.getScoreForLevelUpdate();return 0;public boolean levelUpda。

17、te()int curLevel = getLevel();if (curLevel 1)tfLevel.setText( + (level - 1); catch (NumberFormatException e) requestFocus(););addComponentListener(new ComponentAdapter() public void componentResized(ComponentEvent ce)plShowBeforeBlock.fanning(););timer = new Timer(500, new ActionListener() public vo。

18、id actionPerformed(ActionEvent ae) tfScore.setText( + game.getScore();int scoreForLevelUpdate =game.getScoreForLevelUpdate();if (scoreForLevelUpdate = ErsBlocksGame.everylevelscore& scoreForLevelUpdate 0)game.levelUpdate(););timer.start();public void setShowBeforeStyle(int style)plShowBeforeBlock.se。

19、tStyle(style);public int getLevel() int level = 0;try level = Integer.parseInt(tfLevel.getText(); catch (NumberFormatException e) return level;public void setLevel(int level) if (level 0 & level = 1;public void fanning() boxWidth = getSize().width / ErsBlock.boxes_cols;boxHeight = getSize().height /。

20、 ErsBlock.boxes_rows;isTiled = true;private class ControlKeyListener extends KeyAdapterpublic void keyPressed(KeyEvent ke)if (!game.isPlaying() return;ErsBlock block = game.getCurBlock();switch (ke.getKeyCode()case KeyEvent.VK_DOWN:block.moveDown();break;case KeyEvent.VK_LEFT:block.moveLeft();break;。

21、case KeyEvent.VK_RIGHT:block.moveRight();break;case KeyEvent.VK_UP:block.turnNext();break;default:break;class GameCanvas extends JPanel private Color backColor = Color.gray, frontColor = Color.green;private int rows, cols, score = 0, scoreForLevelUpdate = 0;private ErsBox boxes;private int boxWidth,。

22、 boxHeight;public GameCanvas(int rows, int cols)this.rows = rows;this.cols = cols;boxes = new ErsBoxrowscols;for (int i = 0; i boxes.length - 1| col boxes0.length - 1)return null;return (boxesrowcol);public void fanning()boxWidth = getSize().width / cols;boxHeight = getSize().height / rows;public vo。

23、id paintComponent(Graphics g)super.paintComponent(g);g.setColor(frontColor);for (int i = 0; i 0; i-) for (int j = 0; j = 1;display();public void run()while (moving)try sleep(betweenleveltime* (ErsBlocksGame.maxlevel - level + flatgene); catch (InterruptedException ie)ie.printStackTrace();if (!pausin。

24、g)moving = (moveTo(y + 1, x) & moving);public void moveLeft() moveTo(y, x - 1);public void moveRight()moveTo(y, x + 1);public void moveDown()moveTo(y + 1, x);public void turnNext()for (int i = 0; i blockkindnum; i+) for (int j = 0; j blockstatusnum; j+)if (STYLESij = style)int newStyle = STYLESi(j +。

25、 1) % blockstatusnum;turnTo(newStyle);return;public void pauseMove() pausing = true;public void resumeMove()pausing = false;public void stopMove() moving = false;private void earse() for (int i = 0; i boxes.length; i+) for (int j = 0; j boxesi.length; j+)if (boxesij.isColorBox()ErsBox box = canvas.getBox(i + y, j + x);if (box = null)continue;box.setColor(false);private void display() for (int i = 0; i boxes.length; i+)for (int j = 0; j boxesi.length; j+)if (boxesij.isColorBox()ErsBox box = canvas.getBox(y + i, x + j);if (box = null) continue;box.setColor(true。

毕业设计开题报告 计算机科学与技术 基于JAVA俄罗斯方块游戏设计与实现 1. 综述本课题国内外研究动态,说明选题的依据和意义 本课题国内外动态: 学校现已开设的课程有C语言、VB、C++,自己本身自学了Java,就目前了解,可用J ave,VB和C++编写俄罗斯方块程序。 (1)VB的优点 VB是完全中文化的环境使用,语句生成器和快速提示帮助使用户不必记忆成千上万的 属性和方法,在较短的时间内就能开发出功能强大的应用程序。Internet应用程序的开 发功能更加强大和容易,支持动态HTML技术的应用程序。应用程序安装向导能帮助用户 自动生成具有一定功能的应用程序,加快了程序的开发速度。 (2)C++的优点 C++是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从SIMULA 67中吸取了类,从ALGOL 68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和 Clu的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用//表示注释。 (3)Java的优点 Java是定义位于网络计算的计算机语言,它几乎所有的特点也是围绕着这一中心展开 的并为之服务的,这些特点使得Java语言特别适全于用来开发网络上的应用程序;另外 ,作为一种面世较晚的语言,Java也集中体现和充分利用了当代软件技术新成果,如面 向对象、多线程等,这些也都在它的特点中有所反映。 1.开台无关性 如前所述,Java语言独特的运行机制使得它具有良好的二进制级的可移植性,利用J ava,开发人员可以编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维 护和管理的开销。 2.面向对象 Java是面向对象的编程语言。面向对象技术较好地适应了当今软件开发过程中新出现 的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大、升级加快、维 护量增大经及开发分工日趋细化、专业化和标准化等,是一种迅速成熟、推广的软件开 发方法。面向对象技术的核心是以更接近人类思维的方式建立计算机逻辑模型,它利用 类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使反 映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程 序的可维护性和可重用性,大大提高了开发效率和程序的可管理性,使得面向过程语言 难于操纵的大规模软件可以很方便的创建、使用和维护。 3.安全稳定 对网络上应用程序的另一个需求是较高的安全可靠性。用户通过网络获取并在本地运 行的应用程序必须是可依赖的,不会充当病毒或其他恶意操作的传播者而攻击用户本地 的资源;同时它还应该是稳定的,轻易不会产生死机等错误,使得用户乐于使用。 4.支持多线程 多线程是当今软件技术的又一重要成果,已成功应用在操作系统、应用开发等多个领 域。多程序技术允许同一个程序有两个执行线索,即同时做两件事情,满足了一些复杂 软件的需求。Java不但内置多线程功能,而且提供语言级的多线程支持,即定义了一些 用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单、容易和 有效。 5.简单易学 如前所述,衍生自C++的Java语言,出于安全稳定性的考虑,去除了C++中不容不得易 理解和掌握的部分,如最典型的指针操作等,降低了学习的难度;同时 Java还有一个特 点就是它的基本语法部分与C语言几乎一模一样。这样,无论是学过Java再学C,还是已 经掌握了C语言再业学Java,都会感到易于入门。 选题的依据和意义: 俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造 成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人 Alex Pajitnov 制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶 不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在 PC 机上,而中国的用户都是通过红白机了解、喜欢上它的。现在远航游戏中心又将重新掀 起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游 戏过程变化无穷,而在 "远航游戏中心俄罗斯方块"中,更有一些远航游戏中心网络游戏所独有的魅力――有单机 作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制, 使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。有研 究者发现玩俄罗斯方块游戏有助于防止创伤后应激障碍的发生,可能是这个游戏能够对 大脑储存视觉记忆的功能产生干扰,从而保护病人免受创伤后应激反应的影响 。在了解自己对各个语言编程能力了解后,经过再三比较了三种语言后,决定采用Java 语言编写俄罗斯方块。 二、研究的基本内容,拟解决的主要问题: 研究的基本内容: 1.学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值