Need help with java code (Lunar Lander game).
Hi there guys, i've got an assignment in university due tomorrow. And im struggling on finishing my code. Its 2D btw.
Basically we have to make a Lunar Lander type game (Accelerating, gravity, crash zone, land pad etc).
Ive done all the gravity, acceleration.
But i'm having trouble making the certain areas of my screen a crash zone and land pad.
The crash zone is basically all the floor (no including the land pad). so that when the image hits the crash zone it changes to an explosiong gif,
And the land pad i need to have the lander speed low enough and it to land on the land pad to be a successfull landing if that makes sense?
Basically I can't get my head around how i tell it that the floor area is solid and is a crash zone and that the land pad is solid and able to land on?
Lunar Lander
sort of like that game but not as many complex cliffs etc.
Any helps appreciated cheers - Jay.
Code :
/**
* Write a description of class LunarLander here.
*
* @author (your name)
* @version (a version number or a date)
*/
//Functionality
import javax.swing.JFrame; // window functionality
import java.awt.Color; // RGB color stuff
import javax.swing.Timer; // import timer functionality
import java.awt.event.*; // functionality for the event fired by the timer
import java.awt.*; // Graphics stuff from the AWT library, e.g. Graphics
import javax.swing.*; // Graphics stuff from the Swing library, e.g. JLabel
import java.awt.image.BufferedImage; // Graphics drawing canvas
import java.awt.event.KeyEvent;
import java.util.Random;
public class LunarLander extends JFrame{
// The Java window
private static JFrame window;
// Graphics "Handle"
private static Graphics gr;
// Image Storage
private static Image theBackground; // Background Image
private static Image theLander; // PNG of the Lunar Lander
private static Image theBang; // Animated Explosion
public static Random randomGen= new Random();
private static int landerX = randomGen.nextInt(800 - 50), landerY = 50; // Starting position of the lander
private static boolean explosion=false; // Sets explosion to false
public static int speedY = 0;
public static int speedX = 0;
public static double speedStopping = 1;
public static int speedAccelerating = 2;
public static int topLandingSpeed = 5;
// Main Method, Create window
public static void main(String[] args) {
//Window Setup
window = new JFrame(); // Renames the new window
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Sets the X to close
window.setTitle("Moon Lander, Can you be the first man on the moon!"); // Title Name
window.setSize(800, 600); // Window Size
window.setResizable(true); // Disables resizable window
window.setLocationRelativeTo(null); // Sets location to top of the screen
BufferedImage canvas=new BufferedImage(800,600,BufferedImage.TYPE_INT_ARGB); // Creates A Canvas
gr=canvas.getGraphics(); // Creates handle for drawing on the canvas
JLabel label=new JLabel(new ImageIcon(canvas)); // Creates label to draw on
window.add(label);
window.setVisible(true); // Displays above
//Loading Images
theBackground = GameImage.loadImage("Images//Background.png"); // Loads background
theLander = GameImage.loadImage("Images//LunarLander.png"); // Loads lander
theBang = GameImage.loadImage("Images//explosion.gif"); // Loads Explosion
GameKeyboard.initialise(); // Starts keyboard input
//Timer Setup
ActionListener taskPerformer = new ActionListener()
{
public void actionPerformed(ActionEvent evt) // Calls the actionPerformed() method
{
doTimerAction();
}
};
Timer ScreenTimer = new Timer(75, taskPerformer); // Creates Timer
ScreenTimer.start(); // Starts Timer
}
// Method to draw all needed images, then timer resets to display on the screen
private static void doTimerAction() {
gr.drawImage(theBackground, 0, 0, null); // Overwrites everything with the background image
// User Instructions
gr.setColor( Color.red ); // Sets colour red
gr.setFont(new Font("Arial", Font.BOLD, 16)); // Sets font
gr.drawString("Arrow keys to move, land on the platform to win", 200,200); // Output and location
// Get keys pressed from the keyboard
char key= GameKeyboard.getKey();
int specialKey=GameKeyboard.getSpecialKey();
//Keyboard Binding
if (landerY >= 500){
gr.drawImage(theBang, landerX, landerY, null);
gr.setColor( Color.red ); // Sets colour red
gr.setFont(new Font("Arial", Font.BOLD, 16)); // Sets font
gr.drawString("You have crashed! Restart game!", 200,400);
}else{
if (specialKey == 38){
speedY -= speedAccelerating;
}else{
speedY += speedStopping;
}
if (specialKey == 37){
speedX -= speedAccelerating;
}else{
speedX += speedStopping;
}
if (specialKey == 39){
speedX += speedAccelerating;
}else{
speedX -= speedStopping;
}
landerX += speedX;
landerY += speedY;
gr.setColor( Color.red ); // Sets colour red
gr.setFont(new Font("Arial", Font.BOLD, 16)); // Sets font
gr.drawString("speedX" + speedX + "speedY" + speedY + "speedAccelerating" +speedAccelerating + "speedStopping" + speedStopping + "landerY" + landerY + "landerX" + landerX, 200,400);
gr.drawImage(theLander, landerX, landerY, null); // Draws lander and its position
}
window.repaint(); // Re paints everything onto the screen
}
}
Re: Need help with java code (Lunar Lander game).