雷电小知识

突然看到以前写过一个总结,做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);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值