⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamecanvas.java

📁 飞行类射击小游戏
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    g.drawRect( (width - w1) / 2, height / 2 + image[0].getHeight() / 2 - 30,
               w1, 12);
    while (w < w1) {
      w++;
      g.setColor(0xff112032);
      g.fillRect( (width - w1) / 2 + 1,
                 height / 2 + image[0].getHeight() / 2 - 29, w - 2, 11);
      repaint();
      sleep(2);
    }
    sleep(30);
    gameState = CHANGEBULLET;
  }
  private void changeBullet(){
    clearScreen();
    g.setColor(100, 100, 100);
    g.drawString("选择子弹", 50, 20, 0);
    g.setColor(0xffffff);
    g.drawRect(chooseX, 45, 20, 20);
    g.setColor(0);
    g.fillRect(chooseX, 45, 20, 20);
    g.drawImage(image[4], 65, 45, 0);
    g.drawImage(image[7], 124, 46, 0);
    g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
    g.drawString("速度快,范围小", 25, 65, 0);
    g.drawString("范围大,速度慢", 105, 65, 0);
    g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_LARGE));
    repaint();
  }
  private void pause(){
    g.setColor(103,121,167);
    g.fillRect((width-60)/2,(height-75)/2,60,75);
    for(int i=0;i<pauseMenu.length;i++){
      if(menuChoose1==i)
        g.setColor(0xffffffff);
      else
        g.setColor(0);
      g.drawString(pauseMenu[i],(width-60)/2+2,(height-75)/2+2+i*22,0);
    }
    repaint();
  }
  //画游戏
  private void game() {
    if (player != null) {
      try {
        player.setLoopCount(1);
        player.start();
      }
      catch (Exception e) {
        //System.out.println("player error!!!");
      }
    }
    clearScreen();
    g.drawImage(backGround[0], 2, bY % height, 0);
    g.drawImage(backGround[0], 2, bY % height - backGround[0].getHeight(),0);
    bY += 3;
    time++;
    if (time < 1200) {
      enemy();
      enemy1();
      enemy2();
      enemyBullet();
      enemyBullet1();
      enemyBullet2();
      if(bulletState==0){
                explode(enemy, bullet1, image[4], enemyImage[0]);
                explode(enemy1, bullet1, image[4], enemyImage[1]);
                explode(enemy2, bullet1, image[4], enemyImage[2]);
                explode(enemy, bullet2, image[4], enemyImage[0]);
                explode(enemy1, bullet2, image[4], enemyImage[1]);
                explode(enemy2, bullet2, image[4], enemyImage[2]);
      }else{
                explode(enemy, bullet3, image[13], enemyImage[0]);
                explode(enemy1, bullet3, image[13], enemyImage[1]);
                explode(enemy2, bullet3, image[13], enemyImage[2]);
                explode(enemy, bullet4, image[7], enemyImage[0]);
                explode(enemy1, bullet4, image[7], enemyImage[1]);
                explode(enemy2, bullet4, image[7], enemyImage[2]);
                explode(enemy, bullet5, image[7], enemyImage[0]);
                explode(enemy1, bullet5, image[7], enemyImage[1]);
                explode(enemy2, bullet5, image[7], enemyImage[2]);
      }
      explode(enemyBullet, enemyImage[3], image[1]);
      explode(enemyBullet1, enemyImage[3], image[1]);
      explode(enemyBullet2, enemyImage[3], image[1]);
      explode(enemy, enemyImage[0], image[1]);
      explode(enemy1, enemyImage[1], image[1]);
      explode(enemy2, enemyImage[2], image[1]);
    }
    else {
      bossBullet();
      bossBullet1();
      bossBullet2();
      bossBullet3();
      bossBullet4();
      boss();
      if(bulletState==0){
                bossExplode(bullet1, image[4], image[8]);
                bossExplode(bullet2, image[4], image[8]);
      }else{
                bossExplode(bullet3, image[13], image[8]);
                bossExplode(bullet4, image[7], image[8]);
                bossExplode(bullet5, image[7], image[8]);
      }
      explode(bossBullet, image[9], image[1]);
      explode(bossBullet1, image[9], image[1]);
      explode(bossBullet2, image[9], image[1]);
      explode(bossBullet3, image[9], image[1]);
      explode(bossBullet4, image[9], image[1]);
    }
    if(bulletState==0){
                bullet1();
                bullet2();
    }else{
                bullet3();
                bullet4();
                bullet5();
    }
    myPlane();
    score();
    repaint();
  }

  //画分数
  private void score() {
    g.setColor(0xffffff);
    String s = "score: " + score;
    g.drawString(s, 10, 10, 0);
  }

  private void help() {
    clearScreen();
    g.setColor(0);
    for(int i=0;i<helpString.length;i++){
      if(i==0){
        g.drawString(helpString[0],50,10,0);
      }else
        g.drawString(helpString[i],20,10+i*20,0);
    }
    repaint();
  }

  private void about() {
    clearScreen();
    g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_MEDIUM));
    g.setColor(0);
    for(int i=0;i<aboutString.length;i++){
        g.drawString(aboutString[i],10,10+i*20,0);
    }
    g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_LARGE));
    repaint();
  }

  //退出游戏
  private void exit() {
	clearScreen();
	g.setColor(0);
	g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_LARGE));
	int x = 0;
    int w = width;
    while (x < width/2) {
      x++;
      w -= 2;
      g.setClip(x, 0, w, height);
		g.drawString("谢谢观赏",width/2-20,height/2,0);
			repaint();
      sleep(8);
	}
    if(player!=null){
      player.close();
    }
    try {
      main.destroyApp(true);
    }
    catch (MIDletStateChangeException ex) {
      System.out.println("exit error!!!!!" + ex.getMessage());
    }
  }
  private void gameover(){
    clearScreen();
    g.setColor(0);
    if(myHp>0)
      g.drawString("恭喜过关!!!",50,30,0);
    else
		g.drawImage(image[10],width/2,40,Graphics.HCENTER|Graphics.VCENTER);
    g.drawString("your score: ",50,50,0);
    g.drawString(""+score,70,70,0);
    repaint();
  }
  //我方飞机
  private void myPlane() {
    g.setColor(0xffffff);
    g.drawString("myHp: ",5,height-20,0);
    g.setColor(0xffee0000);
    g.fillRect(50,height-15,myHp/2,5);
    g.setColor(0xffffff);
    switch (myDir) {
      case UP:
        g.drawImage(image[1], planeX, planeY, 0);
        break;
      case LEFT:
        g.drawImage(image[2], planeX, planeY, 0);
        break;
      case RIGHT:
        g.drawImage(image[3], planeX, planeY, 0);
        break;
    }
  }

  //飞机移动
  private void planeMove(int speed, int dir) {
    switch (dir) {
      case 0:
        if (planeY > 0)
          planeY -= speed;
        break;
      case 1:
        if (planeY < height - image[1].getHeight())
          planeY += speed;
        break;
      case 2:
        if (planeX > 0)
          planeX -= speed;
        break;
      case 3:
        if (planeX < width - image[1].getWidth())
          planeX += speed;
        break;
    }
  }

  //初始化子弹
  private void bulletInit1(){
        long nowTime = System.currentTimeMillis();
    if (nowTime - myTime1 > 200) {
      myTime1 = System.currentTimeMillis();
      for (int i = 0; i < bullet1.length; i++) {
        if (bullet1[i][0] == 0) {
          bullet1[i][0] = 1;
                        bullet1[i][1]=planeX+image[1].getWidth()/2-
                                image[4].getWidth()/2+10;

          bullet1[i][2] = planeY;
          break;
        }
      }
    }
  }
  private void bullet1(){
        bulletInit1();
        for(int i=0;i<bullet1.length;i++){
                g.drawImage(image[4],bullet1[i][1],bullet1[i][2],0);
        }
        bulletMove(0,bullet1,8);
  }
  private void bulletInit2(){
        long nowTime = System.currentTimeMillis();
    if (nowTime - myTime2 > 200) {
      myTime2 = System.currentTimeMillis();
      for (int i = 0; i < bullet2.length; i++) {
        if (bullet2[i][0] == 0) {
          bullet2[i][0] = 1;
                        bullet2[i][1] = planeX + image[1].getWidth() / 2 -
                                image[4].getWidth() / 2 - 10;

          bullet2[i][2] = planeY;
          break;
        }
      }
    }
  }
  private void bullet2(){
        bulletInit2();
        for(int i=0;i<bullet2.length;i++){
                g.drawImage(image[4],bullet2[i][1],bullet2[i][2],0);
        }
        bulletMove(0,bullet2,8);
  }
  private void bulletInit3() {
  long nowTime = System.currentTimeMillis();
    if (nowTime - myTime3 > 400) {
      myTime3 = System.currentTimeMillis();
      for (int i = 0; i < bullet3.length; i++) {
        if (bullet3[i][0] == 0) {
          bullet3[i][0] = 1;
                        bullet3[i][1]=planeX+image[1].getWidth()/2-
                                image[13].getWidth()/2;
          bullet3[i][2] = planeY;
          break;
        }
      }
    }
  }
  private void bullet3(){
        bulletInit3();
        for(int i=0;i<bullet3.length;i++){
                g.drawImage(image[13],bullet3[i][1],bullet3[i][2],0);
        }
        bulletMove(0,bullet3,8);
  }
  private void bulletInit4(){
        long nowTime = System.currentTimeMillis();
    if (nowTime - myTime4 > 400) {
      myTime4 = System.currentTimeMillis();
      for (int i = 0; i < bullet4.length; i++) {
        if (bullet4[i][0] == 0) {
          bullet4[i][0] = 1;
          bullet4[i][1] = planeX + image[1].getWidth() / 2 -
              image[7].getWidth() / 2 + 5;
          bullet4[i][2] = planeY;
          break;
        }
      }
    }
  }
  private void bullet4(){
        bulletInit4();
        for(int i=0;i<bullet4.length;i++){
                g.drawImage(image[7],bullet4[i][1],bullet4[i][2],0);
        }
        bulletMove(2,bullet4,8);
  }
  private void bulletInit5(){
        long nowTime = System.currentTimeMillis();
    if (nowTime - myTime5 > 400) {
      myTime5 = System.currentTimeMillis();
      for (int i = 0; i < bullet5.length; i++) {
        if (bullet5[i][0] == 0) {
          bullet5[i][0] = 1;
                        bullet5[i][1] = planeX + image[1].getWidth() / 2 -
                                image[7].getWidth() / 2 - 5;
          bullet5[i][2] = planeY;
          break;
        }
      }
    }
  }
  private void bullet5(){
        bulletInit5();
        for(int i=0;i<bullet5.length;i++){
                g.drawImage(image[7],bullet5[i][1],bullet5[i][2],0);
        }
        bulletMove(1,bullet5,8);
  }
  //子弹移动
  private void bulletMove(int dir, int[][]myBullet, int speed) {
    for (int i = 0; i < myBullet.length; i++) {
                switch(dir){
                        case 0:
                                myBullet[i][2] -= speed;
                                break;
                        case 1:
                                myBullet[i][1] -= 2;
                                myBullet[i][2] -=speed;
                                break;
                        case 2:
                                myBullet[i][1]+=2;
                                myBullet[i][2]-=speed;
                                break;

                }
                if (myBullet[i][1]<0||myBullet[i][1] > width || myBullet[i][2] < 0)
                        myBullet[i][0] = 0;
        }
  }

//初始化敌方飞机
  private void enemyInit() {
    long nowTime = System.currentTimeMillis();
    if (nowTime - enemyTime > 4000) {
      for (int i = 0; i < enemy.length; i++) {
        if (enemy[i][0] == 0) {
          enemy[i][1] = (random.nextInt() >>> 1) % width;
          enemy[i][2] = -10;
          if (enemy[i][1] < 50) {
            enemy[i][3] = 2;
          }
          else if (enemy[i][1] > width - 50) {
            enemy[i][3] = 0;
          }
          else
            enemy[i][3] = 1;
          enemy[i][0] = 1;
          break;
        }
      }

      enemyTime = System.currentTimeMillis();
    }
  }
  private void enemyInit1() {
    long nowTime = System.currentTimeMillis();
    if (nowTime - enemyTime1 > 4000) {
      for (int i = 0; i < enemy1.length; i++) {
        if (enemy1[i][0] == 0) {
          enemy1[i][1] = -10;
          enemy1[i][2] = (random.nextInt()>>>1)%60;
          enemy1[i][3] = (random.nextInt()>>>1)%2;
          enemy1[i][0] = 1;
          break;
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -