📄 gamecanvas.java
字号:
image[9].getHeight() / 2;
bossBullet4[i][0] = 1;
break;
}
}
}
}
}
private void bossBullet() {
bossBulletInit();
for (int i = 0; i < bossBullet.length; i++) {
if (bossBullet[i][0] == 1)
g.drawImage(image[9], bossBullet[i][1], bossBullet[i][2], 0);
}
bossBulletMove(2, 5, bossBullet);
}
private void bossBullet1() {
bossBulletInit1();
for (int i = 0; i < bossBullet1.length; i++) {
if (bossBullet1[i][0] == 1)
g.drawImage(image[9], bossBullet1[i][1], bossBullet1[i][2], 0);
}
bossBulletMove(0, 5, bossBullet1);
}
private void bossBullet2() {
bossBulletInit2();
for (int i = 0; i < bossBullet2.length; i++) {
if (bossBullet2[i][0] == 1)
g.drawImage(image[9], bossBullet2[i][1], bossBullet2[i][2], 0);
}
bossBulletMove(1, 5, bossBullet2);
}
private void bossBullet3() {
bossBulletInit3();
for (int i = 0; i < bossBullet3.length; i++) {
if (bossBullet3[i][0] == 1)
g.drawImage(image[9], bossBullet3[i][1], bossBullet3[i][2], 0);
}
bossBulletMove(3, 5, bossBullet3);
}
private void bossBullet4() {
bossBulletInit4();
for (int i = 0; i < bossBullet4.length; i++) {
if (bossBullet4[i][0] == 1)
g.drawImage(image[9], bossBullet4[i][1], bossBullet4[i][2], 0);
}
bossBulletMove(4, 5, bossBullet4);
}
private void bossBulletMove(int dir1, int speedY, int[][] bBullet) {
for (int i = 0; i < bBullet.length; i++) {
switch (dir1) {
case 0:
bBullet[i][1] -= 4;
bBullet[i][2] += speedY;
break;
case 1:
bBullet[i][1] -= 2;
bBullet[i][2] += speedY;
break;
case 2:
bBullet[i][2] += speedY;
break;
case 3:
bBullet[i][1] += 2;
bBullet[i][2] += speedY;
break;
case 4:
bBullet[i][1] += 4;
bBullet[i][2] += speedY;
break;
}
if (bBullet[i][1] < 0 || bBullet[i][1] > width || bBullet[i][2] > height) {
bBullet[i][0] = 0;
}
}
}
//敌机爆炸
private void explode(int[][] i1, int[][] i2, Image image1, Image image2) {
for (int i = 0; i < i1.length; i++) {
if (i1[i][0] == 1) {
for (int j = 0; j < i2.length; j++) {
if (i2[j][0] == 1) {
if (isIntersectingRect(i2[j][1], i2[j][2],
image1.getWidth(),
image1.getHeight(), i1[i][1],
i1[i][2],
image2.getWidth(), image2.getHeight())) {
i1[i][0] = 0;
i2[i][0] = 0;
drawExplode(i1[i][1], i1[i][2]);
if (i2[i][0] == 0) {
score += 10;
}
}
}
}
}
}
}
//我方飞机爆炸
private void explode(int[][] i1, Image image1, Image image2) {
for (int i = 0; i < i1.length; i++) {
if (i1[i][0] == 1) {
if (isIntersectingRect(i1[i][1], i1[i][2],
image1.getWidth(),
image1.getHeight(), planeX+4,
planeY+2,
image2.getWidth()-8, image2.getHeight()-4)) {
myHp-=5;
g.setClip(planeX, planeY,
image[6].getWidth() / 2, image[6].getHeight());
g.drawImage(image[6],
planeX - (frame * (image[6].getWidth() / 2)),
planeY, 0);
g.setClip(0, 0, width, height);
frame++;
if (frame > 2)
frame = 0;
if(myHp<0){
gameState = GAMEOVER;
}
i1[i][0] = 0;
}
}
}
}
//boss爆炸
private void bossExplode(int[][] i1, Image image1, Image image2) {
for (int i = 0; i < i1.length; i++) {
if (i1[i][0] == 1) {
if (isIntersectingRect(i1[i][1], i1[i][2],
image1.getWidth(),
image1.getHeight(), bossX,
bossY,
image2.getWidth(), image2.getHeight())) {
g.setClip(i1[i][1], i1[i][2] - 10,
image[6].getWidth() / 2, image[6].getHeight());
g.drawImage(image[6],
i1[i][1] - (frame * (image[6].getWidth() / 2)),
i1[i][2] - 15, 0);
g.setClip(0, 0, width, height);
frame++;
if (frame > 2) {
frame = 0;
}
score += 10;
bossHp -= 5;
if(bossHp<200){
bossBulletTime=200;
}
if(bossHp<0){
gameState=GAMEOVER;
}
i1[i][0] = 0;
}
}
}
}
//画爆炸
private void drawExplode(int x, int y) {
long nowTime = System.currentTimeMillis();
if (nowTime - explodeTime > 100) {
for (int frame = 0; frame < 2; frame++) {
g.setClip(x, y,
image[6].getWidth() / 2, image[6].getHeight());
g.drawImage(image[6],
x - (frame * (image[6].getWidth() / 2)),
y, 0);
g.setClip(0, 0, width, height);
frame++;
}
repaint();
}
explodeTime = System.currentTimeMillis();
}
//碰撞检测
public static final boolean isIntersectingRect(int x1, int y1, int w1, int h1,
int x2, int y2, int w2, int h2) {
if (y2 + h2 < y1 || y2 > y1 + h1 || x2 + w2 < x1 || x2 > x1 + w1)
return false;
return true;
}
private void ctrlLogo(){
if(keyState!=0){
gameState=MENU;
keyState=0;
}
}
//菜单按键
private void ctrlMenu() {
if ( (keyState & GAME_NUM2) != 0 || (keyState & GAME_UP) != 0) {
menuChoose--;
if (menuChoose < 0)
menuChoose = menuString.length - 1;
keyState &=~ GAME_NUM2;
keyState &=~ GAME_UP;
}
if ( (keyState & GAME_NUM8) != 0 || (keyState & GAME_DOWN) != 0) {
menuChoose++;
if (menuChoose > menuString.length - 1)
menuChoose = 0;
keyState &=~ GAME_NUM8;
keyState &=~ GAME_DOWN;
}
if ( (keyState & GAME_NUM5) != 0 || (keyState & GAME_FIRE) != 0) {
switch (menuChoose) {
case 0:
gameState = LOAD;
break;
case 1:
gameState = HELP;
break;
case 2:
gameState = ABOUT;
break;
case 3:
gameState = EXIT;
break;
}
keyState &=~ GAME_NUM5;
keyState &=~ GAME_FIRE;
}
}
private void ctrlChange(){
if((keyState & GAME_NUM4) != 0 || (keyState & GAME_LEFT) != 0){
chooseX-=60;
if(chooseX<60)
chooseX=120;
keyState &=~ GAME_NUM4;
keyState &=~ GAME_LEFT;
}
if((keyState & GAME_NUM6) != 0 || (keyState & GAME_RIGHT) != 0){
chooseX+=60;
if(chooseX>120)
chooseX=60;
keyState &=~ GAME_NUM6;
keyState &=~ GAME_RIGHT;
}
if((keyState & GAME_NUM5) != 0 || (keyState & GAME_FIRE) != 0){
if (chooseX == 60) {
bulletState = 0;
}
if (chooseX == 120) {
bulletState = 1;
}
gameState = GAME;
keyState &=~ GAME_NUM5;
keyState &=~ GAME_FIRE;
}
}
//游戏按键
private void ctrlGame() {
if ( (keyState & GAME_NUM2) != 0 || (keyState & GAME_UP) != 0)
planeMove(5, 0);
if ( (keyState & GAME_NUM8) != 0 || (keyState & GAME_DOWN) != 0)
planeMove(5, 1);
if ( (keyState & GAME_NUM4) != 0 || (keyState & GAME_LEFT) != 0) {
planeMove(5, 2);
myDir = LEFT;
}
if ( (keyState & GAME_NUM6) != 0 || (keyState & GAME_RIGHT) != 0) {
planeMove(5, 3);
myDir = RIGHT;
}
if ( (keyState & GAME_SLEFT) != 0) {
gameState = MENU;
keyState &=~GAME_SLEFT;
}
if ( (keyState & GAME_SRIGHT) != 0) {
gameState = PAUSE;
keyState &=~GAME_SRIGHT;
}
}
private void ctrlPause(){
if ( (keyState & GAME_NUM2) != 0 || (keyState & GAME_UP) != 0) {
menuChoose1--;
if (menuChoose1 < 0)
menuChoose1 = pauseMenu.length - 1;
keyState &=~ GAME_NUM2;
keyState &=~ GAME_UP;
}
if ( (keyState & GAME_NUM8) != 0 || (keyState & GAME_DOWN) != 0) {
menuChoose1++;
if (menuChoose1 > pauseMenu.length - 1)
menuChoose1 = 0;
keyState &=~ GAME_NUM8;
keyState &=~ GAME_DOWN;
}
if ( (keyState & GAME_NUM5) != 0 || (keyState & GAME_FIRE) != 0) {
switch (menuChoose1) {
case 0:
gameState = GAME;
break;
case 1:
gameState = MENU;
break;
case 2:
gameState = EXIT;
break;
}
keyState &=~ GAME_NUM5;
keyState &=~ GAME_FIRE;
}
}
//帮助按键
private void ctrlHelp() {
if ( (keyState & GAME_SLEFT) != 0) {
gameState = MENU;
keyState&=~GAME_SLEFT;
}
}
//关于按键
private void ctrlAbout() {
if ( (keyState & GAME_SLEFT) != 0) {
gameState = MENU;
keyState&=~GAME_SLEFT;
}
}
private void ctrlGameOver() {
if ((keyState & GAME_SLEFT)!=0) {
gameState = MENU;
init();
keyState&=~GAME_SLEFT;
}
}
//按下按键
protected void keyPressed(int keyCode) {
switch (keyCode) {
case KEY_UP:
keyState |= GAME_UP;
break;
case KEY_DOWN:
keyState |= GAME_DOWN;
break;
case KEY_LEFT:
keyState |= GAME_LEFT;
break;
case KEY_RIGHT:
keyState |= GAME_RIGHT;
break;
case KEY_FIRE:
keyState |= GAME_FIRE;
break;
case KEY_NUM2:
keyState |= GAME_NUM2;
break;
case KEY_NUM8:
keyState |= GAME_NUM8;
break;
case KEY_NUM4:
keyState |= GAME_NUM4;
break;
case KEY_NUM6:
keyState |= GAME_NUM6;
break;
case KEY_NUM5:
keyState |= GAME_NUM5;
break;
case LEFT_SOFT:
keyState |= GAME_SLEFT;
break;
case RIGHT_SOFT:
keyState |= GAME_SRIGHT;
break;
}
}
//松开按键
protected void keyReleased(int keyCode) {
keyState = 0;
myDir = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -