java课程设计报告-俄罗斯方块(共21页).doc
《java课程设计报告-俄罗斯方块(共21页).doc》由会员分享,可在线阅读,更多相关《java课程设计报告-俄罗斯方块(共21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 JAVA程序设计课程设计 之 俄罗斯方块年级:13级 班级:T412 网络工程指导老师:朱林小组成员: 许浩洋 时间:2015年11月11日目录专心-专注-专业摘要在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。俄罗斯方块(Tetris, 俄文:)是一款风靡全球的电视和掌上游戏机游戏,它由俄罗斯人发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得
2、分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 为此,我们设计了一款简单的俄罗斯方块JAVA游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我们学到编程技术与团队意识。关键字:俄罗斯方块、JAVA游戏、编程第一章 课程设计要求题目名称:俄罗斯方块题目类型:设计型课程设计目的: 1)了解Java的基本使用方法。 2)熟悉eclipse的运行环境。 3)用JAVA来设计一个俄罗斯方块的小游戏。 4)基本实现俄罗斯方块的应用功能。实验原理:JAVA程序分析与设计、类的灵活运用、多态技术、模板技术、异常处理等。实验内容:本俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z字形、反Z
3、形、田字形、L字形、反L形、T字型)下落填充给定的区域,若填满一条便消掉,记分。若在游戏中各形状填满了给定区域,为输者。 第二章 设计概要2.1 功能设计本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。项目需求分析如下:1)由方块组成的不同的随机图形会从区域上方开始缓慢落下。2)玩家可以做的操作有: 以90度为单位旋转方每一格块。以格子为单位左右移动方块,让方块加速落下。3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在上方开始落下。4)当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。5)一次性
4、销毁不同行数方块得分不同,一行1分,两行2分,三行5分,四行10分。6)当固定的方块堆到区域最上方,则游戏结束。处理玩家操作2.2 功能分析2.2.1 系统操作界面2.2.2 程序主要功能说明1.面板画笔类代码:package Tetris;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Arrays;import java.util.Timer;
5、import java.util.TimerTask;import javax.swing.JFrame;import javax.swing.JPanel;public class TetrisPanel extends JPanel/游戏主面板20行10列private static final int ROWS = 20;private static final int COLS = 10;/代表方块着陆的墙private Cell wall = new CellROWSCOLS;/定义每一小块的大小private static final int CELL_SIZE = 25;/游戏得
6、分private int score;/游戏销毁行数private int lines;/一次性销毁行数的计分标准(0行=0分,1行=1分,2行=4分,3行=10分,4行=20分)private static final int SCORE_LEVEL =0,1,4,10,20;/游戏结束标记private boolean gameOver = false;/游戏暂停标记private boolean pause = false;/正在下落的四格方块private Tetromino currentTetro ;/下一个下落的四格方块private Tetromino nextTetro ;/
7、定义游戏定时器private Timer timer;public static void main(String args)JFrame frame = new JFrame(俄罗斯方块);int width = (COLS+8)*CELL_SIZE+100;int height = ROWS*CELL_SIZE+100;frame.setSize(width, height);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/取消系统默认布局frame.setLay
8、out(null);TetrisPanel panel = new TetrisPanel();panel.setLocation(45, 35);panel.setSize(COLS+8)*CELL_SIZE,ROWS*CELL_SIZE+1);frame.add(panel);frame.setVisible(true);panel.action();public void paint(Graphics g)super.paint(g);/填充背景颜色this.paintBackground(g);/绘制游戏墙paintWall(g);/绘制分数墙paintScore(g);/绘制面板边框
9、paintTetrisBorder(g);/绘制当前四格方块paintCurrentTetro(g);/绘制下个四格方块paintNextTetro(g); /private static final int BG_COLOR = 0xC3D5EA;/private static final int BORDER_COLOR = 0x;/private static final int FONT_COLOR = 0x;/绘制背景的方法public void paintBackground(Graphics g)g.setColor(new Color(BG_COLOR);/this.setBa
10、ckground(new Color(BG_COLOR);g.fillRect(0, 0, this.getWidth(), this.getHeight();/绘制游戏墙的方法public void paintWall(Graphics g)for(int row=0;rowROWS;row+)for(int col=0;colCOLS;col+)Cell cell = wallrowcol;int x =col*CELL_SIZE;int y= row*CELL_SIZE;if(cell=null)g.setColor(new Color(BORDER_COLOR);g.drawRect(
11、x, y, CELL_SIZE, CELL_SIZE);elseg.setColor(new Color(cell.getColor();g.fillRect(x, y, CELL_SIZE, CELL_SIZE);g.setColor(new Color(BORDER_COLOR);g.drawRect(x, y, CELL_SIZE, CELL_SIZE);/绘制分数墙的方法public void paintScore(Graphics g)int x = 12*CELL_SIZE;int y = 6*CELL_SIZE;Font font = new Font(楷体,Font.BOLD,
12、23);String msg =分数:+score;g.setColor(new Color(FONT_COLOR);g.setFont(font);g.drawString(msg, x, y);y+=2*CELL_SIZE;msg = 行数:+lines;g.drawString(msg, x, y);if(gameOver)msg = (T_T)【S】再来;y+=2*CELL_SIZE;x-=CELL_SIZE;g.drawString(msg, x, y);else if(pause)msg = 【C】继续;y+=2*CELL_SIZE;g.drawString(msg, x, y);
13、elsemsg = 【P】暂停;y+=2*CELL_SIZE;g.drawString(msg, x, y);/绘制面板边框的方法public void paintTetrisBorder(Graphics g)g.setColor(new Color(BORDER_COLOR);g.drawRect(0, 0, CELL_SIZE*(COLS+8)-1, CELL_SIZE*ROWS);/绘制当前四格方块的方法public void paintCurrentTetro( Graphics g)if(currentTetro=null)/如果没有四格方块,则返回不绘画return;for(Ce
14、ll cell:currentTetro.cells)int row = cell.getRow();int col = cell.getCol();int x = col*CELL_SIZE;int y = row*CELL_SIZE;g.setColor(new Color(cell.getColor();g.fillRect(x, y, CELL_SIZE, CELL_SIZE);g.setColor(new Color(BORDER_COLOR);g.drawRect(x, y, CELL_SIZE, CELL_SIZE);/绘制下个四格方块的方法public void paintNe
15、xtTetro( Graphics g)if(nextTetro=null)/如果没有四格方块,则返回不绘画return;for(Cell cell:nextTetro.cells)int row = cell.getRow();int col = cell.getCol();int x = (col+9)*CELL_SIZE;int y = (row+1)*CELL_SIZE;g.setColor(new Color(cell.getColor();g.fillRect(x, y, CELL_SIZE, CELL_SIZE);g.setColor(new Color(BORDER_COLOR
16、);g.drawRect(x, y, CELL_SIZE, CELL_SIZE);/让四格方块动起来的方法public void action()startGameAction();/请求此容器获取输入焦点this.requestFocus();this.addKeyListener(new KeyAdapter()public void keyPressed(KeyEvent e)int key= e.getKeyCode();if(gameOver)if(key=KeyEvent.VK_S)startGameAction();return;if(pause)if(key=KeyEvent.
17、VK_C)continueAction();return;switch(key)case KeyEvent.VK_DOWN:softDownAction();break;case KeyEvent.VK_LEFT:moveLeftAction();break;case KeyEvent.VK_RIGHT:moveRightAction();break;case KeyEvent.VK_UP:rotateRightAction();break;case KeyEvent.VK_SPACE:hardDownAction();break;case KeyEvent.VK_P:pauseAction(
18、);break;repaint();/暂停游戏的方法private void pauseAction() pause = true;timer.cancel();/继续游戏的方法private void continueAction() pause = false;timer = new Timer();timer.schedule(new TimerTask() public void run() softDownAction();repaint();, 500, 500););/在游戏开始时调用或者【S】按下时调用public void startGameAction()gameOver
19、= false;pause = false;score = 0;lines = 0;/清空游戏主面板emptyWall();/生成下一个四格方块nextTetromino();/生成定时器对象timer = new Timer();/启动定时器工作timer.schedule(new TimerTask() public void run() /调用面板的四格方块下落方法(自由下落)softDownAction();/重画面板repaint();, 500, 500);/清空游戏主面板方法public void emptyWall()for(int row =0;rowROWS;row+)/w
20、allrow这一行全部用null表示Arrays.fill(wallrow, null);/生成(随机)下一个四格方块,1.下一个变成当前的。2.随机生成下一个。public void nextTetromino()if(nextTetro=null)/第一次nextTetro是null时就随机生成一个nextTetro = Tetromino.randomTetromino();/下一个四格方块立即变成当前四格方块currentTetro = nextTetro;nextTetro = Tetromino.randomTetromino();/四格方块下落流程,方块移动到区域最下方或者移动到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告 俄罗斯方块 21
限制150内