Я пытаюсь создать определенную «игру Пакмана».
В основном, основными объектами являются: пакман и фрукты.
Фоновое изображение - это изображение определенной карты, означающее, что игра ограничена внешней рамкой.
Сам кадр установлен в пикселях, которые я преобразую в координаты ( Преобразование в шир. /lng координаты пикселей на заданной карте (с JavaScript) ).координаты имеют следующие параметры:
public Point3D(double x,double y,double z)
{
_x=x;// latitude
_y=y;// longtitude
_z=z;// altitude
}
public boolean isValid_GPS_Point(Point3D p)
{
return (p.x()<=180&&p.x()>=-180&&p.y()<=90&&p.y()>=-90&&p.z()>=-450);
}
Плоды - это статические объекты, которые не движутся.
Все pacmen имеют универсальную скорость 1 метр в секунду и радиус потребления 1 метр, что означает, что каждый фрукт в радиусе приема пищи конкретного pacman будет съеден и удален из списка фруктов («Радиус еды»)это больше похоже на трехмерную сферу с радиусом 1 метр).
Движение Пакмена определяется алгоритмом ( Алгоритм : используя список фруктов и pacmen, мы вычисляем расстояние 2объекты из обоих списков, принимая минимальное расстояние, необходимое для перемещения конкретного пакмана.
Формула расстояния:
- Определение вектора по 2 точкам GPS на карте.
- Использование квадратной функции для вектора:
sqrt ( delta (x) ^ 2 + delta (y) ^ 2 + delta (z) ^ 2 )
В терминах Gui:
package gui;
import java.awt.Graphics;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class MainWindow extends JFrame implements MouseListener
{
public BufferedImage myImage;
public MainWindow()
{
initGUI();
this.addMouseListener(this);
}
private void initGUI()
{
MenuBar menuBar = new MenuBar();
Menu File = new Menu("File");
Menu Run=new Menu("Run");
Menu Insert=new Menu("Insert");
MenuItem New=new MenuItem("New");
MenuItem Open = new MenuItem("Open");
MenuItem Save=new MenuItem("Save");
MenuItem start=new MenuItem("start");
MenuItem stop=new MenuItem("stop");
MenuItem packman=new MenuItem("packman");
MenuItem fruit=new MenuItem("fruit");
menuBar.add(File);
menuBar.add(Run);
menuBar.add(Insert);
File.add(New);
File.add(Open);
File.add(Save);
Run.add(start);
Run.add(stop);
Insert.add(packman);
Insert.add(fruit);
this.setMenuBar(menuBar);
try {
myImage = ImageIO.read(new File("C:\\Users\\Owner\\Desktop\\Matala3\\Ariel1.png"));//change according to your path
} catch (IOException e) {
e.printStackTrace();
}
}
int x = -1;
int y = -1;
public void paint(Graphics g)
{
g.drawImage(myImage, 0, 0, this);
if(x!=-1 && y!=-1)
{
int r = 10;
x = x - (r / 2);
y = y - (r / 2);
g.fillOval(x, y, r, r);
}
}
@Override
public void mouseClicked(MouseEvent arg) {
System.out.println("mouse Clicked");
System.out.println("("+ arg.getX() + "," + arg.getY() +")");
x = arg.getX();
y = arg.getY();
repaint();
}
@Override
public void mouseEntered(MouseEvent arg0) {
System.out.println("mouse entered");
}
@Override
public void mouseExited(MouseEvent arg0) {
System.out.println("mouse exited");
}
@Override
public void mousePressed(MouseEvent arg0) {
System.out.println("mouse Click pressed");
}
@Override
public void mouseReleased(MouseEvent arg0) {
System.out.println("mouse Click released");
}
}
Запускэто из этого класса:
package gui;
import javax.swing.JFrame;
import Geom.Point3D;
import gis.Fruit;
public class Main
{
public static void main(String[] args)
{
MainWindow window = new MainWindow();
window.setVisible(true);
window.setSize(window.myImage.getWidth(),window.myImage.getHeight());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Моя главная цель - после того, как я поставлю свои предметы (pacmens и фрукты) oНа карте это должно выглядеть примерно так: https://media.giphy.com/media/5UDHI0JLxBBElUFuCs/giphy.gif
Я ищу общее руководство, как заставить моих упаковщиков двигаться так, а не оставаться неподвижными.