⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamelogic.java

📁 泡泡是一个j2me环境下开发的小游戏
💻 JAVA
字号:
/* =================================================*
 * 游戏逻辑类(包括:碰撞检测、碰撞效果、关卡、计分、泡泡发射间隔)
 * 作者:郭松柏 2004-10-20
 * 碰撞检测:根据小人的坐标、宽高和泡泡的宽高,扫描其周围的一定范围,
 * 如果为真,则碰撞,并根据泡泡的颜色得出相应的效果:减命,加20分,
 * 10秒内双倍分,以及无敌。
 * 关卡:共8关,随着关卡的增大,泡泡的发射间隔减少,摆幅增大,速度
 * 提高,发射范围更集中
 * 计分:一个泡泡出顶,加10分,得到黄泡泡加20分,得到蓝泡泡,10秒内
 * 双倍得分,在这段时间内再吃蓝泡泡,不累加效果
 * =================================================*/
public class GameLogic
{
	/**初始化**/
    protected boolean god;         //无敌
    protected boolean blueEffect;  //蓝色影响

    protected int effectNum;       //什么影响
    protected int level;           //关卡数
    protected int scores;          //得分
    protected boolean hited;       //是否碰撞
    protected String effect;       //影响状态
    private long beginEffeTime;    //开始影响时间
    private long endEffeTime;      //结束影响时间
    protected int lifes;           //命数
    protected int addScore;        //加分系数
    
    private int timeSlot;          //发射间隔
    protected int ppW;             //泡泡宽
    protected int ppH;             //泡泡高
    protected int poleW;           //小人宽
    protected int poleH;           //小人高
	
	protected GameLogic(){
	    blueEffect=false;
	    hited=false;
	    god=false;
	    lifes=3;
	    addScore=10;
	    this.ppW=20;
	    this.ppH=20;
	    this.poleW=24;
	    this.poleH=36;
	}

	/**==============================**
	 **            碰撞检测
	 **==============================**/
    protected boolean hitTest(int poleX,int poleY,int ppX,int ppY,int imgNum){
    	if (ppX > poleX - ppW && 
    		ppX < poleX + poleW &&
			ppY > poleY - ppH &&
			ppY < poleY + poleH){
			hited=true;
			switch (imgNum){
				case 0 :{ //红泡泡
					redEffect();
					effectNum=1;
					break;
				}
				case 1 :{ //绿泡泡
					greenEffect();
					effectNum=2;
					break;
				}
				case 2 :{ //黄泡泡
					yellowEffect();
					effectNum=3;
					break;
				}
				case 3 :{ //蓝泡泡
					blueEffectBegin();
					effectNum=4;
					break;
				}
			}
		}else{ hited=false; }
    	return hited;
    }

	/**==============================**
	 **            加  分
	 **==============================**/
	protected void addScores()
	{
		scores = scores+addScore;
	}
	
	/**==============================**
	 **             效果
	 **==============================**/
	/*-------- 红泡泡 --------*/
    protected void redEffect(){  //命数减1或取消无敌
    	if(god){
    		god=false;  //抵御失效
    	}else{
                god=true;
	    	if(lifes>0){
    		    lifes--;
    	    	//System.out.println("lifes--");
	    	}
    	}
    }
    /*-------- 绿泡泡 --------*/
    protected void greenEffect(){ //抵御1次攻击
    	//System.out.println("god");
    	god=true;
    }
    /*-------- 黄泡泡 --------*/
    protected void yellowEffect(){  //加20分
    	scores = scores+addScore*2;
    }
    /*-------- 蓝泡泡 --------*/
    protected void blueEffectBegin(){ //开始2倍加分
    	beginEffeTime=System.currentTimeMillis();
    	//System.out.println("2倍加分开始!");
    	addScore=20;
    	blueEffect=true;
    }
    protected void blueEffectEnd(){ //结束2倍加分
    	if(blueEffect){
            endEffeTime=System.currentTimeMillis();
            long timeOff=endEffeTime-beginEffeTime;
            if(timeOff>10000){
            	//System.out.println("2倍加分失效!");
            	addScore=10;
            	blueEffect=false;
            }
    	}
    }
    
	/**==============================**
	 **           发射泡泡时间间隔
	 **==============================**/
	protected int getTimeSlot(){
    	switch (level){
    	    case 1:{
        		timeSlot=1770;
        		break;
        	}
    	    case 2:{
        		timeSlot=1416;
        		break;
        	}
    	    case 3:{
        		timeSlot=944;
        		break;
        	}
    	    case 4:{
        		timeSlot=787;
        		break;
        	}
    	    case 5:{
        		timeSlot=590;
        		break;
        	}
    	    case 6:{
        		timeSlot=505;
        		break;
        	}
    	    case 7:{
        		timeSlot=405;
        		break;
        	}
    	    case 8:{
        		timeSlot=354;
        		break;
        	}
    	}		
    	return timeSlot;
    }
	
	/**==============================**
	 **            关卡设置
	 **==============================**/
    protected int getLevel(){
    	if (scores < 200)
			level = 1;
		if (scores >= 200) //200
			level = 2;
		if (scores >= 500) //500
			level = 3;
		if (scores >= 1100)//1100
			level = 4;
		if (scores >= 2000)//2000
			level = 5;
		if (scores >= 3200)//3200
			level = 6;
		if (scores >= 4700)//4700
			level = 7;
		if (scores >= 6500)//6500
			level = 8;
		return level;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -