Java Video Tutorial 60

import java.awt.Polygon;
import java.awt.Rectangle;

public class PhotonTorpedo extends Polygon{
	private static final long serialVersionUID = 1L;
	// Get the board width and height

	int gBWidth = GameBoard.boardWidth;
	int gBHeight = GameBoard.boardHeight;
	// Center of torpedo
	private double centerX = 0, centerY = 0;
	// Will hold the x & y coordinates for the torpedo
	// Everything is based on coordinates from the center
	public static int[] polyXArray = {-3,3,3,-3,-3};
	public static int[] polyYArray = {-3,-3,3,3,-3};
	// Width and height of torpedo
	private int torpedoWidth = 6, torpedoHeight = 6;
	// Keep track of whether torpedo is on screen
	public boolean onScreen = false;
	// The angle the torpedo moves on the screen
	private double movingAngle = 0;
	// Determines how quickly the torpedo moves on 
	// its assigned path
	private double xVelocity = 5, yVelocity = 5;
	public PhotonTorpedo(double centerX, double centerY, double movingAngle){
		// Creates a Polygon by calling the super or parent class Polygon
		super(polyXArray, polyYArray, 5);
		// Defines the center based on the vectors of
		// the ships nose. movingAngle is the same as ship
		this.centerX = centerX;
		this.centerY = centerY;
		this.movingAngle = movingAngle;
		// Tells program to show the torpedo
		this.onScreen = true;
		// Sets how quickly the torpedo moves along the path defined
		// by setXVelocity and setYVelocity
	// Gets & sets the values for the x & y center of torpedo
	public double getXCenter(){ return centerX; }
	public double getYCenter(){ return centerY; }
	public void setXCenter(double xCent){ this.centerX = xCent; }
	public void setYCenter(double yCent){ this.centerY = yCent; }
	public void changeXPos(double incAmt) { this.centerX += incAmt; }
	public void changeYPos(double incAmt) { this.centerY += incAmt; }
	// Gets, sets, the torpedo velocity
	public double getXVelocity(){ return xVelocity; }
	public double getYVelocity(){ return yVelocity; }
	public void setXVelocity(double xVel){ this.xVelocity = xVel; }
	public void setYVelocity(double yVel){ this.yVelocity = yVel; }
	// Gets & sets the x & y for upper left hand corner of ship
	public int getWidth(){ return torpedoWidth; }
	public int getHeight(){ return torpedoHeight; }
	// Set and increase the torpedo movement angle
	public void setMovingAngle(double moveAngle){ this.movingAngle = moveAngle; }
	public double getMovingAngle(){ return movingAngle; }
	// NEW Artificial rectangle that is used for collision detection
	public Rectangle getBounds(){
		return new Rectangle((int) getXCenter() - 6, (int) getYCenter() - 6, getWidth(), getHeight());
	// Calculate the torpedo angle of movement
	// By taking the cos of the angle I get the opposite value of x
	// Angle * Math.PI / 180 converts degrees into radians
	public double torpedoXMoveAngle(double xMoveAngle){
		return (double) (Math.cos(xMoveAngle * Math.PI / 180));
	// By taking the sin of the angle I get the adjacent value of y
	// Angle * Math.PI / 180 converts degrees into radians 
	public double torpedoYMoveAngle(double yMoveAngle){
		return (double) (Math.sin(yMoveAngle * Math.PI / 180));
	public void move(){
			// Increase the x origin value based on current velocity
		// If the ship goes off the board flip it to the other side of the board
		if(this.getXCenter() < 0){
			this.onScreen = false;
		} else
			if (this.getXCenter() > gBWidth){
				this.onScreen = false;
		// Increase the x origin value based on current velocity 
		// If the ship goes off the board flip it to the other side of the board
		if(this.getYCenter() < 0){
			this.onScreen = false;
		} else
			if (this.getYCenter() > gBHeight){
				this.onScreen = false;
		} // END OF onScreen CHECK


Pages: 1 2 3 4 5

26 Responses to “Java Video Tutorial 60”

  1. mr.roshik says:

    Hi do u have any plan to make tutorial on magento or drupal for developing ecommerce site ? i think advanced step of this type tutorials are not available. so please …..

    • admin says:

      Not at this time because I made a free wordpress ecommerce tutorial that has worked perfectly for me for almost a year with a single problem. I don’t know of an iron clad free ecommerce solution other than what I covered in Create an Online Store. I don’t know if you’ve seen that tutorial or not?

  2. mr.roshik says:

    display none and visibility hidden , whts the difference of this two css property ? help me to know.

    • admin says:

      visibility:hidden hides an element, but it will still take up the same space as before and still affect the layout.

      display:none hides an element, it will not take up any space and the page will be displayed as if the element is not there

  3. mr.roshik says:

    Thanks a lot.

  4. Bilou says:

    Look man you did a great job ^^ I am glad because there is people like you alive :p I’ll be happier if you make more Java tutorials

    • admin says:

      More pure Java tutorials are right around the bend. My last tutorials on design patterns and UML are technically Java tutorials. You have to learn a bunch of things to be a great programmer. Refactoring using java is coming next. Thanks for stopping by 🙂

  5. MADLY says:

    Is there a .zip archive for the noises…

  6. bob says:

    I also do games long time ago using Java and J2ME. I just do simple box collission detection. I think circles are much easier because you just compute the distance between the 2 centers.

  7. Samuel Pius says:

    Hey Derek 🙂

  8. Umair says:

    Hi Derek,

    I liked this series of video game. I just wanted to ask is this include MVC(Model View Controller) pattern. My question is what is MVC and how did you achieved in this video game.

  9. Umair says:


    Is it true that C,C++ supports more graphics option than Java. This is what you told in one of the game video series.

  10. Umair says:

    Thank you in advance…

  11. Prakash says:

    Hi.. I am your great fan. I learnt java from your tutorial.. You are really awesome.. Keep going.

  12. Alex says:

    Woooooooooo!!!!!! first video game down!

    Just wanted to say thank you. I have learned so much through your tutorials. They may have also played a part in me getting a job, so congratulations you are feeding me now too.

Leave a Reply

Your email address will not be published.