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环境中创建和显示游戏地图。 首先,地图设计是游戏世界构建的基础,它不仅包括地形、障碍物、路径等元素的布局,还涉及游戏世界的视觉风格和玩家导航机制。在J2ME中,地图通常以二维数组...
本文将深入探讨如何在Java Micro Edition (J2ME)环境中有效地创建和呈现游戏地图。 首先,地图系统通常不是通过编程直接编写,而是通过地图编辑器来创建。程序员可以自建地图编辑器,或者利用像mappy这样的第三方...
在这个“RPG游戏中地图滚动演示”项目中,我们将探讨如何在J2ME环境下实现地图的无缝滚动效果。 首先,我们要理解地图滚动的基本原理。在RPG游戏中,地图通常被分割成多个小块,称为“图块”或“tile”,这些图块...
7. **J2me游戏1945第二版源代码**:1945是一款流行的垂直滚动射击游戏,这个J2ME版本展示了如何在小屏幕设备上实现高帧率的飞行射击游戏。源码提供了处理大量游戏对象、子弹轨迹和敌机AI的实例。 8. **J2me手机...
J2ME游戏地图可以采用二维数组或图块(Tile)方式进行存储,每个位置对应一个特定的地图元素。开发者可以使用循环遍历地图数据,根据每个元素绘制相应的图块。地图滚动可以通过调整绘制的起始坐标来实现。 **5. ...
总的来说,卡马克卷轴算法是2D游戏地图滚动中的高效解决方案,它巧妙地减少了内存使用和绘制次数,从而确保游戏在有限资源的设备上也能运行顺畅。这种算法至今仍被广泛应用于各种2D游戏开发中,成为了优化滚动效果的...
开发者可以使用二维数组或对象网格来表示游戏地图,每个单元格代表地图上的一个位置。地图可以是静态的,也可以是动态生成的,支持滚动和缩放。以下是一些常见的地图绘制技术: - **Tile-based**: 使用小块图像...
总之,"J2ME开发RPG,ACT游戏的地图缓存类,卡马克卷轴算法封装类"是一个为J2ME游戏开发者提供的实用工具,它解决了在有限资源下实现流畅地图滚动的难题。通过这个类和算法的使用,开发者可以创建出更加精细且运行...
飞机根据用户输入移动,子弹发射,地图滚动,碰撞检测和处理等都在这个循环中进行。 3. 用户交互:Menu.java处理用户输入的命令,如选择开始游戏、查看分数等。 4. 结束与暂停:当游戏结束或用户选择退出时,...
**J2ME RPG游戏源码详解** Java 2 Micro Edition(J2ME)是一种轻量级的Java平台,主要用于移动设备、嵌入式系统和...提供的"J2ME RPG游戏源码"可以作为学习和参考的实例,帮助开发者深入了解J2ME游戏开发的实际应用。
在J2ME游戏开发中,经验的积累是提升游戏性能和用户体验的关键。以下是一些重要的技术要点和优化策略: 1. 地图大小限制:为了兼容各种设备,地图大小应控制在合理范围内,例如30*30。这有助于减少内存占用,确保...
同时,为了实现移动时的地图滚动效果,可能还涉及到了视口的概念。 3. **战斗系统**:尽管描述中提到战斗画面,但没有具体说明实现细节。在J2ME环境中,战斗系统可能采用了回合制或实时战斗模式。回合制战斗中,...
本篇将深入解析一款基于J2ME的飞机小游戏,它包含了地图滚动、子弹与飞机碰撞以及爆炸效果等基本功能,让我们一起探索这个小型游戏背后的技术细节。 首先,我们要理解J2ME的基础架构。J2ME由配置(Configurations)...
《J2ME手机游戏高级编程》作为一门深入探讨手机游戏开发的专业课程,其期末试题旨在检验学生对于手机游戏编程技术的掌握程度,尤其是基于Java 2 Micro Edition (J2ME)平台的游戏开发技能。这份试卷聚焦于MIDP 2.0...
总之,“炸弹人”源码提供了一个绝佳的学习平台,让我们能够深入理解J2ME游戏开发的细节,掌握移动游戏设计的基本原则,从而激发我们去创造属于自己的游戏。无论是初学者还是经验丰富的开发者,都能从中受益,提升...
总之,这个压缩包提供的代码实例为初学者提供了一个宝贵的实践平台,让他们能够深入理解J2ME游戏开发的各个环节,同时也可以为有经验的开发者提供灵感和参考。通过仔细研究和实践,学习者可以逐步掌握创建自己手机横...
1. **背景(backdrop)**:在J2ME游戏中,背景通常用于创建场景,提供视觉环境。开发者需要考虑如何高效地加载和显示这些背景图片,以确保游戏流畅运行。例如,可以使用精灵(Sprite)技术来实现滚动背景或分块加载...
综上所述,卡马克卷轴算法是J2ME游戏开发中提高地图滚动性能的重要工具,尤其是在资源有限的环境中,它能够显著提升用户体验,减少闪烁,保证游戏流畅运行。通过对算法的理解和实践,开发者可以更好地适应不同设备和...
通过研究这个“手机炸弹人JAVA源码”,我们可以了解到J2ME游戏开发的基本流程和技巧,这对于想要学习移动游戏开发的人来说是一份宝贵的实践资料。同时,对于已经有一定经验的开发者,这个源码也能提供灵感和参考,以...
通过Canvas,开发者可以绘制游戏地图、角色和互动元素。 5. **SampleCanvas**:这可能是另一个图形绘制的示例,可能讲解如何使用Canvas来创建自定义的用户界面或者游戏场景。 6. **Board.java**:这可能是一个抽象...