JAVA程序设计课程设计
之
俄罗斯方块
年级:13级
班级:T412 网络工程
指导老师:朱林
小组成员:
20138346021 许浩洋
时间:2015年11月11日
摘要
在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。俄罗斯方块(Tetris, 俄文:Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 为此,我们设计了一款简单的俄罗斯方块JAVA游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我们学到编程技术与团队意识。
关键字:俄罗斯方块、JAVA游戏、编程
第1章 课程设计要求
题目名称:俄罗斯方块
题目类型:设计型
课程设计目的:
1)了解Java的基本使用方法。
2)熟悉eclipse的运行环境。
3)用JAVA来设计一个俄罗斯方块的小游戏。
4)基本实现俄罗斯方块的应用功能。
实验原理:
JAVA程序分析与设计、类的灵活运用、多态技术、模板技术、异常处理等。
实验内容:
本俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z字形、反Z形、田字形、L字形、反L形、T字型)下落填充给定的区域,若填满一条便消掉,记分。若在游戏中各形状填满了给定区域,为输者。
第二章 设计概要
2.1 功能设计
本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。项目需求分析如下:
1)由方块组成的不同的随机图形会从区域上方开始缓慢落下。
2)玩家可以做的操作有:
以90度为单位旋转方每一格块。
以格子为单位左右移动方块,让方块加速落下。
3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。
4)当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。
5)一次性销毁不同行数方块得分不同,一行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;
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 Cell[ROWS][COLS];
//定义每一小块的大小
private static final int CELL_SIZE = 25;
简单的java游戏代码//游戏得分
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 ;
//定义游戏定时器
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.setLayout(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);
//绘制面板边框
paintTetrisBorder(g);
//绘制当前四格方块
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论