我有这样的任务:实现一个小游戏,其中:
这就是我现在所拥有的:
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秒钟,以充分装载黄金。你能帮我一下吗?
我会很感激的;)
发布于 2013-11-06 10:30:01
你的船有x和y坐标的位置。如果创建了岛屿,则计算/读出定位该岛屿的坐标。然后,在每一次移动后,你检查船是否在你的岛(或靠近它)的区域。如果是这样的话,你就启动一个计时器,把金子“传送”到你的船上。
https://stackoverflow.com/questions/19809387
复制相似问题