J2ME平台的的RPG游戏开发历程(1)-盘古开天辟地,j2me创造游戏世界

来源:互联网 发布:扒衣服软件 编辑:程序博客网 时间:2024/04/29 21:01

J2ME平台的的RPG游戏开发历程(1

本人并非从事开发行业,编程是我的业余爱好。接触编程3个年头,但实质上,学到的东西很少,只因自身悟性太低和毅力不够。

着实只是一只超级小小菜鸟。

各位看官观看本博文时发现本文的代码或者本文的其他地方的错误。而令你太抓狂,导致你的肾上腺素激增,或者因此摔键盘,摔鼠标,砸显示器等行为。都对本人无关。。。

再次重申,本人乃业余,写博文只因想记录低学习历程罢了。请你原谅我的功力吧。。

但是,对于代码的错误或者算法的优化,希望您能够向我提出。本人将虚心受教。学习进步。

谢谢。谢谢.

 

记得当初想要学习编程的时候,是在学校,那时候手机游戏火热得很。

天天那这个索爱的k750来玩游戏。

就是从那时候开始,萌生了开发一个自己的游戏的念头。

我时常跟我的朋友们说,编程真是一件美妙的东西,每一个程序,就像一个虚拟的世界,由你创造的世界。什么?你说这句话不是我说的?是某某名人说的。。好吧。我只是引用他的话罢了。。不要较真。

但这个确实是我心中的想法。特别是游戏的世界。

玩游戏看写小说,某程度来说是一样的,代入感很强。

而每个人心中,都会有一个属于自己的世界(当然,肯定不止一个)。

而把这个世界创造出来,相信是绝大部分人心中的梦想。

而我,选择了把我心中的某个虚拟世界变成一个游戏。

在这个Android当道的世界上,J2ME已经逐渐逝去。为什么我还要用J2ME来开发RPG呢?

因为我喜欢J2ME(好吧,我承认,其实是我android的技术不行,别寒碜我了。。)

 

RPG的详细介绍,我就不多说了。相信你就算不查资料,都知道RPG是个什么东西。

RPG的分支,什么ARPG,SRPG这些的。如果以后我做到了。我可能会写。

但是,现在本文,讲的主要的传统意义上的RPG

 

请允许我先发发牢骚。

网上的RPG开发的资料其实很多,但是有用的只占很少一部分,特别是书本,有用的东西简直惨不忍睹。书本上的例子,只是给你讲解每一个类的开发过程,和类与类之间的关系。并没有把这类游戏的开发思路交给你。(或者说是我悟性太低了?好吧,请原谅我吧。我太笨了)

 

废话说的够多了。。。不好意思,耽搁大家了。

作为开篇,就跟前面说到的,这个游戏,是一个世界。

盘古用斧头开天辟地。我们就要用J2ME创造游戏世界;

游戏的世界里面,你总不可能先有了人在有别的吧。

肯定,首先得有一个所谓的“世界”啦。就是地图。背景,你爱叫什么就什么吧。。

 

我们先来创建我们的地图类:

import javax.microedition.lcdui.Image;import javax.microedition.lcdui.game.TiledLayer;  publicclass myMap {     privateint [][]mapArray; //地图数组资源    private ImagemyMapImage; //地图图片资源    private TiledLayermyMap; //2.0新增的类,通常用于创建地图        public myMap(){       try{           myMapImage = Image.createImage("/map.png");       }catch(Exception e){           e.printStackTrace();       }       //这个类的使用方法,烦请各位自己查查资料了。。。       myMap =new TiledLayer(15, 20,myMapImage, 16, 16);       mapArray =newint [][]{              { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 193, 8, 8, 8, 195, 196, 193, 8, 8, 8, 8, 8, 8, 8, 8 },              { 223, 224, 224, 224, 225, 196, 223, 224, 224, 224, 224, 224, 224, 224, 224 },              { 253, 254, 254, 254, 255, 196, 253, 254, 254, 254, 254, 254, 254, 254, 254 },              { 313, 314, 314, 314, 315, 308, 313, 314, 314, 314, 314, 314, 314, 314, 314 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 226, 227, 228, 8, 8, 8 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 256, 257, 258, 8, 8, 8 },              { 8, 8, 8, 8, 8, 308, 8, 8, 8, 286, 287, 288, 8, 8, 8 },              { 8, 226, 227, 228, 8, 308, 8, 8, 8, 199, 200, 201, 8, 8, 8 },              { 8, 256, 257, 258, 8, 308, 8, 8, 8, 229, 347, 231, 8, 8, 8 },              { 8, 286, 287, 288, 8, 308, 8, 8, 11, 11, 308, 11, 11, 8, 8 },              { 8, 199, 200, 201, 8, 308, 308, 308, 308, 308, 308, 8, 8, 8, 8 },              { 8, 229, 347, 231, 11, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 308, 11, 11, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 },              { 8, 8, 308, 308, 308, 308, 8, 8, 8, 8, 8, 8, 8, 8, 8 }              };              for(int i = 0; i <mapArray.length; i++){           for(int j = 0; j <mapArray[i].length; j++){              myMap.setCell(j, i,mapArray[i][j]);           }       }           }    }


 

Canvas类:

import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Graphics;  publicclass myCanvasextends Canvas{     public myMapmap;        public myCanvas(){       setFullScreenMode(true);       map =new myMap();    }        protectedvoid paint(Graphics g) {       map.myMap.paint(g);    } }


 

 

最后的显示效果就是这样了:

 

这个地图是怎么搞出来的呢?

首先,当然不可能是我自己画出来的。。对吧。

先来看看这图:

 

这个就是资源文件里面的map.png

地图,就是使用电脑上的mapwin这个软件,把一个大图,分成多个相等大小的图块,然后再生成数组。

我们只需要使用这个数组就行了。

Mapwin的使用方法,请自行百度。。。谢谢

 

创建地图有很多方法,有Image数组双循环绘制,有整个大图片绘制等。

我这里使用的是2.0的新增的类TiledLayer.

但实际上,使用这个类的话,会有很大的限制,比如地图的移动,一般的游戏地图都肯定是比屏幕大的,移动的时候,一般都是主角居中,地图向反方向移动,

而如果使用TiledLayer的移动方法的话,那是相当的坑爹。CPU百分之70都被它占用了。

一般都会使用卡马克算法?我不晓得别人会不会用哈。。反正,我看着卡马克算法也是很头晕,虽然思路晓得怎么搞。。

下一篇写一下怎么优化地图,和加上地图的移动,随便加上一个英雄。来真正创建我们的世界。

原创粉丝点击