JAVA applet-淘金热

时间:2013-11-06 10:18:51

标签: java applet

我有这个任务: 实行 一个 小 游戏 在 其中:

  1. 有 是 二 岛屿 在 一个 海

  2. 一个 船 需求 至 旅行 从 一 岛 至 另一个 岛 至 收集 如 许多 金 如 可能 和 来 回来。

  3. 在 船 能够 是 导航 运用 该 箭头 密钥。

  4. 一个 船 不能 帆 通过 一个 岛

  5. 有 是 海 矿山 沿 该 办法 移动 在 随机的。

  6. 在 矿山 做 不 走 通过 该 岛屿 如 他们 漂移 周围。

  7. 如果 该 船 点击 一个 矿, 它 是 销毁。 每 船 具有 三 生活。

  8. 有 需要 时间 对于 该 金 至 是 充分 装 成 该 船。 这个 时间 是 大约 三 秒。 如果 一个 船 不 等待 这个 长, 它 是 部分 装 同 金。

  9. 在 相同 发生 对于 卸载。

  10. 在 游戏 结束 后 您 充分 卸下 五 次, 要么 您的 生活 结束。

  11. 有 是 三 困难 对于 该 游戏: 简单, 介质 和 难。 一个 简单 游戏 具有 少 矿山 比 一个 介质 游戏, 和 一个 介质 游戏 具有 少 矿山 比 一个 难 游戏。
  12. 这就是我现在所拥有的:

    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.URL;
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    
    public class GoldRush extends Applet {
    
    int boatx=125;
    int boaty= 270;
    int lifes = 3;
    int gold1=0;
    int gold2=20;
    int option;
    
    /**
     * @param args the command line arguments
     */
    public void init()
    {
    
            setSize(900, 500);
    
            Object[] options = {"Easy", "Meduim","Difficult"};
             option = JOptionPane.showOptionDialog(this,"Choose a difficulty ","Gold Rush",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,
                    null,options,options[2]);
            addKeyListener(new KeyListener());
            setFocusable(true);
    
        }
    
    public  void paint(Graphics g) {
    
      Image back,boat,bomb,gold;
    
      back = getImage("back.jpg");
      boat = getImage("boat.jpg");
      bomb = getImage("bomb.jpg");
      gold = getImage("gold.jpg");
      g.drawImage(back, 0, 0, null);
      g.setColor(Color.BLACK);
      g.drawString("Lifes: "+ lifes, 10, 20);
      g.drawString("Gold on Your ISland: "+ gold1, 10, 40);
      g.drawString("Gold on the other Island: "+ gold2, 10, 60);
    
      if(boatx >=125 && boatx <= 640&& boaty >= 2 && boaty <= 450){
          g.drawImage(boat, boatx, boaty, null);
      }else {
          if(boatx<125) boatx=125;
          if(boatx>640) boatx=640;
          if(boaty<2) boaty=2;
          if(boaty>450) boaty=450;
          g.drawImage(boat, boatx, boaty, null);
      }
    
    
    
      if (option == 0){
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
    
      }
      else if (option == 1){
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
    
      }
      else if (option == 2){
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
           g.drawImage(bomb, (int)(145 + (Math.random() * (601 - 145))),(int)(190 + (Math.random() * (700 - 190))) , null);
    
      }
    
    
    }
    
    
    
    public Image getImage(String name){
    URL imgUrl = getClass().getClassLoader().getResource("resources/"+name);
    ImageIcon icon = new ImageIcon(imgUrl);
    return icon.getImage();
    }  
        public void up(){
    
            boaty= boaty-5;
            repaint();  
    }  
      public void down(){
    
            boaty= boaty+5;
            repaint();  
    }  
      public void left(){
        if(boatx >= 125)
            boatx= boatx-5;
            repaint();  
    }
      public void right(){
    
            boatx= boatx+5;
            repaint();  
    }
    class KeyListener extends KeyAdapter{
        public KeyListener(){
    
        }
    
        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub
            super.keyPressed(e);
            switch(e.getKeyCode()){
            case KeyEvent.VK_LEFT : left();break;
        case KeyEvent.VK_RIGHT: right();break;
        case KeyEvent.VK_UP: up();break;
        case KeyEvent.VK_DOWN: down(); break;
            default:
                System.out.println("You pressed: " + e.getKeyCode());
            }
        }
    }
    
    
    }
    

    我不知道怎么做8号,我在那里检查船是否停留3秒钟以完全装载金币。你可以帮帮我吗?

    我很感激;)

1 个答案:

答案 0 :(得分:0)

你的船的位置有x和y坐标。如果创建了岛,则计算/读出定位岛的坐标。然后在船的每次移动之后,检查船是否在您的岛屿区域(或靠近它)。如果是这样,你就会启动一个计时器,将黄金“转移”到你的船上。