`
tianmingqi
  • 浏览: 118564 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

J2me游戏地图滚动

阅读更多
package com.mhxy.util;

import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.TiledLayer;

/**********************处理地图滚动************************************/
public class MapContor implements Runnable{
	private LayerManager lm;//图层管理器
	private TiledLayer map;
	private Zhujiao zhujiao;//游戏主角
	private int h;//屏幕水平宽度
	private int v;//屏幕垂直高度
	private int start=35;//主角距离屏幕start时开始滚屏
	private int x=0;//视窗坐标
	private int y=0;//视窗坐标
	private int map_speed=10;//地图滚动间隔时间数
	
	public MapContor(LayerManager lm,TiledLayer map,Zhujiao zhujiao,int width,int height){
		this.lm=lm;
		this.map=map;
		this.zhujiao=zhujiao;
		this.h=width;
		this.v=height;
		
		//设置可视窗口大小与坐标
		lm.setViewWindow(x,y, h, v);
	}
	public void run() {
		/****************主角距离屏幕小于length时开始滚屏**************************/
		while(true){
			//触发左滚
			if(zhujiao.getX()-this.x<this.start){
				boolean flag=true;
				while(flag){
					if(this.x>0){//可以左滚
						if(zhujiao.getX()-this.x<this.h/2){//主角没有滚到中心
							lm.setViewWindow(x--, y, h, v);
						}else{
							flag=false;
						}
					}else{
						flag=false;
					}
					this.Mysleep();
				}
			}

			//触发上滚
			if(zhujiao.getY()-this.y<this.start){
				boolean flag=true;
				while(flag){
					if(this.y>0){//可以上滚
						if(zhujiao.getY()-this.y<this.v/2){//主角没有滚到中心
							lm.setViewWindow(x, y--, h, v);
						}else{
							flag=false;
						}
					}else{
						flag=false;
					}
					this.Mysleep();
				}
			}

			//触发右滚
			if((this.x+this.h)-(zhujiao.getX()+zhujiao.getWidth())<this.start){
				boolean flag=true;
				while(flag){
					if(this.x+this.h<map.getCellWidth()){//可以右滚
						if(zhujiao.getX()-this.x>this.h/2){//主角没有滚到中心
							lm.setViewWindow(x++, y, h, v);
						}else{
							flag=false;
						}
					}else{
						flag=false;
					}
					this.Mysleep();
				}
			}
			//触发下滚
			if((this.y+this.v)-(zhujiao.getY()+zhujiao.getHeight())<this.start){
				boolean flag=true;
				while(flag){
					if(this.y+this.v<map.getHeight()){//可以下滚
						if(zhujiao.getY()-this.y>this.v/2){//主角没有滚到中心
							lm.setViewWindow(x, y++, h, v);
						}else{
							flag=false;
						}
					}else{
						flag=false;
					}
					this.Mysleep();
				}
			}
			
			try {
				Thread.currentThread().sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		
	}//end run
	
	public void Mysleep(){
		/**休息**/
		try {
			Thread.currentThread().sleep(map_speed);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

分享到:
评论

相关推荐

    J2ME_Map.rar_J2ME 地图_J2ME游戏_j2me 游戏_j2me_m_绘制地图

    本主题将深入探讨如何在J2ME环境中创建和显示游戏地图。 首先,地图设计是游戏世界构建的基础,它不仅包括地形、障碍物、路径等元素的布局,还涉及游戏世界的视觉风格和玩家导航机制。在J2ME中,地图通常以二维数组...

    J2ME游戏开发中的地图设计与绘制.doc

    本文将深入探讨如何在Java Micro Edition (J2ME)环境中有效地创建和呈现游戏地图。 首先,地图系统通常不是通过编程直接编写,而是通过地图编辑器来创建。程序员可以自建地图编辑器,或者利用像mappy这样的第三方...

    RPG游戏中地图滚动演示

    在这个“RPG游戏中地图滚动演示”项目中,我们将探讨如何在J2ME环境下实现地图的无缝滚动效果。 首先,我们要理解地图滚动的基本原理。在RPG游戏中,地图通常被分割成多个小块,称为“图块”或“tile”,这些图块...

    J2ME小游戏合集很实用

    7. **J2me游戏1945第二版源代码**:1945是一款流行的垂直滚动射击游戏,这个J2ME版本展示了如何在小屏幕设备上实现高帧率的飞行射击游戏。源码提供了处理大量游戏对象、子弹轨迹和敌机AI的实例。 8. **J2me手机...

    J2ME 游戏开发(基本功能开发)

    J2ME游戏地图可以采用二维数组或图块(Tile)方式进行存储,每个位置对应一个特定的地图元素。开发者可以使用循环遍历地图数据,根据每个元素绘制相应的图块。地图滚动可以通过调整绘制的起始坐标来实现。 **5. ...

    J2me游戏滚屏思想

    总的来说,卡马克卷轴算法是2D游戏地图滚动中的高效解决方案,它巧妙地减少了内存使用和绘制次数,从而确保游戏在有限资源的设备上也能运行顺畅。这种算法至今仍被广泛应用于各种2D游戏开发中,成为了优化滚动效果的...

    J2ME 游戏(基本功能开发)

    开发者可以使用二维数组或对象网格来表示游戏地图,每个单元格代表地图上的一个位置。地图可以是静态的,也可以是动态生成的,支持滚动和缩放。以下是一些常见的地图绘制技术: - **Tile-based**: 使用小块图像...

    J2ME开发RPG,ACT游戏的地图缓存类,卡马克卷轴算法封装类

    总之,"J2ME开发RPG,ACT游戏的地图缓存类,卡马克卷轴算法封装类"是一个为J2ME游戏开发者提供的实用工具,它解决了在有限资源下实现流畅地图滚动的难题。通过这个类和算法的使用,开发者可以创建出更加精细且运行...

    J2ME飞机游戏程序模版

    飞机根据用户输入移动,子弹发射,地图滚动,碰撞检测和处理等都在这个循环中进行。 3. 用户交互:Menu.java处理用户输入的命令,如选择开始游戏、查看分数等。 4. 结束与暂停:当游戏结束或用户选择退出时,...

    J2ME RPG游戏源码

    **J2ME RPG游戏源码详解** Java 2 Micro Edition(J2ME)是一种轻量级的Java平台,主要用于移动设备、嵌入式系统和...提供的"J2ME RPG游戏源码"可以作为学习和参考的实例,帮助开发者深入了解J2ME游戏开发的实际应用。

    J2me游戏开发经验总结

    在J2ME游戏开发中,经验的积累是提升游戏性能和用户体验的关键。以下是一些重要的技术要点和优化策略: 1. 地图大小限制:为了兼容各种设备,地图大小应控制在合理范围内,例如30*30。这有助于减少内存占用,确保...

    J2ME RPG游戏 仿梦幻西游

    同时,为了实现移动时的地图滚动效果,可能还涉及到了视口的概念。 3. **战斗系统**:尽管描述中提到战斗画面,但没有具体说明实现细节。在J2ME环境中,战斗系统可能采用了回合制或实时战斗模式。回合制战斗中,...

    一个J2ME的关于飞机的小游戏

    本篇将深入解析一款基于J2ME的飞机小游戏,它包含了地图滚动、子弹与飞机碰撞以及爆炸效果等基本功能,让我们一起探索这个小型游戏背后的技术细节。 首先,我们要理解J2ME的基础架构。J2ME由配置(Configurations)...

    J2ME手机游戏高级编程试卷

    《J2ME手机游戏高级编程》作为一门深入探讨手机游戏开发的专业课程,其期末试题旨在检验学生对于手机游戏编程技术的掌握程度,尤其是基于Java 2 Micro Edition (J2ME)平台的游戏开发技能。这份试卷聚焦于MIDP 2.0...

    炸弹人源码(J2ME).rar_bomb_java炸弹人_手机 游戏_游戏 j2me_炸弹

    总之,“炸弹人”源码提供了一个绝佳的学习平台,让我们能够深入理解J2ME游戏开发的细节,掌握移动游戏设计的基本原则,从而激发我们去创造属于自己的游戏。无论是初学者还是经验丰富的开发者,都能从中受益,提升...

    j2me手机横版动作类游戏

    总之,这个压缩包提供的代码实例为初学者提供了一个宝贵的实践平台,让他们能够深入理解J2ME游戏开发的各个环节,同时也可以为有经验的开发者提供灵感和参考。通过仔细研究和实践,学习者可以逐步掌握创建自己手机横...

    J2ME开发网提供的PNG素材打包下载

    1. **背景(backdrop)**:在J2ME游戏中,背景通常用于创建场景,提供视觉环境。开发者需要考虑如何高效地加载和显示这些背景图片,以确保游戏流畅运行。例如,可以使用精灵(Sprite)技术来实现滚动背景或分块加载...

    卡马克卷轴算法研究 J2ME框架下

    综上所述,卡马克卷轴算法是J2ME游戏开发中提高地图滚动性能的重要工具,尤其是在资源有限的环境中,它能够显著提升用户体验,减少闪烁,保证游戏流畅运行。通过对算法的理解和实践,开发者可以更好地适应不同设备和...

    手机炸弹人JAVA源码.zip_J2ME 源码_j2me_炸弹人

    通过研究这个“手机炸弹人JAVA源码”,我们可以了解到J2ME游戏开发的基本流程和技巧,这对于想要学习移动游戏开发的人来说是一份宝贵的实践资料。同时,对于已经有一定经验的开发者,这个源码也能提供灵感和参考,以...

    Sun J2ME官方例程若干

    通过Canvas,开发者可以绘制游戏地图、角色和互动元素。 5. **SampleCanvas**:这可能是另一个图形绘制的示例,可能讲解如何使用Canvas来创建自定义的用户界面或者游戏场景。 6. **Board.java**:这可能是一个抽象...

Global site tag (gtag.js) - Google Analytics