📄 gamecanvas.java
字号:
g.drawImage(menu7,37+i%3*19,68+i/3*15-addy);
////g.setClip(39+i%3*19,70+i/3*15,6,7);
g.drawImage(nimg[(i+1)],39+i%3*19,70+i/3*15-addy);
}
break;
case 2:
int tmpX=0,tmpY=0,endX=80,maxLine=6,lineNum=0,lineStep=17;
//Font ft=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL);
g.setColor(g.getColorOfRGB(0,0x11,255));
//g.setClip(0,0,scrW,scrH);
//g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
for(i=strPointer[page];i<helpStr.length();i++) {
if(tmpX>=endX || helpStr.charAt(i)=='\n') {
tmpX=0;
lineNum+=1;
if(helpStr.charAt(i)=='\n') {
i++;
}
if(lineNum>=maxLine) {
//helpPageNum+=1;
//lineNum=0;
strPointer[page+1]=(short)i;
//System.out.println("cur helpPageNum"+helpPageNum);
break;
}
//System.out.println("cur helpPageNum"+helpPageNum);
}
else if(i>strPointer[page]) {
tmpX+=ft.stringWidth(""+helpStr.charAt(i-1))+1;
}
tmpY=lineNum*lineStep;
//System.out.println("beginCol"+beginCol+" tmpY"+tmpY+" lineNum"+lineNum+" tmpX"+tmpX);
g.drawString(""+helpStr.charAt(i),12+tmpX,7+tmpY+adad);
}
if(page>0) {
; //向上箭頭
g.setColor(g.getColorOfRGB(0,0,255));
int len=1;
for(i=1;i<6;i++) {
g.fillRect(65-i,110+i,len,1);
len+=2;
}
}
if(page<2) {
; //向下箭頭
g.setColor(g.getColorOfRGB(0,0,255));
int len=9;
for(i=5;i>0;i--) {
g.fillRect(65-i,118+(5-i),len,1);
len-=2;
}
}
break;
case 3:
break;
case 4:
//g.setClip(0,0,128,128);
g.setColor(g.getColorOfRGB(0,0x11,255));
//g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
g.drawString("賽道紀錄",44,10+adad);
if(page==0) {
for(i=0;i<5;i++) {
//g.setClip(17,30+i*17,50,20);
g.setColor(g.getColorOfRGB(0x0,0x0,0x0));
g.drawString(levelStr[i],17,30+i*17+adad);
drawStringTime(g,scores[i],73,30+i*17);
}
} else {
for(i=5;i<9;i++) {
//g.setClip(17,30+(i-5)*17,50,20);
g.setColor(g.getColorOfRGB(0x0,0x0,0x0));
g.drawString(levelStr[i],17,30+(i-5)*17+adad);
drawStringTime(g, scores[i],73,30+(i-5)*17);
}
}
//g.setClip(55,110,30,20);
if(page>0) {
; //向上箭頭
g.setColor(g.getColorOfRGB(0,0,255));
int len=1;
for(i=1;i<6;i++) {
g.fillRect(65-i,110+i,len,1);
len+=2;
}
}
if(page<1) {
; //向下箭頭
g.setColor(g.getColorOfRGB(0,0,255));
int len=9;
for(i=5;i>0;i--) {
g.fillRect(65-i,118+(5-i),len,1);
len-=2;
}
}
break;
}
g.drawImage(menu5,5+pg.counter%3,110);
g.drawImage(menu6,110-pg.counter%3,110);
}
}
}
else if(showCon==2) { //game start
/*if(showHelp) {
g.setColor(g.getColorOfRGB(118,250,255));
g.fillRect(0,0,scrW,scrH);
int tmpX=0,tmpY=0,endX=80,maxLine=6,lineNum=0,lineStep=17;
Font ft=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL);
g.setColor(g.getColorOfRGB(0,0x11,255));
//g.setClip(0,0,scrW,scrH);
g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
for(i=strPointer[page];i<helpStr.length();i++) {
//for(i=0;i<helpStr.length();i++) {
if(tmpX>=endX || helpStr.charAt(i)=='\n') {
tmpX=0;
lineNum+=1;
if(helpStr.charAt(i)=='\n') {
i++;
}
if(lineNum>=maxLine) {
//helpPageNum+=1;
//lineNum=0;
strPointer[page+1]=(short)i;
//System.out.println("cur helpPageNum"+helpPageNum);
break;
}
//System.out.println("cur helpPageNum"+helpPageNum);
}
else if(i>strPointer[page]) {
tmpX+=ft.charWidth(helpStr.charAt(i-1))+1;
}
tmpY=lineNum*lineStep;
//System.out.println("beginCol"+beginCol+" tmpY"+tmpY+" lineNum"+lineNum+" tmpX"+tmpX);
g.drawString(""+helpStr.charAt(i),12+tmpX,7+tmpY);
}
g.setColor(g.getColorOfRGB(0x98,0xD5,0xD9));
g.drawString("跳過",12,111+pg.counter%2);
if(page>0) {
; //向上箭頭
g.setColor(g.getColorOfRGB(0,0,0)FF);
int len=1;
for(i=1;i<6;i++) {
g.fillRect(65-i,110+i,len,1);
len+=2;
}
}
if(page<8) {
; //向下箭頭
g.setColor(g.getColorOfRGB(0,0,0)FF);
int len=9;
for(i=5;i>0;i--) {
g.fillRect(65-i,118+(5-i),len,1);
len-=2;
}
}
return;
}*/
if(showTitle) {
//g.setClip(0,0,scrW,scrH);
g.setColor(g.getColorOfRGB(118,250,255));
g.fillRect(0,0,scrW,scrH);
g.setColor(g.getColorOfRGB(0,0x11,255));
//g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
g.drawString(levelStr[gda.gameLevel-1],40,30+adad);
g.drawString("允許黃牌: "+gda.yellowCard[gda.gameLevel-1],35,58+adad);
g.drawString("賽道路況: "+roadInfo[gda.gameLevel-1],18,85+adad);
} else {
//背景&默認水面
for(i=0;i<8;i++) {
//g.setClip(0+i*16,0,16,38);
g.drawImage(seasky,0+i*16,0);
if(waterFlg) {
////g.setClip(0+i*16,50,16,16);
g.drawImage(water2,0+i*16,50);
} else {
////g.setClip(0+i*16,50,16,16);
g.drawImage(water3,0+i*16,50);
}
}
//雲彩
for(i=0;i<5;i++) {
if(pg.cloud[i][0]==1) {
//g.setClip(pg.cloud[i][1],pg.cloud[i][2],18,6);
g.drawImage(cloudImg,pg.cloud[i][1],pg.cloud[i][2]);
}
else if(pg.cloud[i][0]==2) {
//g.setClip(pg.cloud[i][1],pg.cloud[i][2],18,6);
g.drawImage(cloudImg,pg.cloud[i][1],pg.cloud[i][2]);
}
}
g.setColor(g.getColorOfRGB(0x66,0xFF,255));
//g.setClip(0,64,scrW,64);
g.fillRect(0,0+64,scrW,64);
for(i=0;i<2;i++) {
//g.setClip(0+i*128-gda.bgoffset,0,scrW,59);
g.drawImage(bg,0+i*128-gda.bgoffset,0);
}
//浮冰障礙
for(i=0;i<gda.maxFltIce-1;i++) {
if(gda.fltIce[i][0]==3 || gda.fltIce[i][0]==4) {
if(gda.fltIce[i][2]-gda.winX>-32 && gda.fltIce[i][2]-gda.winX<160) {
if(i==pg.fltIceId) {
if(gda.fltIce[i][0]==3) {
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+pg.fltIceT%2-holdbackPos[3][3]/2,holdbackPos[3][2],holdbackPos[3][3]);
g.drawImage(holdbackImg[3],gda.fltIce[i][2]-gda.winX-holdbackPos[3][0],gda.fltIce[i][3]-holdbackPos[3][1]+pg.fltIceT%2-holdbackPos[3][3]/2);
} else {
int ox=rd.nextInt()%2;
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+ox-holdbackPos[4][3]/2,holdbackPos[4][2],holdbackPos[4][3]);
g.drawImage(holdbackImg[4],gda.fltIce[i][2]-gda.winX-holdbackPos[4][0],gda.fltIce[i][3]-holdbackPos[4][1]+ox-holdbackPos[4][3]/2);
}
} else {
if(gda.fltIce[i][0]==3) {
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]-holdbackPos[3][3]/2,holdbackPos[3][2],holdbackPos[3][3]);
g.drawImage(holdbackImg[3],gda.fltIce[i][2]-gda.winX-holdbackPos[3][0],gda.fltIce[i][3]-holdbackPos[3][1]-holdbackPos[3][3]/2);
} else {
int ox=rd.nextInt()%2;
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]-holdbackPos[4][3]/2+ox,holdbackPos[4][2],holdbackPos[4][3]);
g.drawImage(holdbackImg[4],gda.fltIce[i][2]-gda.winX-holdbackPos[4][0],gda.fltIce[i][3]-holdbackPos[4][1]-holdbackPos[4][3]/2+ox);
}
}
}
}
else if(gda.fltIce[i][0]==99) {
if(gda.fltIce[i][1]==3) {
if(gda.fltIce[i][2]-gda.winX>-32 && gda.fltIce[i][2]-gda.winX<160) {
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+pg.fltIceT%2-holdbackPos[4][3]/2,holdbackPos[4][2],holdbackPos[4][3]);
g.drawImage(holdbackImg[4],gda.fltIce[i][2]-gda.winX-holdbackPos[4][0],gda.fltIce[i][3]-holdbackPos[4][1]+pg.fltIceT%2-holdbackPos[4][3]/2);
}
gda.fltIce[i][1]-=1;
}
else if(gda.fltIce[i][1]==2) {
if(gda.fltIce[i][2]-gda.winX>-32 && gda.fltIce[i][2]-gda.winX<160) {
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+pg.fltIceT%2-22/2,41,22);
g.drawImage(holdbackImg[6],gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+pg.fltIceT%2-22/2);
}
gda.fltIce[i][1]-=1;
}
else if(gda.fltIce[i][1]==1) {
if(gda.fltIce[i][2]-gda.winX>-32 && gda.fltIce[i][2]-gda.winX<160) {
////g.setClip(gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+pg.fltIceT%2-22/2,41,22);
g.drawImage(holdbackImg[6],gda.fltIce[i][2]-gda.winX,gda.fltIce[i][3]+pg.fltIceT%2-22/2);
}
gda.fltIce[i][1]-=1;
}
else if(gda.fltIce[i][1]==0) {
gda.fltIce[i][0]=0;
gda.fltIce[i][1]=0;
gda.fltIce[i][2]=0;
gda.fltIce[i][3]=0;
}
}
}
//地面
for(i=0;i<gda.colNum;i++) {
if(gda.mapData[i][0]!=(byte)0xFF) {
if(0+i*16-gda.winX>=-32 && 0+i*16-gda.winX<160) {
//g.setClip(0+i*16-gda.winX,groundY,16,(128-groundY));
if(gda.mapData[i][0]==(byte)0x00) {
//g.drawImage(snow,0+i*16-gda.winX,0+groundY);
if(i>1 && gda.mapData[i-1][0]!=(byte)0x00) {
g.drawImage(snow,0+i*16-gda.winX,0+groundY);
}
else if(i<gda.colNum-1 && gda.mapData[i+1][0]!=(byte)0x00) {
g.drawImage(snow,0+i*16-gda.winX-32,0+groundY);
}
else {
g.drawImage(snow,0+i*16-gda.winX-16,0+groundY);
}
} else {
if(i>1 && gda.mapData[i-1][0]!=(byte)0x01) {
g.drawImage(ice,0+i*16-gda.winX,0+groundY);
}
else if(i<gda.colNum-1 && gda.mapData[i+1][0]!=(byte)0x01) {
g.drawImage(ice,0+i*16-gda.winX-32,0+groundY);
}
else {
g.drawImage(ice,0+i*16-gda.winX-16,0+groundY);
}
}
if(waterFlg) {
////g.setClip(0+i*16-gda.winX,groundY+44,16,16);
g.drawImage(water2,0+i*16-gda.winX,groundY+44);
} else {
////g.setClip(0+i*16-gda.winX,groundY+44,16,16);
g.drawImage(water3,0+i*16-gda.winX,groundY+44);
}
}
}
}
//多畫一格使效果更好
if(0+i*16-gda.winX>=-32 && 0+i*16-gda.winX<160) {
//g.setClip(0+i*16-gda.winX,groundY,16,(128-groundY));
if(gda.mapData[gda.colNum-1][0]==(byte)0x00) {
if(i>1 && gda.mapData[i-1][0]!=(byte)0x00) {
g.drawImage(snow,0+i*16-gda.winX,0+groundY);
}
else if(i<gda.colNum-1 && gda.mapData[i+1][0]!=(byte)0x00) {
g.drawImage(snow,0+i*16-gda.winX-32,0+groundY);
}
else {
g.drawImage(snow,0+i*16-gda.winX-16,0+groundY);
}
} else {
if(i>1 && gda.mapData[i-1][0]!=(byte)0x01) {
g.drawImage(ice,0+i*16-gda.winX,0+groundY);
}
else if(i<gda.colNum-1 && gda.mapData[i+1][0]!=(byte)0x01) {
g.drawImage(ice,0+i*16-gda.winX-32,0+groundY);
}
else {
g.drawImage(ice,0+i*16-gda.winX-16,0+groundY);
}
}
if(waterFlg) {
////g.setClip(0+i*16-gda.winX,groundY+44,16,16);
g.drawImage(water2,0+i*16-gda.winX,groundY+44);
} else {
////g.setClip(0+i*16-gda.winX,groundY+44,16,16);
g.drawImage(water3,0+i*16-gda.winX,groundY+44);
}
}
//近景
for(i=0;i<gda.maxScenery;i++) {
if(gda.scenery[i][0]!=(byte)0xFF) {
if(0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX>-32 && 0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX<160) {
if(gda.scenery[i][0]<2) { //非觀眾
////g.setClip(0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX,0+gda.scenery[i][3]*8,sceneryPos[gda.scenery[i][0]][2],sceneryPos[gda.scenery[i][0]][3]);
g.drawImage(sceneryImg[0],0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-sceneryPos[gda.scenery[i][0]][0],0+gda.scenery[i][3]*8-sceneryPos[gda.scenery[i][0]][1]);
} else { //觀眾動作
if(gda.scenery[i][0]==(byte)0x02) {
if(audienceFlg) {
////g.setClip(0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-3,0+gda.scenery[i][3]*8-3,sceneryPos[gda.scenery[i][0]][2],sceneryPos[gda.scenery[i][0]][3]);
g.drawImage(sceneryImg[gda.scenery[i][0]],0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-sceneryPos[gda.scenery[i][0]][0]-3,0+gda.scenery[i][3]*8-sceneryPos[gda.scenery[i][0]][1]-3);
} else {
////g.setClip(0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-3,0+gda.scenery[i][3]*8-3,sceneryPos[gda.scenery[i][0]][2],sceneryPos[gda.scenery[i][0]][3]);
g.drawImage(sceneryImg[gda.scenery[i][0]],0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-sceneryPos[gda.scenery[i][0]][0]-sceneryPos[gda.scenery[i][0]][2]*(Math.abs(rd.nextInt())%2)-3,0+gda.scenery[i][3]*8-sceneryPos[gda.scenery[i][0]][1]-3);
}
} else {
if(audienceFlg) {
////g.setClip(0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX,0+gda.scenery[i][3]*8,sceneryPos[gda.scenery[i][0]][2],sceneryPos[gda.scenery[i][0]][3]);
g.drawImage(sceneryImg[gda.scenery[i][0]],0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-sceneryPos[gda.scenery[i][0]][0],0+gda.scenery[i][3]*8-sceneryPos[gda.scenery[i][0]][1]);
} else {
////g.setClip(0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX,0+gda.scenery[i][3]*8-2,sceneryPos[gda.scenery[i][0]][2],sceneryPos[gda.scenery[i][0]][3]);
g.drawImage(sceneryImg[gda.scenery[i][0]],0+(gda.scenery[i][1]+gda.scenery[i][2]*128)*16-gda.winX-sceneryPos[gda.scenery[i][0]][0],0+gda.scenery[i][3]*8-sceneryPos[gda.scenery[i][0]][1]-sceneryPos[gda.scenery[i][0]][3]-2);
}
}
}
}
}
}
//Nicle
if(pg.posX/16>=gda.colNum-16) {
if(audienceFlg) {
g.drawImage(penguin[23],(gda.colNum-4)*16-gda.winX,60);
} else {
g.drawImage(penguin[23+(Math.abs(rd.nextInt())%2)],(gda.colNum-4)*16-gda.winX,60);
}
}
//賽點
for(i=0;i<8;i++) {
if(gda.checkPoint[gda.gameLevel-1][i]!=-1) {
if(gda.checkPoint[gda.gameLevel-1][i]*16-gda.winX>-32 && gda.checkPoint[gda.gameLevel-1][i]*16-gda.winX<160) {
////g.setClip(gda.checkPoint[gda.gameLevel-1][i]*16-gda.winX+8,65,14,19);
g.drawImage(sceneryImg[0],gda.checkPoint[gda.gameLevel-1][i]*16-gda.winX+8,65);
////g.setClip(gda.checkPoint[gda.gameLevel-1][i]*16-gda.winX+10+8,71,6,7);
g.drawImage(nimg[(i+1)],gda.checkPoint[gda.gameLevel-1][i]*16-gda.winX+10+8,71);
}
}
}
//影子
if(!gda.gameOver && !gda.giveYellowCard) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -