post #1 of 1
Thread Starter 
Hi,

I currently have the GUI made for a simon says game, the only problem I'm having is implementing the game logic (my current code will generate a sequence and display user input, but won't save the generated sequence, or compare it to the input). I know I have to use either a queue or a stack, but I can't figure out how to implement either of these to make a working game.

Can someone please help, here's what I got so far:

Driver:
Code:
import javax.swing.JFrame;

public class Location 
{
   public static void main (String[] args) 
   {
      JFrame frame = new JFrame ("Location");
      frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(new LocationPanel());
      frame.pack();
      frame.setVisible(true);
   }
}

"LocationPanel" (Simon Says game logic)
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Random;

public class LocationPanel extends JPanel 
{

private final int WIDTH =300, HEIGHT=300;// dimensions of window
private int[] xLoc, yLoc;// locations for target boxes
/*01
23*/

private int timer;// timer for displaying user clicks
private int xClick, yClick;// location of a user click

private int sTimer;// timer for displaying target
private int[] target;// choice of target

private int currTarget;
private int numTargets;

private JButton pushButton;// button for playing next sequence

public LocationPanel() 
{
xLoc = new int[4];
yLoc = new int[4];
xLoc[0] = 100;yLoc[0] = 100;
xLoc[1] = 200;yLoc[1] = 100;
xLoc[2] = 100;yLoc[2] = 200;
xLoc[3] = 200;yLoc[3] = 200;

timer = 0;
sTimer = 0;

xClick = -100;yClick = -100;
target = new int[10];
currTarget = -1;

pushButton = new JButton("Next Sequence");
pushButton.addActionListener(new ButtonListener());
add(pushButton);

addMouseListener(new MouseHandler()); 
setPreferredSize (new Dimension(WIDTH, HEIGHT));
setBackground (Color.white);
}

public void paintComponent(Graphics page) 
{
    super.paintComponent(page);

// draw four target area boxes
page.setColor(Color.black);
for (int i=0; i<4; i++) 
{
page.drawRect(xLoc[i]-20, yLoc[i]-20, 40, 40);
}

// if are displaying a target, draw it
if (sTimer>0)
{
page.setColor(Color.blue);
page.fillOval(xLoc[target[currTarget]]-15, yLoc[target[currTarget]]-15, 30, 30);
sTimer--;
repaint();
}
if (sTimer == 0) 
{
if (currTarget < numTargets - 1) 
{
currTarget++;
sTimer = 500;
} 
else 
{
sTimer--;
}
}

// if are displaying a user click, draw it
if (timer>0) 
{
page.setColor(Color.red);
page.fillOval(xClick-15, yClick-15, 30, 30);
timer--;
repaint();
}
}

// when the button is pressed, currently the program selects a single
// random target location and displays the target there for a short time
private class ButtonListener implements ActionListener 
{
public void actionPerformed(ActionEvent event) 
{
Random gen = new Random();
numTargets = target.length;
for (int i = 0; i < target.length; i++) 
{
int insert = gen.nextInt(4);

if(i == 0)
target[i] = insert;
else
{
while(insert == target[i - 1])
insert = gen.nextInt(4);

target[i] = insert;
}
}
currTarget = 0;
sTimer = 500;
repaint();
}
}

// when the user clicks the mouse, this method registers the click and
// draws a circle there for a short time
private class MouseHandler implements MouseListener, MouseMotionListener 
{
// the method that is called when the mouse is clicked - note that Java is very picky that a click does
// not include any movement of the mouse; if you move the mouse while you are clicking that is a
// "drag" and this method is not called
public void mouseClicked(MouseEvent event) 
{
// get the X and Y coordinates of where the  mouse was clicked 
        xClick = event.getX();
        yClick = event.getY();
System.out.println("(" + xClick + "," + yClick + ")");

// the repaint( ) method calls the paintComponent method, forcing the application window to be redrawn
timer = 50;
repaint();
}
// Java requires that the following six methods be included in a MouseListener class, but they need
// not have any functionality provided for them
public void mouseExited(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mousePressed(MouseEvent event) {}
public void mouseMoved(MouseEvent event) {}
public void mouseDragged(MouseEvent event) {}
}

}
My System
(13 items)
 
  
CPUMotherboardGraphicsRAM
Core i7-930 D0 3.8Ghz ASUS P6T SE PowerColor HD5870 1GB 6GB Corsair Dominator XMS3 8-8-8-20 1200Mhz 
Hard DriveOSMonitorPower
1TB Wester Digital Windows 7 Home 64bit Acer 23" XFX 850w Black Edtion 
Case
HAF 932 
  hide details  
Reply
My System
(13 items)
 
  
CPUMotherboardGraphicsRAM
Core i7-930 D0 3.8Ghz ASUS P6T SE PowerColor HD5870 1GB 6GB Corsair Dominator XMS3 8-8-8-20 1200Mhz 
Hard DriveOSMonitorPower
1TB Wester Digital Windows 7 Home 64bit Acer 23" XFX 850w Black Edtion 
Case
HAF 932 
  hide details  
Reply