| Thread Closed |
Java applet help |
Share Thread | Thread Tools |
| Dec7-08, 07:58 AM | #1 |
|
|
Java applet help
1. The problem statement, all variables and given/known data
To code a dots and boxes game variant. Basically I need to code the same game except instead of drawing lines you choose two dots to form a line. I would need MouseListener for clicking and entering/exiting dots, a graphics update for changing colors of the dots and forming lines, a score tracker for "boxes" completed, and I guess an adjacent dot checker for creating boxes. 2. Relevant equations N/A 3. The attempt at a solution Can someone tell me what is wrong with this code? I want it to paint out 64 dots, but for some reason it will only paint out one. Also I'm trying to figure out a way to have a MouseListener on each Dot so when you enter/exit the dot the color will change, and when you click on the dot the color will stay and the MouseListener will be removed. The color would be based on the current player. I'm not sure how to do this because you can't have a mouseClicked(MouseEvent e) inside the paint(Graphics g). Here is the relevant code: Code:
public void paint(Graphics g)
{
Dot[] dots = new Dot[63];
for(int i = 0; i < dots.length; i++)
{
for(int j = 25; j < 400; j += 50)
{
for(int k = 25; k < 400; k += 50)
{
dots[i] = new Dot(j, k);
}
}
}
for(Dot d : dots)
{
g.setColor(Color.black);
g.fillOval(d.getX(), d.getY(), 10, 10);
}
Code:
public class Dot
{
private int x;
private int y;
public Dot(int x, int y)
{
this.x = x;
this.y = y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
|
| Dec8-08, 11:24 AM | #2 |
|
|
Ok I figured out most of that, but I still don't know how I can have a check to see if a Dot is adjacent to each other.
I have a for iterator that loops through all the dots: "For (Dot d : Dot)" and I have the methods getX(), getY(), and getColor() for the Dots but I'm not sure exactly how to write it in code to check for adjacentcy. A line should be drawn if the dots have the same X or Y coordinate and are 50 pixels away from each other in the other coordinate. I was thinking this condition: If(d.getX() == d.getX() && Math.abs(d.getY() - d.getY())== 0) Any help please? |
| Dec8-08, 06:00 PM | #3 |
|
|
Try:
for(int i=0;i<63;i++) for(int j=i+1;j<63;j++) { if((d[i].getX()==d[j].getX() && java.lang.Math.abs(d[i].getY()-d[j].getY())==50) || (d[i].getY()==d[j].getY() && java.lang.Math.abs(d[i].getX()-d[j].getX())==50) ) { ... whatever you'd like to do to join the two adjacent dots ....} } |
| Dec8-08, 07:57 PM | #4 |
|
|
Java applet help
OK Thanks a bunch man
This is what I ended up using Code:
for(int i = 0; i < 63; i++)
{
for(int j = i + 1; j < 63; j++)
{
boolean notBlack = (Dot[i].getColor() != Color.black) && (Dot[j].getColor() != Color.black);
boolean sameX = Dot[i].getX() == Dot[j].getX();
boolean sameY = Dot[i].getY() == Dot[j].getY();
boolean adjacentX = (Dot[i].getX() - Dot[j].getX() == 50) || (Dot[i].getX() - Dot[j].getX() == -50);
boolean adjacentY = (Dot[i].getY() - Dot[j].getY() == 50) || (Dot[i].getY() - Dot[j].getY() == -50);
if((sameX && adjacentY && notBlack) || (sameY && adjacentX && notBlack))
{
g.drawLine(Dot[i].getX() + 5, Dot[i].getY() + 5, Dot[j].getX() + 5, Dot[j].getY() + 5);
}
}
}
|
| Dec8-08, 09:29 PM | #5 |
|
|
How do you define a box, four points forming a square 50 pixels apart?
|
| Thread Closed |
| Thread Tools | |
Similar Threads for: Java applet help
|
||||
| Thread | Forum | Replies | ||
| Can java applet be as big as the browser window | Computing & Technology | 2 | ||
| Java applet for Single/Double-slit Experiment? | Quantum Physics | 2 | ||
| Anything similar to this APPLET? | General Physics | 0 | ||
| creating a java chat applet | Computing & Technology | 0 | ||
| a little applet that does 6j and 3j | General Physics | 1 | ||