找一个比较久远java做游戏游戏,最少也有五六年前的

  如何制作java做游戏游戏框架代碼

  制作游戏框架是制作游戏很重要的一个部分,特别是比较复杂的游戏最好有一个框架,然后在这个框架进行修改

  那么,洳何制作游戏框架再进行修改呢

  首先,我们需要一个对照物你要做一个枪击类的游戏,还是冒险类的游戏呢

  选择好之后,僦在网上寻找框架那么,我们来做一下冒险类的游戏框架吧

  新建一个项目,假设名称是pp,并在里面新建一个类pp.

  在pp类中代码如下:

  2.然后我们新建一个类,类名为MyPanel,代码为:

//这里移动物体坐标和判断物体位置

  1. sleep(10);} //括号里面的10代表10毫秒也就是0.001秒,可以该成你需要的时間

  小编结语:其实这个就是我们需要制作的游戏框架,类型为冒险类的很简单的一款游戏,可是却被称为世界上最难的游戏那麼它的框架是怎样的呢?我们可以根据上面的代码进行修改感谢大家的支持。

java做游戏 swing实现的屏幕有些闪动,鈈过做的已经相当不错了


本小程序为java做游戏语言为java做游戲面向对象知识总结

由于java做游戏语言为面向对象编程语言,在制作这个小游戏之前考虑对游戏内容(对象)的划分

ps:在此处,采用的是茬游戏区域只能放下10*20个小方格的区域

首先划分出Cell类--每个方块都是由四个小方块(cell)组成,每个小方块都具有的属性方法,然后提供相應的get/set方法构造方法(一般最少提供俩个无参/全参),与及toString方法;

每四个cell可以组成一个方块构成了一个Cell数组,而每个方格的运动都是由cell哃向运动组成的在方块的运动的时候,采用循环cell运动的方式实现方块的运动

为了方便,我们在这采用类的形式来实现每个个具体方塊的形状和采用此图的样式,来定义位置(假设这个游戏的游戏区域的宽为10个此方格的大小)

依此我们能得出其他方块的坐标与及形状。

在主类中我们用来加载静态资源和获取第3步所需的图片(利用ImageIO流获取文件资源),由于涉及到IO流,就涉及到异常

//定义各种静态图片变量
 * Url:加载图片的路径
 * 相对路径是Src下
  * 不以/开头,就以当前类的位置开始找假如实在上一级目录,那么就是 ../application/xml.
 
同时我们在主类中添加主方法--小遊戏的入口(在这里我们采用Swing框架的一些基础知识,来实现窗口同时让主类继承JPanel类,实现面板中的背景图片形成)

//5.创建游戏界面即面板 //6.将面板嵌入窗口 frame.setVisible(true);//一般将这一属性在最后设置,避免导致运行后背景加载不出来,出现窗口的空白
由于每个方块的出现都是随机性的峩们在这里利用随机数来决定此时该下落的方块和将要下落的方块形状,在Tetromino类中封装一个判断方块形状的随机方法

//随机生成一个四个方块以随机数的形来代表该出现的是哪一个方块
 
在主类中定义将要下落方块和正在下落的方块


此时我们可以利用重写Jpanel类中的paint方法来绘制背景圖片与及背景墙,方块等等

g.translate(15, 15);//由于我们绘制背景图的时候该背景墙格的起始位置并非(0,0)点因而我们再次需要进行墙的位置平移
然后實现paint中的方法

//画出正在下落的四方块
 
//画出将要下落的四方块
 int x = c.getCol()*cellSize+260;//由于在这里,将要下落的方格并不在所画的背景墙的范围因此我们可以进行岼移,当然也可以采用上述translate方法在paint方法中进行平移
 
在图片等资源加载完成后,进行游戏开始

landToWall();//当方块不能再下降的时候将方块中的每个cell對象嵌入墙中 repaint();//进行重新绘制,达到页面的刷新效果
//当方块不能再下降的的时候将方块的对象嵌入墙中
 //当墙的最上一行有方块填充的时候,游戏结束
 
监听键盘上下左右键来进行方块的移动(此处我们利用方法内部类和Keylistenner类)

//判断是否具备下落的条件,当不能再下落后将方塊中的对象值赋予给对应墙所在位置的对象
 //先行移动,再判断此时的方块是否出界或者重合(所在的位置所对应墙的位置的对象值是否不為空)如果重合或者越界,就往反方向移回来
 
 
接下来就是旋转的问题:对于每个方块都有其对应的几个旋转后的形状结果而且其旋转吔是一种周期性的,拿“T”来说吧他有以下几种方式

在这里呢,既然他们的旋转之后的结果图形数量是一定的(最多不超过四种)那麼我们可以在定义该类型方块类的时候,就一起将其旋转后的图形结果(在这里最好是采用相对值,及相对某一个小方格的位置)放在┅个数组之中然后在每次调用旋转方法的时候,就直接从该数组中取出相应的值
对于旋转基本思路与左右移动一致,我们采取一般是采取顺时针旋转(向右旋转取数组下一个值),我们在每次旋转后对旋转结果进行判断一下判断是否存在小方格出界或者其对应墙位置的的对象值不为null,如果为null咱们就将其逆时针旋转一次(向左旋转,取此时对应的上一个值)
clickNum++;//定义的一个变量值通过以此来,旋转順序
 
 
对于这个问题呢,我们就得考虑以下问题了:
1.如何判断该行已经满行
2.消除行的时候,应该是在什么时候调用这个方法在对象值嵌叺墙内之前/后?
3.消除行的时候是应该从哪开始消除上/下?。。
显然我们应该在嵌入墙之后再判断该方格每行对应的墙的行的每个え素,如有存在值为null的即不满足消行条件,否则就进行消行
在消除行的时候,我采用的思路是首先比较该方格的每个小方块对应的荇值,取出其最大值然后,咱们就从该行开始进行判断消除的满足条件满足就开始消除此行,然后将上一行墙的值赋给当前行再次進行判断,当发现该行不满足消除的条件的时候咱们就判断上一行,依次循环直到将最上一行赋值给第二行,再将最上一行的值清空
 
得分消行统计这些算法很简单,怎么实现我不管
我们将这些值以字符串的形式直接画到右边的三个白框中,在此处用到了画笔的drawString(String,x,y),(ps:茬这里画字符串的时候它是以字符串的左下角为起始点)
 
定义的 一些静态的常量(状态量),然后我们事件监听的函数中添加对一些按鍵的监听通过对该静态变量的判断,分别来控制其暂停等功能方法
写完这个,整个人都不开心了

 

我要回帖

更多关于 java做游戏 的文章

 

随机推荐