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

上传人:仙人指路1688 文档编号:2387071 上传时间:2023-02-17 格式:DOC 页数:18 大小:192.50KB
返回 下载 相关 举报
java课程设计报告俄罗斯方块.doc_第1页
第1页 / 共18页
java课程设计报告俄罗斯方块.doc_第2页
第2页 / 共18页
java课程设计报告俄罗斯方块.doc_第3页
第3页 / 共18页
java课程设计报告俄罗斯方块.doc_第4页
第4页 / 共18页
java课程设计报告俄罗斯方块.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《java课程设计报告俄罗斯方块.doc》由会员分享,可在线阅读,更多相关《java课程设计报告俄罗斯方块.doc(18页珍藏版)》请在三一办公上搜索。

1、 JAVA程序设计课程设计 之 俄罗斯方块学院:计算机年级:09级 班级:网络工程1班 时间:2011年12月15日目录摘要1第一章 课程设计要求2第二章 设计概要32.1 功能设计32.2 程序系统功能模块32.3 功能分析42.3.1 功能流程图42.3.2 系统操作界面52.3.3 程序主要功能说明51.界面按钮设计和功能的实现5第三章 调试分析与测试结果133.1 游戏运行界面133.2 测试项目133.2.1 功能区按键测试133.2.2 键盘功能测试143.2.3 计分与过关测试143.2.4 游戏结束测试14第四章 设计总结154.1 改进意见154.2 Java课程设计心得体会

2、15第五章 参考文献16摘要在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。俄罗斯方块(Tetris, 俄文:)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 为此,我们设计了一款简单的俄罗斯方块JAVA游戏程序,以便更好的满足广大电脑工作者闲暇

3、之余的消遣,并且也让我们学到编程技术与团队意识。关键字:俄罗斯方块、JAVA游戏、编程第一章 课程设计要求题目名称:俄罗斯方块题目类型:设计型课程设计目的: 1)了解Java的基本使用方法。 2)熟悉eclipse的运行环境。 3)用JAVA面向对象的方法来设计一个俄罗斯方块的小游戏。 4)基本实现俄罗斯方块的应用功能。实验原理:JAVA程序分析与设计、类的灵活运用、多态技术、模板技术、异常处理等。实验内容:本俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,每关方块下落的速度不

4、同,若在游戏中各形状填满了给定区域,为输者。 第二章 设计概要2.1 功能设计本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。项目需求分析如下:1)由方块组成的不同的随机图形会从区域上方开始缓慢落下。2)玩家可以做的操作有: 以90度为单位旋转方每一格块。以格子为单位左右移动方块,让方块加速落下。3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。4)当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。5)当固定的方块堆到区域最上方,则游戏结束。2.2 程序系统功能模块俄罗斯方块游戏

5、游戏区游戏控制显示玩家操作显示操作结果开始暂停/继续停止退出保存高分2.3 功能分析2.3.1 功能流程图:处理玩家操作是否到顶部开始 定义画布 创建游戏区游戏开局随机选择方块类型是否到顶部方块下落一行游戏结束是否2.3.2 系统操作界面2.3.3 程序主要功能说明1.界面按钮设计和功能的实现代码:class ControlPanel extends JPanel/* * */private static final long serialVersionUID = 1L;protected static final String DO_NOTHING_ON_CLOSE = null;prote

6、cted static final Frame Frame = null;protected static final int INFORMATION_MESSAGE = 0;private JTextField tfLevel = new JTextField( + ErsBlocksGame.initlevel),/初始级别 tfScore = new JTextField(0);/初始得分private JButtonbtList=new JButton(保存高分),btAbout=new JButton(关于), btPlay = new JButton(开始), btPause =

7、new JButton(暂停), btStop = new JButton(停止), btExit=new JButton(退出);private JPanel showbefore = new JPanel(new BorderLayout();/设置显示下一个图案的容器private ShowBeforePanel plShowBeforeBlock = new ShowBeforePanel();private JPanel plInfo = new JPanel(new GridLayout(4, 1);private JPanel plButton = new JPanel(new

8、GridLayout(5, 1);private Timer timer;private ErsBlocksGame game;public ControlPanel(final ErsBlocksGame game) setLayout(new GridLayout(3, 1, 0, 4);/设置网格的行列以及水平垂直间距this.game = game;showbefore.add(new JLabel(即将到来), BorderLayout.NORTH);/添加“即将到来”标签showbefore.add(plShowBeforeBlock);/添加下一个图案plInfo.add(new

9、 JLabel(Level);plInfo.add(tfLevel);plInfo.add(new JLabel(Score);plInfo.add(tfScore); tfLevel.setEditable(false);tfScore.setEditable(false);plButton.add(btPlay);plButton.add(btPause);plButton.add(btStop);plButton.add(btExit);plButton.add(btAbout);plButton.add(btList);add(showbefore);add(plInfo);add(p

10、lButton);addKeyListener(new ControlKeyListener();btPlay.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) game.playGame(););btPause.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) if (btPause.getText().equals(new String(暂停) game.pau

11、seGame();else game.resumeGame(););btStop.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) game.stopGame(););btExit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae)setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); int option=JOptionPane.

12、showConfirmDialog(btExit, 确定退出游戏? , 退出 ,JOptionPane.YES_NO_CANCEL_OPTION); if(option=JOptionPane.YES_OPTION) System.exit(0); else return; private void setDefaultCloseOperation(String doNothingOnClose) / TODO Auto-generated method stub);btAbout.addActionListener(new ActionListener()public void action

13、Performed(ActionEvent ae) String message= 俄罗斯方块V1.0; String title=关于; JOptionPane.showMessageDialog(Frame, message,title,INFORMATION_MESSAGE););btList.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae)JFileChooser jfc1=new JFileChooser();jfc1.setDialogTitle(保存到);jfc1.s

14、howSaveDialog(null);jfc1.setVisible(true);String url1=jfc1.getSelectedFile().getAbsolutePath();BufferedWriter bw;try bw = new BufferedWriter(new FileWriter(url1+.txt);bw.write(高分+tfScore.getText();bw.close(); catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace(););2. 背景框图形功能代码

15、:class GameCanvas extends JPanel /画布类/* * */private static final long serialVersionUID = 1L;private Color backColor = Color.WHITE, frontColor = Color.BLUE;private int rows, cols, score = 0, scoreForLevelUpdate = 0;private ErsBox boxes;private int boxWidth, boxHeight;public GameCanvas(int rows, int c

16、ols)this.rows = rows;this.cols = cols;boxes = new ErsBoxrowscols;for (int i = 0; i boxes.length; i+) for (int j = 0; j boxesi.length; j+)boxesij = new ErsBox(false); public GameCanvas(int rows, int cols, Color backColor, Color frontColor) this(rows, cols);this.backColor = backColor;this.frontColor =

17、 frontColor;public void setBackgroundColor(Color backColor)this.backColor = backColor;public Color getBackgroundColor()return backColor;public void setBlockColor(Color frontColor)this.frontColor = frontColor;public Color getBlockColor()return frontColor;public int getRows()return rows;public int get

18、Cols()return cols;public int getScore() return score;public int getScoreForLevelUpdate()return scoreForLevelUpdate;public void resetScoreForLevelUpdate()scoreForLevelUpdate -= ErsBlocksGame.everylevelscore;public ErsBox getBox(int row, int col)if (row boxes.length - 1| col boxes0.length - 1)return n

19、ull;return (boxesrowcol); public void fanning()boxWidth = getSize().width / cols;boxHeight = getSize().height / rows;public void paintComponent(Graphics g)super.paintComponent(g); g.setColor(frontColor);for (int i = 0; i boxes.length; i+)for (int j = 0; j 0; i-) for (int j = 0; j cols; j+)boxesij =

20、(ErsBox) boxesi - 1j.clone();score += ErsBlocksGame.alinescore;scoreForLevelUpdate += ErsBlocksGame.alinescore;repaint();public void reset() score = 0;scoreForLevelUpdate = 0;for (int i = 0; i boxes.length; i+) for (int j = 0; j boxesi.length; j+)boxesij.setColor(false);repaint();3. 方块自动下落功能 代码:publ

21、ic void run()/方块自动下落while (moving)try sleep(betweenleveltime * (ErsBlocksGame.maxlevel - level);/级别越高速度越快(多线程) catch (InterruptedException ie)ie.printStackTrace();if (!pausing)moving = (moveTo(y + 1, x) & moving);4. 游戏运行功能代码:private class Game implements Runnable /游戏流程!public void run() int col = (i

22、nt) (Math.random() * (canvas.getCols() - 3), style = ErsBlock.STYLES(int) (Math.random() * 7)(int)(Math.random() * 4);while (playing)if (block != null) if (block.isAlive() try Thread.currentThread();Thread.sleep(100); catch (InterruptedException ie) ie.printStackTrace();continue;checkFullLine(); if

23、(isGameOver() ctrlPanel.setPlayButtonEnable(true);ctrlPanel.setPauseButtonLabel(true);reportGameOver();return;block = new ErsBlock(style, -1, col, getLevel(), canvas);block.start();col = (int) (Math.random() * (canvas.getCols() - 3);style = ErsBlock.STYLES(int) (Math.random() * 7)(int)(Math.random()

24、 * 4);ctrlPanel.setShowBeforeStyle(style);第三章 调试分析与测试结果3.1 游戏运行界面3.2 测试项目3.2.1 功能区按键测试测试结果:开始:游戏开始,方块下落;暂停:游戏暂停;继续:游戏继续;停止:游戏停止,再按开始则重新开局;退出:游戏退出;关于:打印游戏信息;保存高分:显示保存路径选择。3.2.2 键盘功能测试测试结果:方向键“”:旋转方块;方向键“”:使方块加速下落;方向键“”:使方块左移;方向键“”:使方块右移。3.2.3 计分与过关测试测试结果:经过测试员不断的亲身游戏,本程序的计分与过关项目基本无问题,由于能力有限,只能测试到第五关。

25、3.2.4 游戏结束测试第四章 设计总结4.1 改进意见本程序中还存在一些不足之处,例如:1进一步地功能扩展,如添加音效等;2美化玩家进入游戏的界面; 3对软件进行进一步更详细的测试,以保证软件的可用性和适应性;4 利用internet 进行用户意见的收集,以加强对软件的及时更新。4.2 Java课程设计心得体会通过短短的一周的时间,我们从一个对JAVA编程懵懂的学生到现在可以试着用JAVA进行简单程序的设计与编写,虽然在实验过程中,我们遇到了许多的困难,特别是因为大多数的同学还不太适应面向对象的编程风格和思想,看待问题时总是想到用什么结构来实现该功能,而没有将问题看成一个封装的整体来考虑,所

26、以在这次课程设计中我们接触、体验了面向对象设计,使得思维在向面过程向面向对象过度。而且,在这个过程中,我们还学到了彼此之间怎么去配合,我们一致认为同伴之间的合作是最重要的。在程序的设计中,我们彼此之间在设计的选择中发生了很多的分歧,但是通过大家的讨论协商,都达到了一个共识,最后大家共同努力完成了这次设计实验。所以,首先,在这里,感谢古平老师在这周来的教导,以及感谢小组同学在这段时间里的帮助,因为有你们,才使我们这次课程设计能够预期完成老师布置的任务。其次,因为这次的学习,使我们对JAVA面向对象的编程有了深一步的了解,因为这次的课程设计,使我在今后的工作和学习中,都有了很到的启发。我想,这对于我们都是个很好的经验,因为团队合作是一种很必要的能力,每个人的能力都是有局限的,没有人能只凭借自己一个人的能力就把一件事情做好,只有通过团队中每个成员的努力,发挥自身的长处,取长补短,最后才能将其做到最好。在这次课程设计实验中,我们学到的所有东西都将让我们获益良多,不管是对于以后的学习还是工作、生活。第五章 参考文献1.JAVA程序设计朱庆生 古平主编,清华大学出版社。2.java课程设计黄明 梁旭 周绍斌编著,电子工业出版社出版。3.java课程设计案例精编黄晓东编著,中国水利水电出版社出版。4.java程序设计实用教程张永常主编,电子工业出版社出版。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号