起因
其实是面京东伤心了,问啥啥不会,就拿个项目认真写写,写啥呢?俄罗斯方块呗;主要其实想玩一下io还有序列化;现在都基本实现了一下,下一步就是认真看看这两东西,或者就是看看socket方面的东西,反正就是一句话,玩项目,看书,巩固基础;
代码传送门
类图
主要参考 这个代码有一些问题,我都改掉了;
MVC的架构还是很清楚的吧;
具体类图如下:
遇到的问题
- 游戏方面的问题,形状在碰到墙后,其实是可以旋转的,所以就写了半天,但是还是会有bug的,但是我发现游戏嘛,和代码关系也少,就不继续了;
线程方面,因为要暂停线程,使形状不再下降,所以就需要wait()了,然后这里遇到的主要问题就是synchronized() 锁的是谁了?以下面的代码为例,必须明确书写锁住对象,否则就会出现线程监视器不对的问题
12345678910111213public synchronized void continueThread(){/*唤醒线程*/synchronized (shapeDriver) //必须锁住线程对象,否则将报错{suspended = false;System.out.println("akjhjkahfskfhlasfk");shapeDriver.notify();}}序列化部分,其实很简单;但就是因为很简单所以等同于没学。。。。;
- 各种小问题吧,由于参考代码是有问题的,所以就很麻烦;比如有一处shapelistene,它是随着面板初始化,有时候成功,有时候失败;成功就没有问题,失败就完蛋;所以就改成了共享对象放在了构造函数里;这样就不会有问题;
- UI部分编程简直了。。。。;