Login Register






[Source] Space Warrior filter_list
Author
Message
[Source] Space Warrior #1
I made this game of Space Warrior in java recently and would like to share with you guys.. Please do provide feedback on it.
Screenshot :
[Image: screen.jpg]

Source :
SpaceWarrior.java
Code:
/*Made by : Solixious Klein*/ import javax.swing.*; import javax.swing.Timer; import java.awt.*; import java.awt.event.*; import java.util.*; public class SpaceWarrior extends JPanel implements ActionListener { private static final long serialVersionUID = -1995860998543589555L; private JFrame fr; private Image spaceCraft,missile; private SpaceCraft sc; private Timer timer; private ArrayList<Boulder> boulders; private ArrayList<Shine> shines; private int boulderRate=150; private int ctr=0,score=0,highScore=0; private boolean gameOver; private int bouldersDestroyed,bouldersPopulation; private boolean paused,startScreen; public SpaceWarrior() { startScreen=true; paused=false; bouldersDestroyed=0; bouldersPopulation=0; highScore=10000; gameOver=false; boulders=new ArrayList<Boulder>(); shines=new ArrayList<Shine>(); sc=new SpaceCraft(); spaceCraft=sc.getImage(); missile=new Missile(sc).getImage(); fr=new JFrame("Space Warrior"); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addKeyListener(new TAdapter()); fr.add(this); fr.setSize(500,500); fr.setResizable(false); fr.setLocationRelativeTo(null); fr.setVisible(true); setFocusable(true); setDoubleBuffered(true); timer=new Timer(9,this); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new SpaceWarrior(); } }); } @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2d=(Graphics2D)g; g2d.setColor(Color.black); g2d.fillRect(0, 0, 500, 500); ArrayList<Missile> missiles=sc.getMissiles(); int size=shines.size(); for(int i=0;i<shines.size();i++) //draw the shining stars { Shine s=shines.get(i); g2d.drawImage(s.getImage(), s.getXPos(), s.getYPos(), this); } size=missiles.size(); for(int i=0;i<size;i++) //draw the missiles fired on screen { Missile m=missiles.get(i); g2d.drawImage(missile, m.getXPos(), m.getYPos(), this); g2d.drawImage(missile, m.getXPos()+20, m.getYPos(), this); } size=boulders.size(); for(int i=0;i<size;i++) { Boulder b=boulders.get(i); if(b.isVisible()) { g2d.drawImage(b.getImage(), b.getXPos(), b.getYPos(), this); } } g2d.drawImage(spaceCraft, sc.getXPos(), sc.getYPos(), this); g.setColor(Color.white); g2d.drawString("Score : "+score, 10, 20); g2d.drawString("High Score : "+highScore,350,20); if(startScreen) { g.drawString("Press Enter To Start", 200, 200); } if(gameOver) { g.drawString("Game Over", 220, 200); g.drawString("Hit Enter To Play Again", 190, 230); g.drawString("Your Stats :-", 70,300); g.drawString("Boulders Encountered : "+ bouldersPopulation,70,330); g.drawString("Boulders Destroyed : " + bouldersDestroyed, 70, 360); } if(paused) { g.drawString("Paused", 220, 200); } Toolkit.getDefaultToolkit().sync(); g.dispose(); } @Override public void update(Graphics g) { paint(g); } @Override public void actionPerformed(ActionEvent e) { if(!gameOver) { ctr++; if(ctr%300==0) shines.add(new Shine()); for(int i=0;i<shines.size();i++) { Shine s=shines.get(i); s.move(); if(!s.isVisible()) shines.remove(s); } ArrayList<Missile> missiles=sc.getMissiles(); for(int i=0;i<missiles.size() && !missiles.isEmpty();i++) { Missile m=missiles.get(i); if(m.isVisible()) { m.move(); } else { missiles.remove(m); } } if(ctr%boulderRate==0) { Boulder b=new Boulder(sc); boulders.add(b); bouldersPopulation++; } for(int i=0;i<boulders.size() && !boulders.isEmpty();i++) { Boulder b=boulders.get(i); if(b.isVisible()) { b.move(); } else { boulders.remove(b); //remove the boulder from list if it is not on screen } for(int j=0;j<missiles.size();j++) { Missile m=missiles.get(j); if(m.getXPos()-b.getXPos()<=40 && m.getXPos()-b.getXPos()>=-20 && m.getYPos()-b.getYPos()<=20 && m.getYPos()-b.getYPos()>=-20) //check if a missile hit a boulder { b.hitMissile();//missile hit the boulder, so reduce its health missiles.remove(m); if(b.getHealth()<=0) //check if the boulder hit is destroyed { if(b.getHealth()>-5) { bouldersDestroyed++; } b.explode(); score+=b.getScore(); } } } if(b.getXPos()-sc.getXPos()<=20 && b.getXPos()-sc.getXPos()>=-40 && b.getYPos()-sc.getYPos()<=20 && b.getYPos()-sc.getYPos()>=-20 && b.getHealth()>0) //check for collision of boulders and space craft { gameOver=true; } } sc.move(); //moves the space craft if(score>highScore) //update highScore if necessary highScore=score; /*updates level of play according to current score*/ if(score>=500) boulderRate=100; if(score>=10000) boulderRate=75; if(score>=25000) boulderRate=50; if(score>=50000) boulderRate=25; repaint(); } } private class TAdapter extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { if(gameOver && e.getKeyCode()==KeyEvent.VK_ENTER) { gameOver=false; score=0; boulderRate=200; bouldersPopulation=0; bouldersDestroyed=0; boulders=new ArrayList<Boulder>(); shines=new ArrayList<Shine>(); sc=new SpaceCraft(); } else if(startScreen && e.getKeyCode()==KeyEvent.VK_ENTER) { startScreen=false; timer.start(); } else if(!gameOver && e.getKeyCode()==KeyEvent.VK_P) { if(paused) { paused=false; repaint(); timer.restart(); } else { paused=true; repaint(); timer.stop(); } } else { sc.keyPressed(e); } } @Override public void keyReleased(KeyEvent e) { sc.KeyReleased(e); } } }

SpaceCraft.java
Code:
import java.awt.*; import java.awt.event.KeyEvent; import java.util.ArrayList; import javax.swing.ImageIcon; public class SpaceCraft { private int xPos,yPos; private String imageFile="craft.png"; private Image image; private int dx=0,dy=0; private ArrayList<Missile> missiles; public SpaceCraft() { xPos=232; yPos=220; image=new ImageIcon(this.getClass().getResource(imageFile)).getImage(); missiles=new ArrayList<Missile>(); } public Image getImage() { return image; } public int getXPos() { return xPos; } public int getYPos() { return yPos; } public void move() { if(xPos+dx>=0 && xPos+dx<=465) xPos=xPos+dx; if(yPos+dy>=0 && yPos+dy<=440) yPos=yPos+dy; } public void fire() { missiles.add(new Missile(this)); } public ArrayList<Missile> getMissiles() { return missiles; } public void keyPressed(KeyEvent e) { int key=e.getKeyCode(); if(key==KeyEvent.VK_UP) dy=-2; if(key==KeyEvent.VK_DOWN) dy=2; if(key==KeyEvent.VK_RIGHT) dx=2; if(key==KeyEvent.VK_LEFT) dx=-2; if(key==KeyEvent.VK_SPACE) fire(); } public void KeyReleased(KeyEvent e) { int key=e.getKeyCode(); if(key==KeyEvent.VK_UP || key== KeyEvent.VK_DOWN) dy=0; if(key==KeyEvent.VK_LEFT || key== KeyEvent.VK_RIGHT) dx=0; } }

Missile.java
Code:
import java.awt.Image; import javax.swing.ImageIcon; public class Missile { private String missile="missile.png"; private Image image; private int SPEED=10; private int x,y; public Missile(SpaceCraft sc) { x=sc.getXPos(); y=sc.getYPos(); image=new ImageIcon(this.getClass().getResource(missile)).getImage(); } public Image getImage() { return image; } public void move() { y-=SPEED; } public int getXPos() { return x; } public int getYPos() { return y; } public boolean isVisible() { return (y>=0); } public void setSpeed(int speed) { SPEED=speed; } }

Shine.java
Code:
import java.awt.Image; import javax.swing.ImageIcon; public class Shine { private String[] fileNames={"shine1.png","shine2.png","shine3.png"}; private Image image; private int x,y; private int SPEED=1; private boolean visible; private int ctr=0; public Shine() { SPEED=(int)(Math.random()*4+1); x=(int)(Math.random()*440); y=0; image=new ImageIcon(this.getClass().getResource(fileNames[(int)(Math.random()*3)])).getImage(); visible=true; } public void move() { ctr++; if(ctr==10) { y+=SPEED; ctr=0; } if(y>465) visible=false; } public Image getImage() { return image; } public int getXPos() { return x; } public int getYPos() { return y; } public boolean isVisible() { return visible; } }

Download Runnable Jar File and Images Here :
SpaceWarrior.rar (new link)
Space Warrior.rar (old link)
Folow me on My YouTube Channel if you're into art.

Reply





Messages In This Thread
[Source] Space Warrior - by Solixious - 07-29-2013, 08:16 AM