分享
 
 
 

Ball.java---BallGame

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

//package BallGame;

import java.util.Timer;

import java.util.TimerTask;

import javax.microedition.lcdui.Image;

import javax.microedition.lcdui.game.Sprite;

/**

* <strong>FileName</strong>: Ball.java

* <HR>

* <strong>Description</strong>: Ball object attribute description.

* <P><HR>

* @author

* <em>

* This Game is developed by <B>Fansy</B>.<BR>

* F.S.Studio 1999~2005

* </em>

* @version 0.3.2

*/

public class Ball implements Runnable

{

private int signalx; //控制小球运动方向的信号量

private int signaly;

private int dx,dy; //小球移动的偏移量

private Bar bar;

private BallCanvas canvas; //绘图画布

private Block block; //砖块

private int Speed; //小球的移动速度

private Sprite ballsp; //小球精灵

private boolean isBallRun;

public Sprite createBallSprite()

{

Image ballimage=null;

try{ballimage=Image.createImage("/ballimage.png");} //装载小球图像

catch(Exception e){}

ballsp=new Sprite(ballimage); //创建小球精灵

ballsp.defineReferencePixel(2,2); //修改默认参考点

ballsp.defineCollisionRectangle(2,2,1,1); //设定小球的碰撞区域为中心的一个像素

reset();

return ballsp;

}

public void reset()

{

signalx=2; //控制小球运动方向的信号量

signaly=0;

dx=0; //小球横向偏移量

dy=0; //小球纵向偏移量

isBallRun=false;

ballsp.setPosition(120,257); //设定小球初始位置

setSpeed(10); //设定小球初始速度

}

public Ball(BallCanvas c,Bar b,Block bk)

{

canvas=c;

bar=b;

block=bk;

}

public void run() //小球运动触发事件

{

int tempx=signalx;

int tempy=signaly;

while(true)

{

if(tempx==0) //根据信号量移动小球

{

tempx=signalx;

ballsp.move(dx,0);

}

else tempx--;

if(tempy==0)

{

tempy=signaly;

ballsp.move(0,dy);

}

else tempy--;

if(ballsp.collidesWith(canvas.background,false)) //小球与边界的碰撞检测

{

if((dx<0&&ballsp.getRefPixelX()<=10)||(dx>0&&ballsp.getRefPixelX()>=230)) dx=dx*-1;

if(ballsp.getRefPixelY()<=10) dy=1;

}

if(ballsp.collidesWith(block.blocktd,false)) //小球与砖块的碰撞检测

{

block.setBlock((ballsp.getRefPixelX()-40)/20,(ballsp.getRefPixelY()-30)/10);

if((dx>0&&block.getBlockX()*20+40==ballsp.getRefPixelX())||(dx<0&&block.getBlockX()*20+20+40-1==ballsp.getRefPixelX()))

{

dx=dx*-1;

}

else if((dy>0&&block.getBlockY()*10+30==ballsp.getRefPixelY())||(dy<0&&block.getBlockY()*10+10+30-1==ballsp.getRefPixelY()))

{

dy=dy*-1;

}

// System.out.println("DEBUG_BALL_REF "+"x:"+ballsp.getRefPixelX()+"y:"+ballsp.getRefPixelY());

// System.out.println("DEBUG_BLOCK_INDEX "+"x:"+block.blockx+"y:"+block.blocky);

block.ClearBlock(); //清除碰撞到的砖块

canvas.addScore(20); //加分

canvas.isLevelClear(); //判断是否过关

}

if(ballsp.collidesWith(bar.barsp,false)) //小球与挡板的碰撞判断

{

int dd=ballsp.getRefPixelX()-bar.getBarRefPixelX();

dy=-1;

if(dd>0) //向右反弹

{

dx=1;

}

else //向左反弹

{

dx=-1;

dd=dd*-1;

}

dd=dd/5;

if(dd<=2) //设定小球运动角度

{

signalx=2-dd;

signaly=0;

}

else

{

signalx=0;

signaly=dd-2;

}

tempx=signalx;

tempy=signaly;

}

if(ballsp.getRefPixelY()>270)

{

new GameOver().showGameOver();

}

canvas.drawScreen();

System.gc();

try{Thread.sleep(Speed);}

catch(Exception e){}

}

}

public void start()

{

Thread t=new Thread(this);

t.start();

}

public void setSpeed(int sp)

{

Speed = sp;

}

public void setBallPosition(int x,int y)

{

ballsp.setPosition(x,y);

}

public boolean isBallRun()

{

return isBallRun;

}

public void setBallRun()

{

isBallRun=true;

dx=1;

dy=-1;

}

public void BallReady()

{

new Timer().schedule(new runBallTask(this),3000);

}

}

class runBallTask extends TimerTask

{

private Ball ball;

public runBallTask(Ball b)

{

ball=b;

}

public void run()

{

ball.setBallRun();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有