Доброго времени суток, форумчане. Как можно реализовать перемещение объектов Obj в моей программе ? Подкиньте идей, пожалуйста. Внутри исходник программы
Код:
import javax.swing.*;
public class Main {
public static void main (String[] args) {
JFrame frame = new JFrame();
Space space = new Space();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(space);
frame.setSize(600,400);
Obj first = new Obj(100,200);
Obj second = new Obj();
space.addObj(first);
space.addObj(second);
frame.setVisible(true);
second.move(300,300);
while(true){
second.refresh();
space.repaint();
}
}
}
public class Main {
public static void main (String[] args) {
JFrame frame = new JFrame();
Space space = new Space();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(space);
frame.setSize(600,400);
Obj first = new Obj(100,200);
Obj second = new Obj();
space.addObj(first);
space.addObj(second);
frame.setVisible(true);
second.move(300,300);
while(true){
second.refresh();
space.repaint();
}
}
}
Код:
import java.util.Date;
import java.util.*;
public class Obj{
enum Command{
MOVE
}
int x,y,id;
int r = 20;
long dt;
int moveX,moveY;
double spdX = 10;
double spdY = 20;
Date startTime;
public Obj(){
x = 50;
y = 50;
}
public Obj(int x, int y){
this.x = x;
this.y = y;
}
public void move(int x, int y){
startTime = new Date();
moveX = x;
moveY = y;
}
public void refresh(){
Date nowTime = new Date();
dt = (nowTime.getTime() - startTime.getTime())/1000;
startTime = nowTime;
if (moveX>x){
x+=spdX*dt;
} else {
x-=spdX*dt;
}
if (moveY>y){
y+=spdY*dt;
} else {
y-=spdY*dt;
}
try{
Thread.sleep(1000);
} catch (Exception ex ) { }
startTime = nowTime;
}
public void setR(int r){
this.r = r;
}
public int getR(){
return r;
}
public void setX(int x){
this.x = x;
}
public void setY(int y){
this.y = y;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
}
import java.util.*;
public class Obj{
enum Command{
MOVE
}
int x,y,id;
int r = 20;
long dt;
int moveX,moveY;
double spdX = 10;
double spdY = 20;
Date startTime;
public Obj(){
x = 50;
y = 50;
}
public Obj(int x, int y){
this.x = x;
this.y = y;
}
public void move(int x, int y){
startTime = new Date();
moveX = x;
moveY = y;
}
public void refresh(){
Date nowTime = new Date();
dt = (nowTime.getTime() - startTime.getTime())/1000;
startTime = nowTime;
if (moveX>x){
x+=spdX*dt;
} else {
x-=spdX*dt;
}
if (moveY>y){
y+=spdY*dt;
} else {
y-=spdY*dt;
}
try{
Thread.sleep(1000);
} catch (Exception ex ) { }
startTime = nowTime;
}
public void setR(int r){
this.r = r;
}
public int getR(){
return r;
}
public void setX(int x){
this.x = x;
}
public void setY(int y){
this.y = y;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
}
Код:
import java.util.ArrayList;
import javax.swing.*;
import java.awt.*;
public class Space extends JPanel{
ArrayList<Obj> data = new ArrayList<Obj>();
int count = 0;
int addObj(Obj x){
data.add(x);
return count;
}
public void paint(Graphics g){
g.setColor(Color.black);
g.fillRect(0,0,this.getWidth(),this.getHeight());
g.setColor(Color.green);
for(int i = 0; i < data.size(); i++){
int lefttopX = data.get(i).getX() - data.get(i).getR();
int lefttopY = data.get(i).getY() - data.get(i).getR();
int width = 2*data.get(i).getR();
int height = 2*data.get(i).getR();
g.fillOval(lefttopY,lefttopX,width, height);
}
}
}
import javax.swing.*;
import java.awt.*;
public class Space extends JPanel{
ArrayList<Obj> data = new ArrayList<Obj>();
int count = 0;
int addObj(Obj x){
data.add(x);
return count;
}
public void paint(Graphics g){
g.setColor(Color.black);
g.fillRect(0,0,this.getWidth(),this.getHeight());
g.setColor(Color.green);
for(int i = 0; i < data.size(); i++){
int lefttopX = data.get(i).getX() - data.get(i).getR();
int lefttopY = data.get(i).getY() - data.get(i).getR();
int width = 2*data.get(i).getR();
int height = 2*data.get(i).getR();
g.fillOval(lefttopY,lefttopX,width, height);
}
}
}