基于Java编程俄罗斯方块的重现

【还没写完,会日后改的。】

代码主要参考

【凡是系列的博客都看了一系列的,参考程度早忘了,因此不分先后】

java贪吃蛇小游戏(详解)——枫吖:借鉴了解了游戏的框架,游戏都是一通百通的

Java写俄罗斯方块,了解一下——Pigeon_k

Java_俄罗斯方块游戏的设计_01——Tzmywb_11

Java俄罗斯方块 —(一)游戏场景篇——Pigeon_k

类包

类包 java.awt.Graphics

java.awt.Color类 Color类概述 Color是用来封装颜色的,支持多种颜色空间,默认为RGB颜色空间

基本知识

【关键字】

static是为了让其成为类的成员,而不是对象的成员,这样用起来就方便了
public是为了方便访问
final则是表明这是个常量,不能修改
可以让访问变得很方便,而且不会被修改。一般可以放配置信息,还有一些状态码的定义
static修饰的对象是放在引用的根下的,意味着几乎不会被回收

Java 中关于关键字 protected的理解?——timeofsunrise

意思就是子类访问或修改父类变量,并不会影响其他父类的实例,仅影响这个子类相关的实例。

Java的protected在哪些情况下会被使用?

protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private,你这里的protected定义的heartbeatTimeout,不希望在别的package下被调用

Java关键字(一)——instanceof;作者:YSOcean:判断是不是属于静止的俄罗斯方块

【序列化】
Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释——hardecz:还是非常重点的

什么情况下需要序列化
当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
当你想用套接字在网络上传送对象的时候;
当你想通过RMI传输对象的时候;

深入理解序列化和反序列化——两个程序员

序列化: 就是将内存中的对象转换为字节序列,方便持久化到磁盘或者网络传输。

eclipse的自动生成的重载hashCode()方法中prime的值为31的原因——dyc_dyc

java中的@Override标签—— 曹婷婷

@Override标签的作用:伪代码,表示方法重写。
@Override标签的好处
1.作为注释,帮助自己检查是否正确的复写了父类中已有的方法
2.便于别人理解代码
3.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错

【继承非常重点】
java继承(implements与extends)总结——Happy.哆啦梦
extends与implements的使用和区别——guazi1020

【接口非常重点】
Java中接口(Interface)的定义和使用——斜阳雨陌:Drawable 绘画接口

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

for(:)遍历数组的一种方式——Mint6

Constant 类

项目中常用的常量,比如:用户名、密码、权限什么的。
方块:大小、间隙、颜色;
游戏尺寸:外框、内框
图片存放路径

游戏开始界面

java学习笔记图形程序设计及GUI应用小结(1)——by rosedoria0:先了解一下,大概有个框架

java设置JLabel字体字号颜色—— z_cc_csdn:游戏标题设置

JAVA中JButton常用设置——_Agony:设置按钮

JButton jb=new JButton(“确定”);
Font f=new Font(“宋体”,Font.BOLD,16);//根据指定字体名称、样式和磅值大小,创建一个新 Font。
jb.setFont(f);

JAVA登录界面的实现(一)——Alexwym:游戏开始界面设计参照了这个代码的写法

Java语言做一个简单的登陆界面实现用户名和密码的登陆以及界面之间的跳转——代码搬运工的菜鸟:忘了借鉴了什么。

游戏窗体

java中JFrame类中函数addWindowListener(new WindowAdapter——我是大头鸟:游戏点关闭能退出

Java绘图: 使用 Graphics 类绘制线段、矩形、椭圆/圆弧/扇形、图片、文本——xietansheng:游戏界面的简单设计,画框,把游戏区域、分数区域、显现下一个方块区域分开

使用Java的Graphics类进行绘图的方法详解:同上

动画效果的实现:重绘

关于Java中的paint,repaint,update三个方法的关系

Java GUI在循环中调用repaint的问题分析——fuliang

【游戏暂停】
关于java小游戏的暂停,退出和从新开始——皆非_丶:游戏暂停代码实现的原理

蓝色部分外的是没有添加暂停之前的正常的线程,是个死循环,在内部又加了一个死循环,pause一开始为false,所以一开始外层while死循环不执行内层死循环,当pause为true时,内层死循环开始,就不再执行内层while以外的代码,也就做到了停止repaint,画面停止的效果,再让pause=false,内层死循环结束,继续我们的外层死循环,又开始repaint,这样画面就又动起来了,而从头到尾我的线程仍然没有结束,不需要再开启新线程。还要注意的是在按键监听或者鼠标监听的所有代码前面加一个if(!pause)。如此一来,暂停效果就达到了。

设计模式5:游戏线程和暂停——软件技术琅琊榜 :参照了游戏暂停的代码

键盘监听器

java键盘监听详解——我的格子衬衫呢?

getKeyChar():处理的是比较高层的事件,返回的是每次敲击键盘后得到的字符(中文输入法下就是汉字)。
getKeyCode():键盘上每一个按钮都有对应码(Code),可用来查知用户按了什么键,返回当前按钮的数值
getKeyText():返回与此事件中的键关联的字符。比如getKeyText(e.getKeyCode())就返回你所按下的键盘

俄罗斯方块

基于Java编程俄罗斯方块的重现_第1张图片
【创建一个抽象类类来作为7个经典形状的父类,并提供相应的成员】
Java中的abstract方法和abstract类的问题:了解抽象类和抽象方法,写抽象方块、抽象方块工厂、抽象方块状态等

abstract修饰符用来修饰类和成员方法
1:用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。
2:用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。
abstract 规则:
1:抽象类可以没有抽象方法,但是有抽象方法的类必须定义为抽象类,如果一个子类继承一个抽象类,子类没有实现父类的所有抽象方法,那么子类也要定义为抽象类,否则的话编译会出错的。
2:抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法
3:抽象类不能被实例化,但是可以创建一个引用变量,类型是一个抽象类,并让它引用非抽象类的子类的一个实例
4:不能用final 修饰符修饰

【选择 LinkList 结构来放置小方块位置即俄罗斯方块形状】
ArrayList与LinkList对比——Little__Sheep
对于添加和删除操作add和remove,LinkedList是更快的

Linkedlist的add()和get()方法——by云梦惊蝉

Java泛型详解:和Class的使用。泛型类,泛型方法的详细使用实例——星朝:实现俄罗斯方块个体基础信息的储存

java Random.nextInt()方法—— Mr_伍先生:实现掉落俄罗斯方块的形状、颜色的随机

Java 中如何使用clone()方法克隆对象?:thisBlock = nextBlock,完成转换

已经存在一个对象A,现在需要一个与A对象完全相同的B 对象,并对B 对象的属性值进行修改,但是A 对象原有的属性值不能改变。这时,如果使用Java 提供的对象赋值语句,当修改B 对象的属性值后,A 对象的属性值也将被修改。那么应该如何实现创建一个与A 对象完全相同的B 对象,但是改变B对象的属性值时A 对象的属性值不变呢?

俄罗斯方块运动

Java 枚举(enum) 详解7种常见的用法——微wx笑:列举俄罗斯方块的运动状态

Thread.sleep(speed);//挂起线程,控制方块速度

背景音乐

音乐:MP3转wav格式

java版坦克大战加入背景音乐及背景图片——棉花不是糖 :参照了背景音乐的代码

java播放mp3格式音频文件————Clannad_汐:这个一开始想用MP3,但后来算了改wav比较方便,但可以看一眼

日后期望

Java学习笔记之三——Java用户登陆界面——weixin_30802171:可以用来作用户登录,以用来实行游戏分数排行榜的功能
可调节难度-》速度:AbstractBlock
设置两种档位:

你可能感兴趣的:(java)