📄 mysprite.java
字号:
debris_x=flashxfirst;//((x+1+6)/World.TILE_WIDTH)*13;
debris_y=flashy;//((y-1)/World.TILE_HEIGHT)*13-gs.currentViewPosY+gs.getHeight()/2;
debris_t=0;
World.tileMap[(y-1)/World.TILE_HEIGHT][(x+1+6)/World.TILE_WIDTH]=32;
if(this.up_tile==17)//如果是钱砖则添加到钱砖vector
{
has_coin_bricks=false;
for(int i=0;i<coin_bricks.size();i++)
{
cb cbtmp=(cb)coin_bricks.elementAt(i);
if(cbtmp.x==flashx0&&cbtmp.y==flashy0)
{
has_coin_bricks=true;
break;
}
}
if(has_coin_bricks==false)
{
cb cb=new cb(flashx0,flashy0);
coin_bricks.addElement(cb);
}
}
ding=true;
if(state==1||state==4||state==2)//如果是big mario则砖块效果为爆炸
{
is_debris=true;
is_flash=false;
if(whichflash==1)//顶到砖+50分
GameScreen.score+=50;
}
else//如果是small mario则砖块效果为闪烁
{
is_debris=false;
is_flash=true;
}
if(this.up_tile==2||this.up_tile==17)
{
coin coin=new coin(Image_coin,Image_num,flashxfirst,flashy-10,gs);
coins.addElement(coin);
mario_coins++;
}
}
}
}
if(life==false)//mario死亡时
{
up_canmove=true;
down_canmove=true;
}
}
public void setFrame(int num)
{
if(Frames!=0)
{
this.curFrame=num;
cursprow=num/spscols;
curspcol=num%spscols;
}
else
this.curFrame=-1;
}
public int getFrame()
{
return this.curFrame;
}
public void setPosition(int x,int y)
{
this.curspX=x;
this.curspY=y;
}
public void draw(Graphics g)
{
g.setClip(curspX,curspY,spwidth,spheight);
g.drawImage(spsImage,curspX-curspcol*spwidth,curspY-cursprow*spheight,g.TOP|g.LEFT);
if(ding==true)//如果顶到砖块或问号时
{
if(whichflash==2||whichflash==17||whichflash==28)//如果顶的是问号、钱砖或长大,则问号、钱砖或长大闪烁
flash(g);
else if(whichflash==1)//如果顶的是砖
{
if(is_debris==true)
debris(g);
if(is_flash==true)
flash(g);
}
}
for(int i=0;i<coins.size();i++)
{
coin cointmp=(coin)coins.elementAt(i);
if(cointmp.jumptimes>=0)
{
cointmp.draw(g);
if(cointmp.jumptimes>=30)
cointmp.shangsheng=false;
if(cointmp.shangsheng==true)
cointmp.jumptimes+=3;
else
cointmp.jumptimes-=3;
}
else
{
cointmp.fentimes++;
cointmp.draw(g);
}
if(cointmp.fentimes>20)
coins.removeElementAt(i);
}
}
//砖块和问号的闪烁效果
public void flash(Graphics g)
{
int offset_x=whichflash%16-1;
int offset_y=whichflash/16;
flashx=flashxfirst-gs.currentViewPosX+gs.getWidth()/2;
g.setClip(flashx,flashy,13,13);
g.drawImage(World.Image_tile,flashx-offset_x*13,flashy-offset_y*13,Graphics.TOP|Graphics.LEFT);
if(flashtime<=2)
flashy--;
else if(flashtime>=3&&ding==true)
flashy++;
flashtime++;
if(flashtime==6)
{
is_flash=false;
ding=false;
flashtime=0;
if(whichflash==1)//砖闪
World.tileMap[flashy0][flashx0]=1;
else if(whichflash==2)//问号或长大闪
World.tileMap[flashy0][flashx0]=3;
else if(whichflash==17)//钱砖
{
int i;
cb cbtmp=null;
for(i=0;i<coin_bricks.size();i++)
{
cbtmp=(cb)coin_bricks.elementAt(i);
if(cbtmp.x==flashx0&&cbtmp.y==flashy0)
break;
}
if(cbtmp.nums==0)
{
coin_bricks.removeElementAt(i);
World.tileMap[flashy0][flashx0]=3;
}
else
{
cbtmp.nums--;
World.tileMap[flashy0][flashx0]=17;
}
}
else if(whichflash==28)//顶到长大蘑菇
{
World.tileMap[flashy0][flashx0]=3;
mushroom_show=true;
mushroom_x=flashx0;
mushroom_y=flashy0;
}
}
}
//砖块的粉碎效果
public void debris(Graphics g)
{
debris_x=flashxfirst-gs.currentViewPosX+gs.getWidth()/2;
if((debris_y-(debris_vy*debris_t-debris0_g*debris_t*debris_t*4000)/100000)<140)
{
debris0_x=debris_x-debris_vx*debris_t/100000;
debris0_y=debris_y-(debris_vy*debris_t-debris0_g*debris_t*debris_t*4000)/100000;
g.setClip(debris0_x,debris0_y,6,6);
g.drawImage(Image_debris,debris0_x,debris0_y,Graphics.TOP|Graphics.LEFT);
debris1_x=debris_x+6+debris_vx*debris_t/100000;
debris1_y=debris_y-(debris_vy*debris_t-debris0_g*debris_t*debris_t*4000)/100000;
g.setClip(debris1_x,debris1_y,6,6);
g.drawImage(Image_debris,debris1_x-6,debris1_y,Graphics.TOP|Graphics.LEFT);
debris2_x=debris_x-debris_vx*debris_t/100000;
debris2_y=debris_y+6-(debris_vy*debris_t-debris1_g*debris_t*debris_t*4000)/100000;
g.setClip(debris2_x,debris2_y,6,6);
g.drawImage(Image_debris,debris2_x,debris2_y,Graphics.TOP|Graphics.LEFT);
debris3_x=debris_x+6+debris_vx*debris_t/100000;
debris3_y=debris_y+6-(debris_vy*debris_t-debris1_g*debris_t*debris_t*4000)/100000;
g.setClip(debris3_x,debris3_y,6,6);
g.drawImage(Image_debris,debris3_x-6,debris3_y,Graphics.TOP|Graphics.LEFT);
debris_t++;
}
else
{
is_debris=false;
ding=false;
}
}
public void draw(Graphics g,int x,int y)
{
setPosition(x,y);
draw(g);
}
public int getX()
{
return this.curspX;
}
public int getY()
{
return this.curspY;
}
public void setVisible(boolean visible)
{
this.visible=visible;
}
public boolean isVisible()
{
return this.visible;
}
public void walk(int way,int startframe,int endframe,int x,int y)
{
switch(way)
{
case(0)://向左走
for(int i=0;i<spspeed;i++)
{
curspX--;
CanMove(x+curspX,y+curspY);
if(left_canmove==false)
break;
}
break;
case(1)://向右走
for(int i=0;i<spspeed;i++)
{
curspX++;
CanMove(x+curspX,y+curspY);
if(right_canmove==false)
break;
}
break;
}
if(curFrame<startframe||curFrame>endframe)
curFrame=startframe;
curFrame++;
if(curFrame==endframe)
curFrame=startframe;
}
}
class coin
{
public int curx0,cury,curx;
public int jumptimes=0,fentimes=5;
public int curFrame=0;
public int width=6,height=10;
public Image Image_coin,Image_fen;
private GameScreen gs;
public boolean shangsheng=true;
public coin(Image img,Image img2,int x,int y,GameScreen gsArg)
{
this.Image_coin=img;
this.Image_fen=img2;
this.curx0=x;
this.cury=y;
this.gs=gsArg;
GameScreen.score+=200;
GameScreen.coinnum++;
}
public void draw(Graphics g)
{
if((jumptimes>=5)||(shangsheng==true))
{
switch(jumptimes%27)
{
case(0):
curFrame=2;
break;
case(9):
curFrame=1;
break;
case(18):
curFrame=0;
break;
}
curx=curx0-gs.currentViewPosX+gs.getHeight()/2+6;
g.setClip(curx,cury-jumptimes,width,height);
g.drawImage(Image_coin,curx,cury-jumptimes-curFrame*height,g.TOP|g.LEFT);
}
else//显示"200"
{
curx=curx0-gs.currentViewPosX+gs.getHeight()/2;
g.setClip(curx,cury-fentimes,4,7);
g.drawImage(Image_fen,curx-1*4,cury-fentimes,g.TOP|g.LEFT);
g.setClip(curx+5,cury-fentimes,4,7);
g.drawImage(Image_fen,curx+5-9*4,cury-fentimes,g.TOP|g.LEFT);
g.setClip(curx+10,cury-fentimes,4,7);
g.drawImage(Image_fen,curx+10-9*4,cury-fentimes,g.TOP|g.LEFT);
}
}
}
class cb
{
public int x,y,nums=2;
public cb(int x,int y)
{
this.x=x;
this.y=y;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -