Vector help. Communicating between classes
I am making a game where random obstacles appear. The obstacles will move towards you. I currently have this code to animate the obstacles.
for (int i = 0; i < obstacle.size(); i++){ // animate walls
obstacle.elementAt(i).x -= 1;
}
My vector multiple instances of the Walls class
Walls w = new Walls ();
Vector<w> obstacle = new Vector<w> (5,5);
and this is what the Walls class looks like
import java.awt.Rectangle;
class Walls {
Walls (){
randomLocation ();
}
public void randomLocation() {
// TODO Auto-generated method stub
x = 510;
y = (int)Math.round (Math.random ()*300);
makeRect ();
}
private void makeRect() {
// TODO Auto-generated method stub
rect = new Rectangle (x,y,10,30);
}
public int x = 510;
public int y;
public Rectangle rect;
}
Eclipse gave me an error if my class that draws the objects didn't look like this
public class CopterG<w> extends JPanel implements KeyListener, ActionListener{
...
...
}
I am not sure what the does in the drawing class.
I am trying to communicate from the class that draws the images (also animates them) with the Walls class which stores the positions of the walls. I don't know how I could fix the issue with the animation. It underlines the .x in the first code. I have made a snake game that works kind of like this, but that didn't give me any errors. I tried comparing the two and they are extremely similar.
If you would like me to re explain it maybe more clearly then I will.
Thanks for any help.
sirlink99
Practically a Master Poster
661 posts since Oct 2010
Reputation Points: 45
Solved Threads: 19
so, you do write the code but you just don't know what it means or what it is supposed to do?
I think what you ment to do was:
Vector obstacle = new Vector(5,5);
the name between < > shows what kind of elements you can put in the Vector, it's called Generics. you've put 'w', what isn't a class, so it goes searching for a x variable in a w class, which it won't find, which is why it gives you that error.
for a better object oriented design, you might want to declare those variables as private, and access them through getters and setters.
stultuske
Posting Sensei
3,137 posts since Jan 2007
Reputation Points: 1,114
Solved Threads: 433
This is the first time I made a vector of classes. I knew that I needed to add an argument to the vector, I just didn't know which one to use. I do not usually write code if I don't know what it means, except this time it gave me an error and I wanted to try to fix it. Also I was confused with the <> at this part
public class CopterG<w> extends JPanel implements KeyListener, ActionListener{
...
...
}
What is the purpose of the in that piece of code?
sirlink99
Practically a Master Poster
661 posts since Oct 2010
Reputation Points: 45
Solved Threads: 19
the same as with the Vector. and it's optional to make your code generic, it's not mandatory.
stultuske
Posting Sensei
3,137 posts since Jan 2007
Reputation Points: 1,114
Solved Threads: 433