java大作业 俄罗斯方块_俄罗斯方块Java程序设计
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程序设计相关推荐
- java大作业国际比赛奖牌榜,java大作业之词频统计
[实例简介] 开发工具idea,统计方式为java8的stream方式,不是传统的字节流统计方式,内含答辩PPT以及统计单词的文本,配置好后可直接使用 [实例截图] [核心代码] java大作业之词频 ...
- 基于java的作业管理系统_基于java的作业管理系统
[实例简介] 面向对象程序设计的大作业,用myeclipse建工程,tomcat的服务器,B/S框架,java和jsp编写代码.实现的功能是老师上传作业相关资源,布置作业,查看和下载学生作业并打分,同 ...
- java 大文件 处理_用Java处理大文件
java 大文件 处理 我最近不得不处理一组包含历史逐笔交易的外汇市场数据的文件,并很快意识到使用传统的InputStream都无法将它们读取到内存中,因为每个文件的大小都超过4 GB. Emacs甚 ...
- java网页作业提交_基于JAVA网上作业提交批改系统的设计(SQL)(含录像)
基于JAVA网上作业提交批改系统的设计(SQL)(含录像)(毕业论文15000字,程序代码,SQLserver数据库) 摘 要 随着社会的进步,网络技术的发展为教育界提供了一片崭新的空间,传统的教学 ...
- java大作业国际比赛奖牌榜,Java中集合的程序练习
一.运用所学集合的知识,写出一个奥运会奖牌榜排序程序,具体要求如下: 1.每个国家都分别拥有金牌银牌铜牌属性. 2.对各个国家实现奖牌榜排序,排序规则为:先比较金牌,如果金牌数相同则比较银牌,如果银牌 ...
- 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 ...
- java大作业1--电话簿
java大作业1–电话簿 一.题目 Java程序设计实用教程p402 12-13 二.预览 三.题解 一.Friend类 首先明确这个电话簿存入的信息为一个个Friend,每一个Friend需要具有姓 ...
- 用JAVA写一个画图小程序(JAVA 大作业)
第一次写博客 且是稍微大点的程序 看看就行 重新写的在这,更加清晰明了:点击进入:用JAVA写一个画图小程序(JAVA 大作业)重排版本 设计思路 首先我直接去了Windows自带画图程序去实践模拟, ...
- JAVA大作业 | 学生成绩信息管理系统
> * *JAVA大作业 | 学生成绩管理系统(含有用户界面)*** ----- ps :多个包写在一起---– package test; import java.awt.*; import ...
- Java大作业-考试管理系统(GUI)无数据库-Java课程设计
Java课程设计-Java大作业-考试管理系统(GUI)无数据库 题目要求 开发环境 : 程序总功能模块 程序详细设计 使用情况 第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容 ...
最新文章
- RxJava 过滤操作符 take 与 takeLast
- 使用tortoise git管理gitolite版本库
- deeplearning URL
- python tuple类型和list_Python 04_List 和 Tuple 类型
- 【收藏】Keepalived+Nginx高可用配置(偏nginx配置)
- 分布式机器学习框架:CXXNet
- SAP CDS view如何取得当前系统日期和系统时间戳
- 这个小姐姐真的很火辣......
- 推荐几个Android开发非常有用的工具(for android studio)
- 关于5G被激烈讨论的那些争端和冲突
- Mac下启动和停止Mysql服务
- Spring+SpringMVC+maven使用@aspectJ添加切面
- Java 1.2.2 格式化输出
- js 中{},[]中括号,大括号使用详解
- 单日暴跌60%,崩盘4次的AMPL,这次还能回来吗?
- 浙江大学PAT考证,计算机专业的可别错过了,轻松就业+高薪
- php是哪个快递,php快递查询API类(支持各种快递的查询)
- 集体的智慧:为什么SaaS打败企业软件?
- RAD Studio 10.3.1 cannot initialize object parameter of type..........“
- 苹果电脑(macOS)查看 WiFi 密码的两种方法