java实现俄罗斯方块

假期闲着无事,就用一周多的时间看了百度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自由下落时的初始坐标应是:

TYPE_CONFIG=new ArrayList<Point[]>(7);
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(3,0),new Point(5,0),new Point(6,0)});
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(3,0),new Point(5,0),new Point(4,1)});
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(3,0),new Point(5,0),new Point(3,1)});
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(5,0),new Point(3,1),new Point(4,1)});
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(5,0),new Point(4,1),new Point(5,1)});
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(3,0),new Point(5,0),new Point(5,1)});
TYPE_CONFIG.add(new Point[]{new Point(4,0),new
 Point(3,0),new Point(4,1),new Point(5,1)});

每一个方块都有一个中心点,当方块旋转时,方块以该中心点位圆心进行90°的旋转。 旋转方法如下:

五、

游戏的逻辑控制主要在GameService类中,实现了判断是否能消行,消行操作,键盘相应操作等

六、

程序中使用了dom4j-1.6.1.jar和jl1.0.1.jar两个额外的jar包。 dom4j-1.6.1.jar用来读取xml文件。在config文件夹中有个cfg.xml文件,当中设置了各个窗口的大小以及位置。在程序中使用dom4j-1.6.1.jar来读取xml数据,然后根据这些数据来配置程序界面。因此只要改变了xml中的数值,就可以改变窗口的大小以及坐标。

jl1.0.1.jar则是用来播放背景音乐的,这是我自己添加的功能,通过这个jar文件提供的方法,可以很简单地实现播放音乐的功能,具体实现在MP3Player类和Main类中,需要在Main类中新建一个线程。 具体参考方法:JavaSwing后台播放音乐

七、

源代码程序下载:源代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java 小游戏开发之俄罗斯方块

    Java项目 俄罗斯方块 一.心得 二.游戏实例 游戏截图 目录结构 三.代码 1.主界面 Tetris.java package com.fry.tetris; import java.util.Arrays; import java.util.Random; /** * 4格方块 */ public class Tetromino { protected Cell[] cells = new Cell[4]; /** 保存旋转的相对于轴位置状态 */ protected State[] st

  • java实现俄罗斯方块小游戏

    本文实例为大家分享了java实现俄罗斯方块的具体代码,供大家参考,具体内容如下 使用一个二维数组保存游戏的地图: // 游戏地图格子,每个格子保存一个方块,数组纪录方块的状态 private State map[][] = new State[rows][columns]; 游戏前先将所有地图中的格子初始化为空: /* 初始化所有的方块为空 */ for (int i = 0; i < map.length; i++) { for (int j = 0; j < map[i].length;

  • Java俄罗斯方块小游戏

    去年就已经学了这个技术了,一直没去写,现在抽个时间写了个俄罗斯方块游戏. 只有简单的新游戏,暂停,继续,积分功能.简单的实现了俄罗斯的经典功能. 不介绍了,有兴趣的自己运行一下,后面贴出了图片. 代码: package cn.hncu; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.Act

  • java代码实现俄罗斯方块

    本文实例为大家分享了java实现俄罗斯方块的具体代码,供大家参考,具体内容如下 俄罗斯方块设计思想 俄罗斯方块都从小玩到大吧,什么规则大家都知道了吧,以前感觉那玩意贼好玩,但是就是老赢不了,现在学会了自己写一个天天练! 键盘操作: 左键:左移: 右键:右移: 上键:变换造型 下键:加速下掉(没毛病吧,没有继续整) 任意一行的方块满格,这一行就消除,消除一行方块得10分,目前小主我还没有设置关卡,各位喜欢的宝宝们可以自己设置关卡哦: 那么那些方块的造型到底从哪里来的呢,那就是我们自己设计的,常见的

  • Java游戏俄罗斯方块的实现实例

    Java游戏俄罗斯方块的实现实例 java小游戏主要理解应用java Swing,awt等基础组件的知识,通过本例应当掌握面向对象的知识. 实现代码: package cn.hncu.games; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import

  • java实现俄罗斯方块小程序

    这是java课最后做的课程设计,由于java是初学的,所以做的时候有参考一些技术大牛的博客,在此表示感谢. 发在这里跟大家交流学习一下. 如需要完整工程文件.说明文档以及可运行jar文件,下载地址:点击打开链接 RussianBlocksGame.java package RussiaBlocksGame; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.Bor

  • java实现俄罗斯方块游戏

    本文实例为大家分享了java实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下 1.功能需求 2.软件功能架构图 3.界面设计 4.程序逻辑图 5.实现代码 创建控制面板并添加按钮 初始化界面 添加事件监听 创建方块 实现对方块操作 游戏主类,实现游戏控制 功能需求 1. 在二维平面里面用各种随机产生的方块堆积木,每满一行消去一行,当达到顶部时,游戏结束. 2. 玩家通过方向键来控制方块转动,左移,右移和直落. 3. 每种类型的方块都有颜色. 4. 玩家能够在玩的过程中给出分数,分数是由方块

  • Java实现俄罗斯方块游戏简单版

    本文实例为大家分享了Java实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下 游戏页面效果如下: 俄罗斯方块游戏本身的逻辑: 俄罗斯方块游戏的逻辑是比较简单的.它就类似于堆砌房子一样,各种各样的方地形状是不同的.但是,俄罗斯方块游戏的界面被等均的分为若干行和若干列,因此方块的本质就是占用了多少个单元. 首先来考虑一下数据的问题.对于界面来说,需要一个二维的 int 型数组,它保存着那些地方应该有着色,哪些没有:然后是方块本身,尽管它们的形状不统一,但是它们可以用一个4X4比例的方块所包围,

  • Java实现俄罗斯方块小游戏源码

    本文实例为大家分享了Java实现俄罗斯方块小游戏的具体代码,供大家参考,具体内容如下 一.最终效果 二.功能需求 1. 在二维平面里面用各种随机产生的方块堆积木,每满一行消去一行,当达到顶部时,游戏结束.2. 通过方向键来控制方块转动,左移,右移和直落.3. 方块下落统一设置蓝色,接触底部变粉色.4. 计算分数,分数是由方块的类型决定的,每堆积一个方块就把分数累加到总分中.5. 游戏有开始.重新开始.降低提高级数(速度).暂停.退出 三.程序实现 这个是最基础的方块素材 package 俄罗斯方

  • Java实现俄罗斯方块游戏的示例代码

    目录 引言 效果图 实现思路 代码实现 创建窗口 画布1 创建菜单及菜单选项 绘制游戏区域 画布2 画布2绘制一个小方块 创建图形 创建模型类 模型旋转变形 方块累计 方块消除和积分 加入自动向下线程,并启动 引言 俄罗斯方块,相信很多80.90后的小伙伴都玩过,也是当年非常火的游戏,当年读中学的时候,有一个同学有这个游戏机,大家都很喜欢玩,这个游戏给当时的我们带来了很多欢乐,时光飞逝,感慨颇多! 人终归是要长大的,回忆再美好,日子也一去不复返了,以前我们只会玩游戏,心里想自己能做一个出来多牛逼

  • Java实现俄罗斯方块的源码分享

    本文实现的功能有: 1. 初始化游戏窗口 2.初始化游戏的界面 3.初始化游戏的说明面板 4.随机生成下落方块 5.方块下落速度变化 6.判断方块是否可以下落 7.移除某一行方块上面的方块后让上面的方块掉落 8.刷新移除某一行方块后的界面 9.清除方块 10.绘制方块 11.键盘控制方块的移动.变形和快速下落 12.游戏的暂停功能 三小时纯手工打造,具体实现代码: import javax.swing.*; import java.awt.*; import java.awt.event.Key

  • java实现俄罗斯方块

    假期闲着无事,就用一周多的时间看了百度java吧的一位大神(alwing)发布的视频,学着用java写了一个俄罗斯方块,在此就以发布源代码以及必要讲解的形式来感谢他的帮助.当然我这里也是做了一些改动,做出来的程序界面以及功能没有和他的完全一样. 整个程序运行起来的界面如下所示: 程序包含的功能有: 俄罗斯方块本身基本的游戏元素 显示下一轮出现的方块.当前等级.分数.消行数等数值 以值槽形式显示当前等级到下一等级的距离 左上角头像以及背景图片会随着等级的升高而改变 循环播放背景音乐 一. 整个程序

随机推荐