假期闲着无事,就用一周多的时间看了百度java吧的一位大神(alwing)发布的视频,学着用java写了一个俄罗斯方块,在此就以发布源代码以及必要讲解的形式来感谢他的帮助。当然我这里也是做了一些改动,做出来的程序界面以及功能没有和他的完全一样。
整个程序运行起来的界面如下所示:
程序包含的功能有:
- 俄罗斯方块本身基本的游戏元素
- 显示下一轮出现的方块、当前等级、分数、消行数等数值
- 以值槽形式显示当前等级到下一等级的距离
- 左上角头像以及背景图片会随着等级的升高而改变
- 循环播放背景音乐
一、
整个程序的设计如下图所示,共有七个包。因为程序原先的设计是会连接数据库保存用户名称以及分数的,而我的电脑又因为数据库软件安装失败,所以功能上我做了调整。因此某些包名以及类名会与其本身功能不符。
二、
整个程序中最重要的界面编程是由ui包中的layer类来建立的,它定义了一个方法使一张64乘64像素的图片运用drawimage函数来切割、拉伸成预定的宽度和高度,并使之显示在指定的坐标,从而成为一个窗口。 ui包中的各个layer***.java类都继承了layer类,分别用来实现各个窗口界面,如游戏主窗口(layergame)、等级窗口(layerlevel)、分数窗口(layerpoint)等。此外我还在窗口表面覆盖了一层半透明的图片,从而实现了一种“朦胧感”。
三、
img类是用来声明所有的图片对象的,我在声明边框图片window时,又故意写错路径,从而实现了无边框效果。
四、
下落方块的绘制也是采用图片切割的方法
每个不同颜色的方块都一样大,每次使用drawimage函数来切割不同颜色的方块。首先要把游戏主窗口看成是一个以左上角为原点的坐标系,游戏主窗口宽为9,高为16,则右下角的坐标应该是(15,8),这样就可以为下落方块定义坐标了。再采用list < point[] >来保存下落方块中各个小方块的坐标。
下落方块应该是如下七种形状:
则方块0到方块6自由下落时的初始坐标应是:
相关文章
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10