-
sHUFFLE BORAD GAME NEED HELP!
Hi,
I am trying to create a Shuffle board game, i seem to have problem aligning the circles, could some one please see the code and help me.
This is the main class
Code:
import java.util.Vector;
import java.util.Enumeration;
import java.util.Random;
import java.math.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class ShuffleBoardApplication extends JFrame {
private ShuffleBoardPanel table; //billiard table panel
public ShuffleBoardApplication (String title) {
super(title);
setSize(250,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(100,100);
table = new ShuffleBoardPanel(this);
setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
add(table); //add the whole table view
update();
}
public void update() {
repaint(); //repaint the window
}
public static void main(String args[]) {
ShuffleBoardApplication frame = new ShuffleBoardApplication("Off Da Bank");
frame.setVisible(true); //show the frame
}
}
this is the helper classes
Code:
import java.util.ArrayList;
import java.util.Vector;
import java.util.Random;
import java.math.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
// This class represents the view Billiard Table
public class ShuffleBoardPanel extends JPanel implements ActionListener{
public static int TableWidth = 300; //table view width in pixels
public static int TableHeight = 500; //table view length in pixels
private int OwnerWidth; //width of the owner frame
private int OwnerHeight; //height of the owner frame
public static int Border = TableWidth/10; //Width of table border
//banks which account for ball radius
private int leftWall = Border + weight.RADIUS;
private int top = Border + weight.RADIUS;
private int rightWall = TableWidth + Border - weight.RADIUS;
private int bottom = TableHeight + Border - weight.RADIUS;
private weight selectedBall = null; //weight being shot
private Point cueTip = null; //tip of the shooting cue
private Point cueEnd = null; //end of the shooting cue
private ArrayList<weight> Weights = new ArrayList<weight>(); //the game Weights
private ArrayList<weight> DeadBalls = new ArrayList<weight>(); //the balls in the pockets
public static ArrayList<Point> pockets = new ArrayList<Point>(); //locations of table pockets
private JFrame owner;
// private CollisionSet collisions = new CollisionSet();
//Timer used to draw motion
int milliseconds = 2; //time between timer events
Timer timer = new Timer(milliseconds, this);
public ShuffleBoardPanel (JFrame parent) {
owner = parent; //The frame the panel lives in
setTableSize();
initialize();
timer.start();
update();
}
private void setTableSize(){
OwnerWidth = owner.getWidth() ; //table view width in pixels
OwnerHeight = owner.getHeight(); //table view length in pixels
Border = OwnerWidth/10; //Width of table border
TableWidth = OwnerWidth - 2*Border; //width of table not including border
TableHeight = OwnerHeight - 2*Border -30; //height of table not including border
leftWall = Border + weight.RADIUS;
top = Border + weight.RADIUS;
rightWall = TableWidth + Border - weight.RADIUS;
bottom = TableHeight + Border - weight.RADIUS;
//Border = TableWidth/10;
setSize(TableWidth + 2*Border, TableHeight + 2*Border);
setPreferredSize(new Dimension(TableWidth+2*Border,TableHeight+2*Border ) );
}
public void initialize(){
//initialize the game based on the size of the table
Weights.clear();
DeadBalls.clear();
weight.RADIUS = TableWidth/20;
//Create some balls on the billiard table
int startX = TableWidth/2 + Border; //constants for setting up initial ball position
int startY = TableHeight/3;
int dX = weight.RADIUS;
int dY = 2*dX;
Weights.add(new weight(new Point(startX,startY), Color.gray));
Weights.add(new weight(new Point(startX-dX, startY-dY), Color.gray));
Weights.add(new weight(new Point(startX+dX, startY-dY), Color.gray));
Weights.add(new weight(new Point(startX, startY-2*dY), Color.gray));
} //end initialize
public void update() {
//update the panels
repaint();
}
// Return the weight at the given location (if one exists)
// This is the Timer event handler
// Advance any Weights that are currently in motion
public void actionPerformed(ActionEvent e) {
update();
}
// This is the method that is responsible for painting table and Weights
public void paintComponent(Graphics aPen) {
if( (OwnerWidth != owner.getWidth()) ||
(OwnerHeight != owner.getHeight() ) ) {
//table has resized
setTableSize();
initialize();
}
//draw the billard table
super.paintComponent(aPen);
setBackground(Color.orange.darker().darker());
//Draw boundary
aPen.setColor(Color.black.darker().darker().darker ().darker());
aPen.drawRect(Border,Border, TableWidth, TableHeight);
aPen.drawRect(Border,Border, TableWidth, 50);
aPen.drawRect(Border,Border, TableWidth, 90);
//Draw Weights
for (int i = 0; i<Weights.size(); i++)
{
weight st = Weights.get(i);
st.drawWith(aPen);
}
}
}
this is the one that created the weights
Code:
import java.util.*;
import java.awt.*;
import java.io.*;
//This class represents a Billiard weight.
public class weight {
// ====
// Here is a class variable to keep track of the radius of the Balls
public static int RADIUS = ShuffleBoardPanel.TableWidth/20; //radius of ball
// These are the instance variables
private Color color; //colour of the weight center
boolean moving = false; //indicates if weight is moving or stopped
private double x; //X location of the ball
private double y; //Y location of the ball
private Point location = new Point(0,0); //x-y location of the weight
//Horizontal and Vertical Velocities
//vx<0 means left, vx>0 means right; vy<0 means up, vy>0 means down
private double vx; //horizontal velocity in pixels/millisecond
private double vy; //vertical velocity in pixels/millisecond
//Constructor
public weight(Point aPoint, Color ballColor) {
color = ballColor;
location = aPoint;
x = location.getX();
y = location.getY();
//make the ball stopped
vx = 0.0;
vy = 0.0;
moving = false;
}
// The get & set methods
public Color getColour() { return color; }
public Point getLocation() { return location; }
public int getLocationX() {return location.x;}
public int getLocationY() {return location.y;}
public int getRadius() { return weight.RADIUS; }
public void setLocation(Point aPoint) {
location.x = aPoint.x;
location.y = aPoint.y;
x = aPoint.getX(); y = aPoint.getY(); }
public void setLocation(int theX, int theY) {
location.x = theX;
location.y = theY;
x = location.getX();
y = location.getY();
}
public void setMoving(boolean isMoving) { moving = isMoving; }
public boolean isMoving() {return moving; } //answer whether ball is moving
//get and set the velocities of the ball
public double getvx() {return vx;} //get horizontal velocity
public double getvy() {return vy;} //get vertical velocity
public void setvx( double v ) {vx = v; moving = ((vx != 0.0) || (vy != 0.0)); }
public void setvy( double v ) {vy = v; moving = ((vx != 0.0) || (vy != 0.0));}
public void stop() { vx=0; vy = 0; moving = false; }
// Draw the ball using the given Graphics object
public void drawWith(Graphics aPen) {
//Draw the colored center of weight
aPen.setColor(color);
aPen.fillOval(location.x - weight.RADIUS, location.y - weight.RADIUS, weight.RADIUS * 2, weight.RADIUS * 2);
aPen.setColor(Color.red);
aPen.fillOval(location.x - RADIUS, location.y - RADIUS, weight.RADIUS, weight.RADIUS);
// Draw a black border around the weight
aPen.setColor(Color.black);
aPen.drawOval(location.x - weight.RADIUS, location.y - weight.RADIUS, weight.RADIUS * 2, weight.RADIUS * 2);
}
// Draw the ball using the given Graphics object
public void drawShadowWith(Graphics aPen) {
}
}
Thanks,
Kim
Similar Threads
-
By kimstanely in forum Java
Replies: 0
Last Post: 03-12-2006, 07:20 PM
-
By aamsaf in forum VB Classic
Replies: 0
Last Post: 09-14-2005, 02:19 PM
-
By f4cepl4nt in forum C++
Replies: 3
Last Post: 03-08-2005, 11:24 PM
-
Replies: 0
Last Post: 07-31-2000, 07:35 AM
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
Forum Rules
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks