俄罗斯方块设计思想

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南京邮电大学

通达学院

算法与数据结构设计报告( 2016/ 2017学年第二学期)

专业软件工程嵌入式

学号姓名

学号姓名

学号姓名

学号姓名

指导教师陈兴国

指导单位计算机学院计算机科学与技术系

日期2017-5-26

俄罗斯方块

一、课题内容

实现俄罗斯方块游戏。主要功能为游戏界面显示、上下左右键响应以及当前得分统计。通过该课题全面熟悉数组、字符串等的使用。掌握设计的基本方法及友好界面的设计。

课题要求:

1、游戏界面显示:下落方块和方块堆、左右移动、旋转、删除行等特效以及得分。

2、动作选择:上下左右键对应于旋转、加速、左右移动的功能。

3、得分统计判断:判定能否消除行、并统计得分总数等。

扩展要求:

1、用户数据管理。

二、算法设计与分析

I、俄罗斯方块游戏需要解决的问题包括

(1)、随机产生方块并自动下移

(2)键变体

(3)Q退出,按space暂停

II

(1)、声明俄罗斯方块的结构体

(2)、函数原型声明

(3)、制作游戏窗口

(4)、制作俄罗斯方块

(5)、判断是否可动

(6)、随机产生俄罗斯方块类型序号

(7)、判断是否满行并删除满行的俄罗斯方块

(8)暂停,继续功能

(9)新游戏创建

(10)用户的创建,分数用户名的保存,查看分数

Tetris类(主要类)

该类包含m a i n方法,应为应用程序的主类。该类用来创建游戏的用户界面,事件处理功能和menu餐单,用户信息的存储。整个程序从该类的m a i n方法开始执行。

成员变量:String userName;

构造方法:Tetris

内部类:Members,Tetrisblock

Tetrisblok类:

用来设计游戏界面。游戏界面显示在由Tetrisblok类创建的整个用户界面的中(Center)区,游戏的即时分数、方块的效果图及方的预览功能都在整个类里面实现。用来封装俄罗斯小方块。一个方块的属性是由方块1位置即x和y的坐标、颜色决定的。

成员变量

private int blockType;

Timer timer=null;

private int turnState;

private int x;

private int y;

private int i = 0;

int j = 0;

static int score = 0;

int flag = 0;

int delay=1000;

// 定义已经放下的方块x=0-12,y=0-22;

int[][] map = new int[14][24];

// 方块的形状第一组代表方块类型有S、Z、L、J、I、O、T 7种第二组代表旋转几次第三四组为方块矩阵

private final int shapes[][][]

成员方法:public void newblock()

public void drawwall()

public void newmap()

public void newgame()

public void turn();

public void left(); public void right(); public void down() ; public int blow(int x, int y, int blockType, int turnState); public void delline() ; public int gameover(int x, int y); public void add(int x, int y, int blockType, int turnState); public void paintComponent(Graphics g); public void keyPressed(KeyEvent e); public void keyTyped(KeyEvent e)

Members类:

用来创建io流,在D盘中查找username.txt文件,如果没有就创建。并且在username 和score中间用:隔开,方便以后用split对其进行分割。

成员变量

private FileWriter fw=null;

private BufferedWriter bw=null;

private FileReader fr=null;

private BufferedReader br=null;

Tetris tt=null;

boolean vip=true;//如果有usernametxt这个文件的话就返回true并且允许查看分数判断是否有用户已经创建了

ArrayList al=new ArrayList();

成员方法

getMembers()

saveMembers()

getpaint()

GetMembers()方法

NameScore类:

每一个用户的分数和姓名存到一个对象NameScore类。

ScorePanel类;

这个是用来接收Tetris类中传递过来的储存NameScore对象的ArrayList集合,然后把用迭代器将集合中的每一个对象的username和score取出来然后放到Vector中。然后添加到JTable中

三、算法实现

算法实现(伪代码)

四、测试数据及结果分析

游戏运行

新游戏开始

相关文档
最新文档