论坛首页 移动开发技术论坛

雷电小知识

浏览 4562 次
锁定老帖子 主题:雷电小知识
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-27  
突然看到以前写过一个总结,做j2me的 小雷电,发个帖子 看看有用没,
如果做android游戏,这些多少也是基础,有用了可以看看

初始化多个子弹(原理是子弹运动的角度不同)
void doFire() {
		int m = 0;
		for (int i = 0; i < Balls.length; i++) {
			if (Balls[i][0] == 0) {
				m++;
				Balls[i][0] = 1;
				Balls[i][1] = shipX + shipImg.getWidth() / 2 - 3;
				Balls[i][2] = shipY - 20;
				Balls[i][3] = m;
				switch (m) {
				case 1: Balls[i][4] = 9;  break;
			    case 2:  Balls[i][4] = 8;  break;
				case 3: Balls[i][4] = 10; break;
				case 4: Balls[i][4] = 7; break;
				case 5: Balls[i][4] = 11; break;
				}
				if (m >= 5) break;
			} }


小球撞墙,宝物移动
之前初始化x,y和inx, incy的坐标(位置移动,如果越界根据inx,iny的正负确定移动方向,从而位置纠正)
			
	                          x+= incX;
				y+= incY;
				if (x] <= 0|| x + giftImg.getWidth() >= width) {
					x = incX > 0 ? width- giftImg.getWidth() : 0;
					incX = -incX;
				}
				if (y <= 0	|| y + giftImg.getHeight() >= height) {
					y = incY > 0 ? height- giftImg.getHeight() : 0;
					incY = -incY;
				}

宝物飞机碰撞, 飞机处理碰撞的原理等碰撞的原理(利用坐标和长和宽确定两个矩形 是否相交)
	
boolean checkCollide(int x1, int y1, int w1, int h1, int x2, int y2,int w2, int h2) {
		if (x1 + w1 >= x2 && x1 <= x2 + w2 && y1 + h1 >= y2 && y1 <= y2 + h2) {
			return true;
		}
		return false;
	}

组合键的实现

int  keyQueue[]=new int [3];
void putKey(int keyCode){
		keyQueue[2]=keyQueue[1];
		keyQueue[1]=keyQueue[0];
		keyQueue[0]=keyCode;
	}
void clearKey(){
		keyQueue[2]=keyQueue[1]=keyQueue[0]=0;
}
protected void keyPressed(int keyCode){
		if(System.currentTimeMillis()-keyReleasedTime>400){ clearKey();}
		putKey(keyCode);
}
protected void keyReleased(int keyCode){
		keyReleasedTime=System.currentTimeMillis();
}


抛物线:
int [][] enemyFleets=new int [14][4];//active ,x,y,type
//初始化抛物线运动
	void createEnemyFleets(){
		int p=0;
		for(int i=0;i<enemyFleets.length;i++){
			if(enemyFleets[i][0]==0){
				p++;
				enemyFleets[i][0]=1;
				enemyFleets[i][2]=-enemyFleetImg.getHeight();
				enemyFleets[i][3]=p;
				if(p>=2){
					break;
				}
			}
		}
	}
//画抛物线
int [][] enemyFleets=new int [14][4];//active ,x,y,type
		for(int i=0;i<enemyFleets.length;i++){
			if(enemyFleets[i][0]==1){
				enemyFleets[i][2]+=7;
				if(enemyFleets[i][3]==1){
					enemyFleets[i][1]=-enemyFleets[i][2]*enemyFleets[i][2]/200+width/2-enemyFleetImg.getWidth();
				}
				else{
					enemyFleets[i][1]=enemyFleets[i][2]*enemyFleets[i][2]/200+width/2;
				}
				if(enemyFleets[i][2]>height){
					enemyFleets[i][0]=0;
				}
				g.drawImage(enemyFleetImg, enemyFleets[i][1], enemyFleets[i][2], 20);
			}
		}


   发表时间:2012-02-02  
以前还真没做过类似这样的东西。
我想问一下如果屏幕上飞机也多,子弹也多,还有宝物什么的
这些东西在移动过程中,是不是要用不同的线程控制呢 还是怎么控制
0 请登录后投票
   发表时间:2012-02-02  
呵呵  这个在学校里学过一点!!!
0 请登录后投票
   发表时间:2012-02-08  
听起来怪有意思的
0 请登录后投票
   发表时间:2012-02-09  
不错,顶你一个,看起来很简单,但是是非常实用的东西
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics