2021年2月9日发(作者:pending)

俄罗斯方块游戏

一、

题内容和要求

课题内容:俄罗斯方块游戏(

Tetris

)是一款经典单

机游戏,早期常见于各

个平台。

设计一个俄罗斯方块,

玩家根据下落的不同方块形状,

通过上、

下、<

/p>

左、

右四个键实现对方块的左右移动、旋转、下落等控制。游戏中

,一共有

7

种不同

的方块形状、每种方

块以

1/7

的概率随机出现,一旦方块到达顶部,游戏结束。<

/p>

当某一个行布满方块时,改行消除。

本要求:

通过图形界面实现俄罗斯方块游戏;

能以图形显示游戏

运行的过

程;实现相应四个键游戏玩家的控制;记录消除的行数。

扩展要求:在上述功能要求的基础上,为了提高成绩,可以添加一些额外的功

能;变量、方法命名符合规范;注释详细:每个变量都要求有注释说明用途;函

数有注释说明功能,

对参数、

返回值也要以注释的形式

说明用途;

关键的语句段

要求有注释解释;程序的层次清晰,可

读性强。

系统功能要求:

(

1

)

界面设定

玩家可以在界面左侧的游戏

区中堆积方块,游戏区上面有“游戏”

“帮助”

两个选项,界面右侧为游戏得分,玩家在游戏过程中随时可以查看游戏得分。

(

2

)

游戏控制

不同的随机图形会从区域上方缓慢落下,

通过键盘的左、右、下键可以控

制方块以一格为单位左右移动,长按实现快速移动;

上键能以

90

度为单位旋转

每一方块;

区域中横向格子方块填满,则该行会自动消除并为玩家的得分

;当

固定的方块推到区域最上方,则游戏结束。

二、

求分析

1.

需求分析

-1

俄罗斯方块游戏需求分析

2.

任务及实现方式

(

1

)

绘制游戏区域

通过绘制地图方块、已经固定的方块和运动中的方块来实现

(

2

)

实现键盘对方块的实时控制

添加键盘监听者和方块位置移动的函数

(

3

)

记录消除行数

添加记分函数和

Graphics

类的

drawString

函数实现

(

4

)

游戏结束

添加判断游戏结束函数并给出提示

3.

预期效果

(

1

)

实现俄罗斯方块游戏的动态显示

(

2

)

实现键盘对方块各种操作

(

3

)

实现消行、记分

(

4

)

游戏能够正确结束

三、

要设计

1.

主要功能流程图

说明:游戏流程较为复杂,流程图粗略显示部分流程

-2

主要功能流程图

2.

主要类及类之间的关系的

UML

-3

Class Tetris

-4

Class Tetrisblok

-5

RelationShip

四、源程序代码

import

.*;

import Event;

import

Listener;

import nt;

import

tener;

import .*;

import

public class Tetris extends

JFrame {

public Tetris() {

Tetrisblok a =

new Tetrisblok();

addKeyListener(a);

add(a);

}

public static void main(String[] args)

{

Tetris frame

= new Tetris();

//

菜单条

JMenuBar menu = new JMenuBar();

//

添加菜单条

nuBar(menu);

//

菜单

JMenu game = new

JMenu(

游戏

//

菜单项

JMenuItem newgame =

(

新游戏

JMenuItem

pause =

(

暂停

JMenuItem goon

= (

继续

JMenuItem

exit = (

退出

//

菜单

JMenu help = new

JMenu(

帮助

JMenuItem

about = (

关于

//

添加菜单至菜单条

}

}

(game);

(help);

//

对窗口设置

//

居中

ationRelativeTo(null);

//

关闭程序

aultCloseOperation(_ON_CLOSE);

//

大小

e(220, 275);

//

标题

l

e(

俄罗斯方块

//

可见性

ible(true);

//

不可更改大小

izable(false);

//

创建俄罗斯方块类

class

Tetrisblok extends JPanel implements KeyListener {

// blockType

代表方块类型

//

turnState

代表方块状态

private int blockType;

private int turnState;

private int score = 0;

private int x;

private int y;

private int i

= 0;

int j = 0;

int flag = 0;

//

定义已经放下的方块

x=0-11,y=0-21;

int[][] map = new int[13][23];

// 7

种方块类型,每一个方块有

4

种旋转状态,使用

16

位数字表示一种

旋转状态

private final int

shapes[][][] = new int[][][] {

// i

{ { 0, 0, 0, 0, 1, 1, 1, 1,

0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 0, 0,

0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },

{

0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,

0, 1, 0, 0 } },

// s

{ { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0 },

{ 1, 0, 0, 0, 1, 1, 0, 0,

0, 1, 0, 0, 0, 0, 0, 0 },

{ 0, 1, 1, 0,

1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{

1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }

},

// z

{ { 1, 1, 0, 0,

0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{

0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,

0, 0, 0, 0 },

{ 0, 1, 0, 0, 1, 1, 0, 0,

1, 0, 0, 0, 0, 0, 0, 0 } },

// j

{ { 0, 1, 0, 0, 0, 1, 0, 0,

1, 1, 0, 0, 0, 0, 0, 0 },

{ 1, 0, 0, 0,

1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{

1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,

0, 0, 0, 0 } },

// o

{ { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0 },

{ 1, 1, 0, 0, 1, 1, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0 },

{ 1, 1, 0, 0,

1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },

{

1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }

},

// l

java大作业 俄罗斯方块_俄罗斯方块Java程序设计相关推荐

  1. java大作业国际比赛奖牌榜,java大作业之词频统计

    [实例简介] 开发工具idea,统计方式为java8的stream方式,不是传统的字节流统计方式,内含答辩PPT以及统计单词的文本,配置好后可直接使用 [实例截图] [核心代码] java大作业之词频 ...

  2. 基于java的作业管理系统_基于java的作业管理系统

    [实例简介] 面向对象程序设计的大作业,用myeclipse建工程,tomcat的服务器,B/S框架,java和jsp编写代码.实现的功能是老师上传作业相关资源,布置作业,查看和下载学生作业并打分,同 ...

  3. java 大文件 处理_用Java处理大文件

    java 大文件 处理 我最近不得不处理一组包含历史逐笔交易的外汇市场数据的文件,并很快意识到使用传统的InputStream都无法将它们读取到内存中,因为每个文件的大小都超过4 GB. Emacs甚 ...

  4. java网页作业提交_基于JAVA网上作业提交批改系统的设计(SQL)(含录像)

    基于JAVA网上作业提交批改系统的设计(SQL)(含录像)(毕业论文15000字,程序代码,SQLserver数据库) 摘  要 随着社会的进步,网络技术的发展为教育界提供了一片崭新的空间,传统的教学 ...

  5. java大作业国际比赛奖牌榜,Java中集合的程序练习

    一.运用所学集合的知识,写出一个奥运会奖牌榜排序程序,具体要求如下: 1.每个国家都分别拥有金牌银牌铜牌属性. 2.对各个国家实现奖牌榜排序,排序规则为:先比较金牌,如果金牌数相同则比较银牌,如果银牌 ...

  6. java程序设计实验报告代写_代写file I/O作业、代写java Scanner I/O程序、代写java编程作业、代做java实验报告...

    代写file I/O作业.代写java Scanner I/O程序.代写java编程作业.代做java实验报告 日期:2018-09-05 03:40 ?Objectives oCreate a pr ...

  7. java大作业1--电话簿

    java大作业1–电话簿 一.题目 Java程序设计实用教程p402 12-13 二.预览 三.题解 一.Friend类 首先明确这个电话簿存入的信息为一个个Friend,每一个Friend需要具有姓 ...

  8. 用JAVA写一个画图小程序(JAVA 大作业)

    第一次写博客 且是稍微大点的程序 看看就行 重新写的在这,更加清晰明了:点击进入:用JAVA写一个画图小程序(JAVA 大作业)重排版本 设计思路 首先我直接去了Windows自带画图程序去实践模拟, ...

  9. JAVA大作业 | 学生成绩信息管理系统

    > * *JAVA大作业 | 学生成绩管理系统(含有用户界面)*** ----- ps :多个包写在一起---– package test; import java.awt.*; import ...

  10. Java大作业-考试管理系统(GUI)无数据库-Java课程设计

    Java课程设计-Java大作业-考试管理系统(GUI)无数据库 题目要求 开发环境 : 程序总功能模块 程序详细设计 使用情况 第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容 ...

最新文章

  1. RxJava 过滤操作符 take 与 takeLast
  2. 使用tortoise git管理gitolite版本库
  3. deeplearning URL
  4. python tuple类型和list_Python 04_List 和 Tuple 类型
  5. 【收藏】Keepalived+Nginx高可用配置(偏nginx配置)
  6. 分布式机器学习框架:CXXNet
  7. SAP CDS view如何取得当前系统日期和系统时间戳
  8. 这个小姐姐真的很火辣......
  9. 推荐几个Android开发非常有用的工具(for android studio)
  10. 关于5G被激烈讨论的那些争端和冲突
  11. Mac下启动和停止Mysql服务
  12. Spring+SpringMVC+maven使用@aspectJ添加切面
  13. Java 1.2.2 格式化输出
  14. js 中{},[]中括号,大括号使用详解
  15. 单日暴跌60%,崩盘4次的AMPL,这次还能回来吗?
  16. 浙江大学PAT考证,计算机专业的可别错过了,轻松就业+高薪
  17. php是哪个快递,php快递查询API类(支持各种快递的查询)
  18. 集体的智慧:为什么SaaS打败企业软件?
  19. RAD Studio 10.3.1 cannot initialize object parameter of type..........“
  20. 苹果电脑(macOS)查看 WiFi 密码的两种方法

热门文章

  1. VS用c#创建记事本
  2. 南昊网上阅卷系统服务器地址,南昊网上阅卷系统
  3. Java实例变量和类变量
  4. ntko 发生错误:保存html到临时文件目录发生错误,ntko学习文档..doc
  5. 深入浅出Python——Python高级语法之文件操作
  6. Nfine框架基本使用--初学者的总结
  7. 二级c语言试题讲解,计算机二级C语言真题讲解.ppt
  8. 数据结构--二叉树的二叉链表实现
  9. 微积分是研究连续变化的数学理论
  10. python爬取喜马拉雅vip音频_Python简易爬虫教程(三)--爬取喜马拉雅音频