📄 forthyear.java
字号:
////////////////////////////////////////////////////////////////////////////////
//
// ForthYear.java
//
// 开发者:刘嘉祥
//
////////////////////////////////////////////////////////////////////////////////
//
// 功能:
// 实现剧情中第四年的动画绘制。
//
////////////////////////////////////////////////////////////////////////////////
import java.awt.Graphics2D;
import java.awt.Color;
class ForthYear
{
static void drawForthYear(Graphics2D g2d,int a_frame)
{
int i = (a_frame%20==0) ? 20 : (a_frame%20);
Draw.drawLine(g2d,0,380,600,380);//地板
//配角
//拿武器
if(a_frame<=10)
{
Draw.drawCircle(g2d,200,255,25,25);//头
Draw.drawLine(g2d,200,320,200,280);//身体
Draw.drawLine(g2d,200,320,220,380);
Draw.drawLine(g2d,200,320,180,380);
Draw.drawLine(g2d,200,285,180,305);
Draw.drawLine(g2d,180,305,200,315);
Draw.drawLine(g2d,200,285,225,290);
Draw.drawLine(g2d,225,290,200,315);
}
//持枪+耍枪+台词+疑问
else if(a_frame<=283)
{
Draw.drawCircle(g2d,200,255,25,25);//头
Draw.drawLine(g2d,200,320,200,280);//身体
Draw.drawLine(g2d,200,320,220,380);//腿
Draw.drawLine(g2d,200,320,180,380);
Draw.drawLine(g2d,200,285,180,305);//手
Draw.drawLine(g2d,180,305,200,315);
Draw.drawLine(g2d,200,285,225,300);
//耍枪
if((a_frame>20)&&(a_frame<=60))
{
if(i%5==1)
Animation.gunRotateSound.play();
Draw.drawLine(g2d,225,300,255+i%5,295-i%5);//手
g2d.translate(255+i%5,295-i%5);
g2d.rotate(-i*2*Math.PI/5);
Draw.drawLine(g2d,12,-6,-4,-6);
Draw.drawLine(g2d,-4,-6,-6,4);
g2d.rotate(i*2*Math.PI/5);
g2d.translate(-255-i%5,-295+i%5);
}
//持枪
else
{
if(a_frame==11)
Animation.haSound.play();
Draw.drawLine(g2d,225,300,255,295);//手
Draw.drawLine(g2d,267,289,251,289);//枪
Draw.drawLine(g2d,251,289,249,299);
}
//台词
if((a_frame>80)&&(a_frame<=140))
Subtitle.drawBuShiDuiShou(g2d,(a_frame-80));
//疑问
if((a_frame>200)&&(a_frame<=240))
Subtitle.drawQuestionMark(g2d,(a_frame-200));
}
//摔
else if(a_frame<=295)
{
int j = a_frame-283;
Draw.drawLine(g2d,210+j*10/12,270+j*3/12,235+j*10/12,275+j*3/12);//左手
Draw.drawLine(g2d,235+j*10/12,275+j*3/12,260+j*10/12,270+j*3/12);
Draw.drawLine(g2d,205,305-j*2/12,210+j*15/12,265+j*3/12);//身体
Draw.drawCircle(g2d,215+j*20/12,240+j*3/12,25,25);//头
Draw.drawLine(g2d,205,305-j*2/12,210+j*5/12,335-j*7/12);//腿
Draw.drawLine(g2d,210+j*5/12,335-j*7/12,205-j*10/12,365-j*7/12);
Draw.drawLine(g2d,205,305-j*2/12,190-j*20/12,365-j*17/12);
Draw.drawLine(g2d,210+j*10/12,270+j*3/12,190+j*10/12,285+j*8/12);//右手
Draw.drawLine(g2d,190+j*10/12,285+j*8/12,195+j*35/12,310-j*7/12);
}
else if(a_frame<=310)
{
int j = a_frame-295;
Draw.drawLine(g2d,220+j*30/15,273+j*7/15,245+j*30/15,278+j*12/15);//左手
Draw.drawLine(g2d,245+j*30/15,278+j*12/15,270+j*30/15,273+j*12/15);
Draw.drawLine(g2d,205+j*10/15,303-j*3/15,225+j*30/15,268+j*7/15);//身体
Draw.drawCircle(g2d,235+j*35/15,243+j*12/15,25,25);//头
Draw.drawLine(g2d,205+j*10/15,303-j*3/15,215-j*5/15,328-j*3/15);//腿
Draw.drawLine(g2d,215-j*5/15,328-j*3/15,195-j*10/15,358-j*18/15);
Draw.drawLine(g2d,205+j*10/15,303-j*3/15,170-j*5/15,348-j*33/15);
Draw.drawLine(g2d,220+j*30/15,273+j*7/15,200+j*55/15,293+j*7/15);//右手
Draw.drawLine(g2d,200+j*55/15,293+j*7/15,230+j*45/15,303+j*17/15);
}
else if(a_frame<=340)
{
int j = a_frame-310;
Draw.drawLine(g2d,250+j*68/30,280+j*33/30,275+j*73/30,290+j*25/30);//左手
Draw.drawLine(g2d,275+j*73/30,290+j*25/30,300+j*80/30,285+j*23/30);
Draw.drawLine(g2d,215+j*70/30,300+j*20/30,255+j*70/30,275+j*35/30);//身体
Draw.drawCircle(g2d,270+j*80/30,255+j*50/30,25,25);//头
Draw.drawLine(g2d,215+j*70/30,300+j*20/30,210+j*50/30,325+j*10/30);//腿
Draw.drawLine(g2d,210+j*50/30,325+j*10/30,185+j*45/30,340-j*5/30);
Draw.drawLine(g2d,215+j*70/30,300+j*20/30,165+j*60/30,315);
Draw.drawLine(g2d,250+j*68/30,280+j*33/30,255+j*75/30,300+j*33/30);//右手
Draw.drawLine(g2d,255+j*75/30,300+j*33/30,275+j*80/30,320+j*25/30);
}
else if(a_frame<=370)
{
int j = a_frame-340;
Draw.drawLine(g2d,318+j*57/30,313+j*52/30,348+j*52/30,315+j*59/30);//左手
Draw.drawLine(g2d,348+j*52/30,315+j*59/30,380+j*55/30,308+j*66/30);
Draw.drawLine(g2d,285+j*55/30,320+j*54/30,325+j*55/30,310+j*53/30);//身体
Draw.drawCircle(g2d,350+j*55/30,305+j*50/30,25,25);//头
Draw.drawLine(g2d,285+j*55/30,320+j*54/30,260+j*55/30,335+j*39/30);//腿
Draw.drawLine(g2d,260+j*55/30,335+j*39/30,230+j*55/30,335+j*39/30);
Draw.drawLine(g2d,285+j*55/30,320+j*54/30,225+j*55/30,315+j*59/30);
Draw.drawLine(g2d,318+j*57/30,313+j*52/30,330+j*40/30,333+j*41/30);//右手
Draw.drawLine(g2d,330+j*40/30,333+j*41/30,355+j*50/30,345+j*29/30);
}
else
{
Draw.drawLine(g2d,375,365,400,374);//左手
Draw.drawLine(g2d,400,374,435,374);
Draw.drawLine(g2d,340,374,380,363);//身体
Draw.drawCircle(g2d,405,355,25,25);//头
Draw.drawLine(g2d,340,374,315,374);//腿
Draw.drawLine(g2d,315,374,285,374);
Draw.drawLine(g2d,340,374,280,374);
Draw.drawLine(g2d,375,365,370,374);//右手
Draw.drawLine(g2d,370,374,405,374);
}
if((a_frame>283)&&(a_frame<=370)&&(a_frame%5==4))
Animation.punchSound.play();
//主角
//站立
if(a_frame<=140)
{
Draw.fillCircle(g2d,500,255,25,25);//头
Draw.drawLine(g2d,500,320,500,280);//身体
Draw.drawLine(g2d,500,320,490,350);//腿
Draw.drawLine(g2d,490,350,480,380);
Draw.drawLine(g2d,500,320,510,350);
Draw.drawLine(g2d,510,350,520,380);
Draw.drawLine(g2d,500,285,510,305);//手
Draw.drawLine(g2d,510,305,520,325);
Draw.drawLine(g2d,500,285,490,305);
Draw.drawLine(g2d,490,305,480,325);
}
//无奈
else if(a_frame<=180)
{
if(a_frame==141)
Animation.dingdongSound.play();
Draw.fillCircle(g2d,500,265,25,25);//头
Draw.drawLine(g2d,500,320,500,280);//身体
Draw.drawLine(g2d,500,320,480,380);//腿
Draw.drawLine(g2d,500,320,520,380);
Draw.drawLine(g2d,500,285,515,305);//手
Draw.drawLine(g2d,515,305,535,290);
Draw.drawLine(g2d,535,290,540,295);
Draw.drawLine(g2d,500,285,480,305);
Draw.drawLine(g2d,480,305,460,295);
Draw.drawLine(g2d,460,295,455,300);
}
//瞬移
else if(a_frame<=190)
{
Color c = new Color(0,0,0,255-i*255/10);
Color c0 = g2d.getColor();
if(a_frame==181)
Animation.moveSound.play();
Draw.fillCircle(g2d,120,255,25,25);//头
Draw.drawLine(g2d,120,320,120,280);//身体
Draw.drawLine(g2d,120,320,110,350);//腿
Draw.drawLine(g2d,110,350,100,380);
Draw.drawLine(g2d,120,320,130,350);
Draw.drawLine(g2d,130,350,140,380);
Draw.drawLine(g2d,120,285,130,305);//手
Draw.drawLine(g2d,130,305,140,325);
Draw.drawLine(g2d,120,285,110,305);
Draw.drawLine(g2d,110,305,100,325);
//残影
g2d.setColor(c);
Draw.fillCircle(g2d,500,265,25,25);//头
Draw.drawLine(g2d,500,320,500,280);//身体
Draw.drawLine(g2d,500,320,480,380);//腿
Draw.drawLine(g2d,500,320,520,380);
Draw.drawLine(g2d,500,285,515,305);//手
Draw.drawLine(g2d,515,305,535,290);
Draw.drawLine(g2d,535,290,540,295);
Draw.drawLine(g2d,500,285,480,305);
Draw.drawLine(g2d,480,305,460,295);
Draw.drawLine(g2d,460,295,455,300);
g2d.setColor(c0);
}
//站立(身后)
else if(a_frame<=240)
{
Draw.fillCircle(g2d,120,255,25,25);//头
Draw.drawLine(g2d,120,320,120,280);//身体
Draw.drawLine(g2d,120,320,110,350);//腿
Draw.drawLine(g2d,110,350,100,380);
Draw.drawLine(g2d,120,320,130,350);
Draw.drawLine(g2d,130,350,140,380);
Draw.drawLine(g2d,120,285,130,305);//手
Draw.drawLine(g2d,130,305,140,325);
Draw.drawLine(g2d,120,285,110,305);
Draw.drawLine(g2d,110,305,100,325);
}
//跳跃
else if(a_frame<=270)
{
Color c0 = g2d.getColor();
if(a_frame==241)
Animation.fadeInSound.play();
if(a_frame<=260)
{
for(int j=5 ; j>=0 ; j--)
{
Color c = new Color(0,0,0,(5-j)*255/5);
g2d.setColor(c);
Draw.fillCircle(g2d,120,195+j*5-i*j*5/20,25,25);//头
Draw.drawLine(g2d,120,260+j*5-i*j*5/20,120,220+j*5-i*j*5/20);//身体
Draw.drawLine(g2d,120,260+j*5-i*j*5/20,135,290+j*5-i*j*5/20);//腿
Draw.drawLine(g2d,135,290+j*5-i*j*5/20,125,325+j*5-i*j*5/20);
Draw.drawLine(g2d,120,260+j*5-i*j*5/20,150,270+j*5-i*j*5/20);
Draw.drawLine(g2d,150,270+j*5-i*j*5/20,140,300+j*5-i*j*5/20);
Draw.drawLine(g2d,120,225+j*5-i*j*5/20,95,225+j*5-i*j*5/20);//手
Draw.drawLine(g2d,95,225+j*5-i*j*5/20,85,250+j*5-i*j*5/20);
Draw.drawLine(g2d,120,225+j*5-i*j*5/20,135,220+j*5-i*j*5/20);
Draw.drawLine(g2d,135,220+j*5-i*j*5/20,145,235+j*5-i*j*5/20);
}
g2d.setColor(c0);
}
else
{
Draw.fillCircle(g2d,120,195,25,25);//头
Draw.drawLine(g2d,120,260,120,220);//身体
Draw.drawLine(g2d,120,260,135,290);//腿
Draw.drawLine(g2d,135,290,125,325);
Draw.drawLine(g2d,120,260,150,270);
Draw.drawLine(g2d,150,270,140,300);
Draw.drawLine(g2d,120,225,95,225);//手
Draw.drawLine(g2d,95,225,85,250);
Draw.drawLine(g2d,120,225,135,220);
Draw.drawLine(g2d,135,220,145,235);
}
}
//飞踢(带残影)
if(a_frame>274)
{
Color c0 = g2d.getColor();
Color c = new Color(0,0,0,51);
int j = a_frame-274;
g2d.setColor(c);
//踢
if(j<=40)
{
Draw.fillCircle(g2d,120,195,25,25);//头
Draw.drawLine(g2d,120,260,120,220);//身体
Draw.drawLine(g2d,120,225,95,225);//手
Draw.drawLine(g2d,95,225,85,250);
Draw.drawLine(g2d,120,225,135,220);
Draw.drawLine(g2d,135,220,145,235);
int k = (j<=20) ? j : (40-j);
Draw.drawLine(g2d,120,260,150-k*15/20,270+k*20/20);//腿
Draw.drawLine(g2d,150-k*15/20,270+k*20/20,140-k*15/20,300+k*25/20);
g2d.translate(120,260);
g2d.rotate(-k*Math.PI/40);
Draw.drawLine(g2d,0,0,15,30);
g2d.translate(15,30);
g2d.rotate(-k*Math.PI/80);
Draw.drawLine(g2d,0,0,-10,35);
g2d.rotate(k*Math.PI/80);
g2d.translate(-15,-30);
g2d.rotate(k*Math.PI/40);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -