鉴于前一周学习javaME技术,还是超有感想的,感觉到在javaME中的很多思维和javaSE中的差不多,我按照起初学习的javaSE的方法一步步学习javaME,因为javaME主要是做手机的移动开发,这里面就不对javaME环境配置介绍了,因为网上有很全面的的介绍。对于j2ME我们接触最多是按钮(Command)所以我也是从这开始学习的,再学习CommandListener、LIst、textbox还有表单元。在API工具中我也学习了线程,这里面的线程和J2SE中的差不多,只是调用方式不同而已,不过都是extends Thread,但是在j2ME中药implements Runnable而已。还是比较容易些。最近学习到了Canvas绘图。就制作了一个拼图游戏。
一、拼图前思考
1、首先是拼图是一幅整体图片,但是我们拼图时是不同图块一个个拼接起来的,我们要怎么来出来呢?是用多个小图片拼接起来还是用一幅大图呢?
2、手机上的上下左右该怎么控制图片间的调用?
3、各个小图片怎么打乱?
4、怎么判断最终结果?
二、拼图过程
带着这些问题开始寻找答案,一步步实现。
针对问题1:
学习了Canvas,就可以重新绘制图形,如果界面引入很多张小图操作起来也非常麻烦而且需要的程序代码页需要很多,我就将多幅图片封装成为Image然后进行平均切割,然后通过数组进行存储图片的,把图片放到了数组中通过数组就可以直接调用
int[][] map = {{00,01,02,03},{10,11,12,13},
{20,21,22,23},{30,31,32,33}};
这个也为以后的打乱图片提供的帮助。在接下来就是图片的切割与图片有规律的存放到数组中,我这里面采用的是4*4的图片拼图,所以高度与宽度都采用原图形的四分之一。然后再确定坐标,合理的不重叠的叠放图片。
protected void paint(Graphics g) {
gra = g;
g.setColor(255, 255, 255);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
for(int x =0;x<4;x++){
for(int y=0 ; y<4;y++){
if(map[x][y]!=33){
//获取编号的第一位数
int xSegment = map[x][y]/10;
//获取编号的第2位数
int ySegment = map[x][y]%10;
//画到界面左上角
g.drawRegion(img, xSegment*edge, ySegment*edge, edge, edge, Sprite.TRANS_NONE,x*edge, y*edge,Graphics.LEFT|Graphics.TOP);
}
}
}
}
运用上诉代码进行图片的切割。
针对问题2
键盘的控制就是如何来控制哪个方向的图像移动到空白处,然后在边界处不让图片移动。所以就按照图像的布局进行安排调用。调用了SWITCH来进行方向键的选择判断。
//键盘按钮,用来移动
protected void keyPressed(int keyCode){
int action = this.getGameAction(keyCode);
int xOf = -1;
int yOf = -1;
for(int x=0;x<4;x++){
for(int y =0;y<4;y++){
if(map[x][y]==33){
xOf = x;
yOf = y;
break;
}
}
}
switch(action){
case GameCanvas.UP:
if(yOf!=3){
this.swap(xOf, yOf, xOf, yOf3+1);
}
break;
case GameCanvas.DOWN:
if(xOf!=0){
this.swap(xOf, yOf, xOf, yOf-1);
}
break;
case GameCanvas.LEFT:
if(xOf!=3){
this.swap(xOf, yOf, xOf+1, yOf);
}
break;
case GameCanvas.RIGHT:
if(xOf!=0){
this.swap(xOf, yOf, xOf-1, yOf);
}
repaint();
}
}
针对问题3
之前已经将图片存放到数组中了,所以我们只需要对数组进行改变,但是由于是随机打乱我们就必须用到Random函数,交换足够的个数。我这里就运用到了for循环。
void initMap(){
Random rnd = new Random();
int temp,x1,x2,y1,y2;
//将地图数组打乱
for(int i=0;i<100;i++){
x1 = rnd.nextInt(4);
x2 = rnd.nextInt(4);
y1 = rnd.nextInt(4);
y2 = rnd.nextInt(4);
temp = map[x1][y1];
map[x1][y1] = map[x2][y2];
map[x2][y2] = temp;
}
this.repaint();
}
针对问题4
想法是就是正常遍历数组的顺序,如果顺序不发生变化就拼接成功。按照常理也是这样的,但是功能还没有,总是报错还在调试。
三、拼图现结果
下面是实现的图片打乱:
这是实现基本的移动功能:
四、工程待续
上面还有很多要完善,首先实现一个拼图成功的判断,然后增添一个选项譬如可以实现4*4样式和5*5样式等,添加一个时间计时功能,判定谁的时间少。时间仓促完成效果还不是特理想了哦。。
- 大小: 69.8 KB
- 大小: 230.4 KB
分享到:
相关推荐
《华容道手机拼图游戏(经典)》是一款基于中国古代益智游戏的现代数字化实现,由ktoolbar开发工具精心打造。这款应用将传统的华容道游戏与现代科技相结合,为玩家带来全新的游戏体验。 华容道游戏源于中国,历史...
【标题】:“手机拼图游戏附源代码” 这个标题揭示了资源的核心内容——一个手机上的拼图游戏,并且提供有源代码。这可能是为开发者或编程学习者准备的一个项目,尤其是对Java 2 Micro Edition (J2ME)感兴趣的人。...
**J2ME开发的手机拼图游戏** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。J2ME提供了轻量级的框架,允许开发者创建可以在各种不同设备上运行的...
《J2ME手机拼图游戏开发详解》 J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式系统和移动设备,尤其是功能手机。在这个标题为"J2ME手机拼图游戏"的项目中,开发者利用J2ME技术创建了一个简单而...
标题中的“C#写的手机拼图游戏能实现游戏功能”表明这是一个使用C#编程语言开发的手机应用程序,其核心功能是拼图游戏。C#是一种广泛应用于桌面、Web以及移动平台开发的面向对象的编程语言,由微软公司推出,特别...
【Java手机拼图游戏】是基于Java编程语言和Eclipse集成开发环境开发的一款经典益智游戏。在本文中,我们将深入探讨如何利用Java语言和Eclipse来构建这样的应用程序,以及涉及的相关技术点。 首先,Java作为面向对象...
本文将详细探讨基于J2ME(Java 2 Micro Edition)的手机拼图游戏开发,旨在为计算机科学与技术专业的学生提供一个实际的项目案例,理解移动平台游戏开发的基本原理和技术。 1.1 手机软件现状 随着科技的进步,手机...
在本项目中,我们讨论的是一个基于Android平台的拼图游戏APP的源代码。这个APP是一个小型游戏,专为Android设备设计,旨在提供娱乐和认知训练。通过分析和理解这个源码,我们可以学习到Android应用开发中的多个核心...
超的手机拼图游戏毕业论文附测试代码.doc
本篇文章将深入探讨如何利用J2ME技术创建一个简单的手机拼图游戏,以帮助初学者了解游戏开发的基本流程和关键技巧。 1. **J2ME简介** J2ME是Java平台的一个子集,设计用于嵌入式设备和移动设备,如手机和平板电脑...
在手机拼图游戏中,优化加载速度、减少内存占用和流畅的动画效果都是重要的考量因素。 "Swing"在这里可能指的是Java Swing库,这是一个用于创建桌面应用程序的图形用户界面工具包。虽然Swing主要用于桌面应用,但有...
【标题】"js拼图游戏.rar"所涉及的是一个基于JavaScript实现的拼图游戏项目,这类游戏通常通过将图片切割成多个小块并打乱顺序,玩家需要通过拖动来恢复原图。JavaScript是一种广泛应用于网页开发的脚本语言,它能够...
java j2me 手机游戏 源代码 可以运行
《基于Android的拼图游戏开发详解》 在移动设备领域,Android系统因其开源特性与广泛的应用,成为开发者们实现各种创意应用的首选平台。本文将深入探讨一款基于Android的拼图游戏,它不仅提供了多种难度选择,还有...
【Android版拼图游戏源码】是一个专门为Android平台开发的游戏应用程序,它提供了拼图游戏的完整实现,包括源代码和内部注释。这个游戏共有9个关卡,这意味着玩家可以通过不同难度级别的拼图来挑战自己的思维和解决...
Java拼图游戏手机版是一款基于J2ME(Java 2 Micro Edition)平台开发的移动设备应用程序。J2ME是Java的一个子集,专为资源有限的移动设备如早期的智能手机和平板电脑设计,提供了运行Java应用的能力。这款拼图游戏...