Java Applet Help: Coding a Dots and Boxes Game Variant

  • Context: Comp Sci 
  • Thread starter Thread starter Firestrider
  • Start date Start date
  • Tags Tags
    Java
Click For Summary

Discussion Overview

The discussion revolves around coding a variant of the dots and boxes game using Java Applets. Participants are addressing various aspects of the implementation, including mouse interactions, graphical updates, and game logic for tracking completed boxes.

Discussion Character

  • Homework-related
  • Technical explanation
  • Exploratory

Main Points Raised

  • One participant seeks help with a code issue where only one dot is painted instead of the intended 64, and expresses confusion about implementing mouse interactions for dot selection.
  • Another participant questions how to check for adjacency between dots, proposing a condition based on coordinates.
  • A suggestion is made to use nested loops to compare each dot's coordinates to determine adjacency based on specific conditions.
  • A later reply presents a refined approach to check for adjacency and draw lines between dots that meet the criteria, incorporating color checks to avoid drawing lines for certain dots.
  • Finally, a participant asks for clarification on how to define a "box" in the context of the game, specifically regarding the geometric arrangement of dots.

Areas of Agreement / Disagreement

Participants do not appear to reach a consensus on the definition of a box, as the last post raises a question rather than providing an answer. The discussion includes multiple viewpoints on how to implement the game mechanics, indicating that various approaches are being explored.

Contextual Notes

There are unresolved aspects regarding the implementation of mouse listeners and the graphical representation of game elements. Additionally, the definition of a box remains ambiguous, with no clear agreement on the criteria for box formation.

Firestrider
Messages
104
Reaction score
0

Homework Statement



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.

Homework Equations



N/A

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;
	}
}

Also any alternative pathways to get this problem done would be helpful. I know exactly what I want to be done but I've lost on how to implement it all in code :\
 
Last edited:
Physics news on Phys.org
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?
 
Try:

for(int i=0;i<63;i++) for(int j=i+1;j<63;j++)
{
if((d.getX()==d[j].getX() && java.lang.Math.abs(d.getY()-d[j].getY())==50) ||
(d.getY()==d[j].getY() && java.lang.Math.abs(d.getX()-d[j].getX())==50) )
{ ... whatever you'd like to do to join the two adjacent dots ...}
}
 
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);
				}
			}
		}

Now I got to figure out how to check for "boxes"
 
How do you define a box, four points forming a square 50 pixels apart?
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K