首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAVA applet-淘金热

JAVA applet-淘金热
EN

Stack Overflow用户
提问于 2013-11-06 10:18:50
回答 1查看 386关注 0票数 0

我有这样的任务:实现一个小游戏,其中:

  1. 海上有两个岛屿。
  2. 一艘船需要从一个岛到另一个岛去收集尽可能多的金子,然后再回来。
  3. 可以使用箭头键导航该船。
  4. 船不能驶过岛屿。
  5. 沿途有水雷随机移动。
  6. 这些地雷在周围漂流时不会穿过这些岛屿。
  7. 如果船撞到地雷,它就被毁了。每艘船有三条命。
  8. 要把金子全部装进船上需要时间。这一次大约是3秒。如果一艘船等不了这么久,它就会被部分装上金子。
  9. 卸货也是如此。
  10. 游戏结束后,你完全卸载五次,或你的生命结束。
  11. 这场比赛有三个困难:轻松、中等和困难。简单的游戏比中等的游戏有更少的地雷,中等的游戏比困难的游戏更少的地雷。

这就是我现在所拥有的:

代码语言:javascript
运行
复制
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秒钟,以充分装载黄金。你能帮我一下吗?

我会很感激的;)

EN

回答 1

Stack Overflow用户

发布于 2013-11-06 10:30:01

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19809387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档