Adblock breaks this site

[source] Breakout(non-applet) in Java! 100% coded by me.

Discussion in 'Programming General' started by slashshot007, Dec 24, 2008.

  1. slashshot007

    slashshot007 Active Member

    Joined:
    May 6, 2006
    Posts:
    164
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    i decided to do something with my no life, so I made this, please, if you use this, give credit, I spent a lot of time on this, and am being very nice to show:

    for the .jar file, which would be alot easier to just run, download it here:http://www.megaupload.com/?d=6GZ2HMD2

    anyways there are alot of files, so i'll go first with the main one:

    named File.java, this one simply creates a window, and adds the breakoutpanel to it, the breakoutpanel will be the next file.
    Code:
    import javax.swing.*;
    import java.awt.*;
    
    public class File{
    	public static void main(String[] args){
    		JFrame frame = new JFrame("Breakout, All Code 100% Designed by Slashshot");
    		frame.setSize(500,500);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		BreakoutPanel bPanel = new BreakoutPanel(500,500);
    		Container pane = frame.getContentPane();
    		pane.add(bPanel);
    		frame.setVisible(true);
    	}
    }

    Name: BreakoutPanel.java, this one is all of the coding and stuff, you can try and figure it out, its pretty organized so won't be too hard.
    Code:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.lang.Thread;
    import sun.audio.*;
    import java.io.*;
    import java.util.ArrayList;
    
    public class BreakoutPanel extends JPanel implements Runnable{
    	
    	Paddle p;
    	Ball b;
    	Brick[][] brick = new Brick[10][5];
    	int balls = 3, bricksLeft = 50;
    	Thread myThread;
    	int xSpeed;
    	ArrayList<Pill> pills = new ArrayList<Pill>();
    	int waitTime;
    	
    	
    	public BreakoutPanel(int width, int height){
    		super.setSize(width, height);
    		
    		int y2 = 0;
    		
    		createBricks();
    		
    		p = new Paddle(width/2,height-(height/10),width/7,height/50,Color.BLACK);
    		addMouseMotionListener(new PanelMotionListener());
    		b = new Ball(getWidth()/2,getHeight()/2,getWidth()/100,1,1,Color.BLUE);
    		
    		
    		waitTime = Integer.parseInt(JOptionPane.showInputDialog(null,
    			"Enter a speed (for faster computers, 3 or 4, for slower ones, 1 or 2)",
    			"How Fast?",
    			JOptionPane.QUESTION_MESSAGE));
      			
    		myThread = new Thread(this);
    		myThread.start();
    		myThread.suspend();
    		addMouseListener(new PanelListener());
    
    	}
    	
    	public void createBricks(){
    		int widthDistance = getWidth()/10;
    		int heightDistance = getHeight()/20;
    		boolean metal = true;
    		for(int X = 0; X < 10; X++){
    			for(int Y = 0; Y < 5; Y++){
    				int random = (int)(Math.random()*13) + 1;
    				if(random > 5 && random <= 13)
    					random = 3;
    				if(random == 4 || random == 5)
    					random = 2;
    				metal = (Y < 2);
    				brick[X][Y] = new Brick(X*widthDistance,(heightDistance/2)+(Y*heightDistance),
    					getWidth()/11,getHeight()/23,random,metal);
    			}
    		}
    	}
    	
    	public void start(){
    		myThread.resume();
    	}
    
      	public void stop(){
    		myThread.suspend();
    	}
    
      	public void destroy(){
    		myThread.resume();
    		myThread.stop();
    	}
    
      	public void run(){
      		xSpeed = 1;
    		while(true){
    			int x1 = b.getX();
    			int y1 = b.getY();
    			
    			//Moderates the speed, so it wont go too fast
    			if (Math.abs(xSpeed) > 2){
    				if(xSpeed > 2)
    					xSpeed--;
    				if(xSpeed < 2)
    					xSpeed++;
    			}
    
    			checkPaddle(x1,y1);
    			
    			checkWall(x1,y1);
    				
    			checkBricks(x1,y1);
    				
    			checkLives();
    		
    			checkIfOut(y1);
    			
    			b.move();
    			
    			dropPills();
    			
    			checkPillList();
    			
    			repaint();
    			try {myThread.sleep(waitTime);}
    			catch (InterruptedException e ) {}
    		}
    	}
    	
    
    
    	public void placePill(Pill p){
    		pills.add(p);
    	}
    	
    	public void dropPills(){
    		for(int i = 0; i < pills.size(); i++){
    			Pill tempPill = pills.get(i);
    			tempPill.drop();
    			pills.set(i,tempPill);
    		}
    	}
    	
    	public void checkLives(){
    		if(bricksLeft == 0){
    			repaint();
    			balls = 0;
    			stop();
    		}
    	}
    	
    	public void checkPillList(){
    		for(int i = 0; i < pills.size(); i++){
    			Pill tempPill = pills.get(i);
    			if(p.absorbPill(tempPill)){
    				pills.remove(i);
    			}else if(tempPill.getY() > getHeight())
    				pills.remove(i);
    		}
    	}
    	
    	public void checkPaddle(int x1, int y1){
    			if(p.hitLeft(x1,y1)){
    				playSound("ding.au");
    				b.setYDir(-2);
    				xSpeed += -1;
    				b.setXDir(xSpeed);
    			}else if(p.hitRight(x1,y1)){
    				playSound("ding.au");
    				b.setYDir(-2);
    				xSpeed += 1;
    				b.setXDir(xSpeed);
    			}
    	}
    	
    	public void checkWall(int x1, int y1){
    			if(x1 >= getWidth())
    				xSpeed = -Math.abs(xSpeed);
    				b.setXDir(xSpeed);
    			if(x1 <= 0)
    				xSpeed = Math.abs(xSpeed);
    				b.setXDir(xSpeed);
    			if(y1 <= 0)
    				b.setYDir(2);
    	}
    	
        public void checkBricks(int x1, int y1){
        		for(int X = 0; X < 10; X++)
    				for(int Y = 0; Y < 5; Y++){
    					if(brick[X][Y].hitBottom(x1,y1)){
    						playSound("beep_3.au");
    						b.setYDir(2);
    						if(brick[X][Y].destroyed()){
    							bricksLeft--;
    							placePill(brick[X][Y].pill);
    						}
    					}
    					if(brick[X][Y].hitLeft(x1,y1)){
    						playSound("beep_3.au");
    						xSpeed = -xSpeed;
    						b.setXDir(xSpeed);
    						if(brick[X][Y].destroyed()){
    							bricksLeft--;
    							placePill(brick[X][Y].pill);
    						}
    					}
    					if(brick[X][Y].hitRight(x1,y1)){
    						playSound("beep_3.au");
    						xSpeed = -xSpeed;
    						b.setXDir(xSpeed);
    						if(brick[X][Y].destroyed()){
    							bricksLeft--;
    							placePill(brick[X][Y].pill);
    						}
    					}
    					if(brick[X][Y].hitTop(x1,y1)){
    						playSound("beep_3.au");
    						b.setYDir(-2);
    						if(brick[X][Y].destroyed()){
    							bricksLeft--;
    							placePill(brick[X][Y].pill);
    						}
    					}
    				}
        }
        
        public void checkIfOut(int y1){
        	if(y1 > p.getY() + 10){
    			balls --;
    			b.setY(getHeight()/2); 
    			repaint();
    			stop();
    		}
        }
        
        
        private void playSound(String file){
        	try{
    			InputStream in = new FileInputStream(file);
    			AudioStream as = new AudioStream(in);  
    			AudioPlayer.player.start(as);
    		}catch(FileNotFoundException exc){
    			System.out.println(exc);
    		}catch(IOException exc){
    			System.out.println(exc);
    		}
        }
    
    	public void paintComponent(Graphics g){
    		super.paintComponent(g);
    		p.draw(g);
    		b.draw(g);
    		for(int X = 0; X < 10; X++)
    			for(int Y = 0; Y < 5; Y++)
    				brick[X][Y].draw(g);
    		g.setColor(Color.BLACK);
    		g.drawString("Balls left: " + Integer.toString(balls), getWidth() - (getWidth()/7), getHeight() - (getHeight()/10));
    		
    		for(Pill p: pills){
    			p.draw(g);
    		}
    		
    		if(balls == 0){
    			int heightBorder = getHeight()/10;
    			int widthBorder = getWidth()/10;
    			g.setColor(Color.BLACK);
    			g.fillRect(widthBorder, heightBorder, getWidth() - (2 * widthBorder), getHeight() - (2 * heightBorder ));
    			g.setColor(Color.WHITE);
    			g.drawString("Game Over, Click the mouse to start over", getWidth()/5,getHeight()/2);
    		}
    		
    		if(bricksLeft == 0){
    			int heightBorder = getHeight()/10;
    			int widthBorder = getWidth()/10;
    			g.setColor(Color.BLACK);
    			g.fillRect(widthBorder, heightBorder, getWidth() - (2 * widthBorder), getHeight() - (2 * heightBorder ));
    			g.setColor(Color.WHITE);
    			g.drawString("Congratulations! You Win!", getWidth()/5,getHeight()/2);
    		}
    		
    	}
    	
    	private class PanelMotionListener extends MouseMotionAdapter{
    		public void mouseMoved(MouseEvent e){
    			int newX = e.getX()-getWidth()/17;
    			p.setX(newX);
    			repaint();
    		}
    	}
    	private class PanelListener extends MouseAdapter{
    		public void mousePressed(MouseEvent e){
    			if (balls>0){
    				start();
    			}else{
    				balls = 3;
    				createBricks();
    				for(int X = 0; X < 10; X++){
    					for(int Y = 0; Y < 5; Y++){
    						brick[X][Y].setVisible(true);
    					}
    				}
    				b.setY(getHeight()/2);
    				bricksLeft = 50;
    				repaint();
    				start();
    			}
    		}
    	}
    }
    next one is called Ball.java. it is the ball object(duh)
    Code:
    import javax.swing.*;
    import java.awt.*;
    
    public class Ball{
    	private int xCoord, yCoord, radius;
    	private Color color;
    	private int xDir = 1, yDir = 2 ;
    	
    	public Ball(int x, int y , int r, int xD, int yD, Color c){
    		xCoord = x;
    		yCoord = y;
    		setRadius(r);
    		setColor(c);
    	}
    	public int getX(){
    		return xCoord;
    	}
    	public int getY(){
    		return yCoord;
    	}
    	public void setY(int y){
    		yCoord = y;
    	}
    	public int getRadius(){
    		return radius;
    	}
    	public Color getColor(){
    		return color;
    	}
    	public void setXDir(int x){
    		xDir = x;
    	}
    	public void setYDir(int y){
    		yDir = y;
    	}
    	
    	public int getXDir(){
    		return xDir;
    	}
    	public int getYDir(){
    		return yDir;
    	}
    	public void setRadius(int r){
    		radius = r;
    	}
    	public void setColor(Color c){
    		color = c;
    	}
    	public void move(){
    		xCoord = xCoord + xDir;
    		yCoord  = yCoord + yDir;
    	}
    	public void draw(Graphics g){
    		Color oldColor = g.getColor();
    		g.setColor(color);
    		g.fillOval(xCoord - radius, yCoord - radius, radius * 2, radius * 2 );
    		g.setColor(oldColor);
    	}
    	public boolean containsPoint(int x, int y){
    		int xSquared = (x-xCoord)*(x - xCoord);
    		int ySquared = (y - yCoord)*(y - yCoord);
    		int radiusSquared = radius *radius;
    		return xSquared + ySquared - radiusSquared <= 0;
    	}
    }
    

    Paddle.java (the paddle):
    Code:
    import java.awt.*;
    
    public class Paddle{
    	public Color color;
    	private int x, y, width, height;
    	private int maxWidth;
    	private int minWidth;
    	
    	public Paddle(int X, int Y, int Width, int Height, Color c){
    		x = X;
    		y = Y;
    		width = Width;
    		height = Height;
    		color = c;
    		maxWidth = width*2;
    		minWidth = width/2;
    	}
    	public void setX(int X){
    		x = X;
    	}
    	
    	public int getY(){
    		return y;
    	}
    	
    	public int getWidth(){
    		return width;
    	}
    	
    	public void setWidth(int Width){
    		if(Width > maxWidth || Width < minWidth){
    			return;
    		}else{
    			width = Width;
    		}
    	}
    	
    	public boolean hitLeft(int X, int Y){
    		if((X >= x) && (X <= x+(width/2)) && ((y == Y)||(y == Y - 1))){
    			return true;
    		}
    		return false;
    	}
    	public boolean hitRight(int X, int Y){
    		if(((X >= x+(width/2)) && (X <= x+width)) && ((y == Y)||(y == Y - 1))){
    			return true;
    		}
    		return false;
    	}
    	
    	public boolean absorbPill(Pill p){
    		if((p.getX() < x + width) && (p.getX()+ p.getWidth() > x) && (y == p.getY()||y == p.getY() -1)){
    			p.absorbed(this);
    			return true;
    		}
    		return false;
    	}
    	
    	public void draw(Graphics g){
    		Color oldColor = g.getColor();
    		g.setColor(color);
    		g.fillRect(x,y,width,height);
    		g.setColor(oldColor);
    	}
    }
    brick.java (the bricks)
    Code:
    import java.awt.*;
    
    public class Brick{
    	public Color color;
    	private int x, y, width, height, numHits, maxHits;
    	private boolean visible;
    	public Pill pill;
    	
    	
    	public Brick(int X, int Y, int Width, int Height, int pillType, boolean Metal){
    		x = X;
    		y = Y;
    		width = Width;
    		height = Height;
    
    		pill = new Pill(x+(width/4),y+(height/4),width/2,height/2,pillType);
    		if(Metal){
    			maxHits = 2;
    			color = Color.GREEN;
    		}else{
    			maxHits = 1;
    			color = Color.RED;
    		}
    		numHits = 0;
    		visible = true;
    	}
    	public void setX(int X){
    		x = X;
    	}
    
    	public void addHits(){
    		numHits++;
    		color = Color.RED;
    		if(numHits == maxHits){
    			visible = false;
    		}
    	}
    	public boolean hitBottom(int X, int Y){
    		if((X>=x) && (X <= x+width) && ((y+height == Y)||(y+height == Y + 1)) && visible == true){
    			addHits();
    			return true;
    		}
    		return false;
    	}
    	
    	public void setVisible(boolean b){
    		visible = b;
    	}
    	
    	public boolean hitTop(int X, int Y){
    		if((X>=x) && (X <= x+width) && ((y == Y)||(y == Y - 1)) && visible == true){
    			addHits();
    			return true;
    		}
    		return false;
    	}
    	
    	public boolean hitLeft(int X, int Y){
    		if((Y>=y) && (Y <= y+height) && ((x == X)||(x == X - 1)) && visible == true){
    			addHits();
    			return true;
    		}
    		return false;
    	}
    	
    	public boolean hitRight(int X, int Y){
    		if((Y>=y) && (Y <= y+height) && ((x+width == X)||(x+width == X - 1)) && visible == true){
    			addHits();
    			return true;
    		}
    		return false;
    	}
    	
    	public boolean destroyed(){
    		return !visible;
    	}
    	
    	public void draw(Graphics g){
    		if(visible){
    			Color oldColor = g.getColor();
    			g.setColor(color);
    			g.fillRect(x,y,width,height);
    			g.setColor(oldColor);
    		}
    	}
    	
    }
    Pill.java: (this one is the pills that make the paddle either small, or large)
    Code:
    import java.awt.*;
    
    public class Pill{
    	public static final int BIG = 1;
    	public static final int SMALL = 2;
    	public static final int NOTHING = 3;
    	
    	int x, y,width,height,type;
    	
    	public Pill(int X, int Y,int Width, int Height, int Type){
    		x = X;
    		y = Y;
    		width = Width;
    		height = Height;
    		type = Type;
    	}
    	
    	public void drop(){
    		y += 1;
    	}
    	public int getY(){
    		return y;
    	}
    	public int getX(){
    		return x;
    	}
    	public int getWidth(){
    		return width;
    	}
    	public int getType(){
    		return type;
    	}
    	
    	public void absorbed(Paddle p){
    		if(getType() == BIG){
    			p.setWidth(p.getWidth() * 2);
    		}else if(getType() == SMALL){
    			p.setWidth(p.getWidth()/2);
    		}
    	}
    	public void draw(Graphics g){
    		Color oldColor = g.getColor();
    		if(type == NOTHING){
    			return;
    		}else if(type == BIG){
    			g.setColor(Color.BLUE);
    		}else if(type == SMALL){
    			g.setColor(Color.MAGENTA);
    		}
    		g.fillRect(x,y,width,height);
    		g.setColor(oldColor);
    	}
    }

    anyways put them all into a workspace, name them the instructed name, compile and run and you should be playing breakout!

    I will probably continue to work on this, and it is not done, but as of now, constructive criticism is appreciated.
     
  2. SuF

    SuF Legend
    Pirate Retired Global Moderator

    Joined:
    Jan 21, 2007
    Posts:
    14,212
    Referrals:
    28
    Sythe Gold:
    1,234
    Discord Unique ID:
    203283096668340224
    <3 n4n0 Two Factor Authentication User Community Participant Spam Forum Participant Sythe's 10th Anniversary
    [source] Breakout(non-applet) in Java! 100% coded by me.

    TOO MANY FILES!!!!! I will tester out laterz... :)
     
  3. slashshot007

    slashshot007 Active Member

    Joined:
    May 6, 2006
    Posts:
    164
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    suf, i created a jar file, so you dont even need to touch the files, if you want to run the application. just run the jar.
     
  4. SuF

    SuF Legend
    Pirate Retired Global Moderator

    Joined:
    Jan 21, 2007
    Posts:
    14,212
    Referrals:
    28
    Sythe Gold:
    1,234
    Discord Unique ID:
    203283096668340224
    <3 n4n0 Two Factor Authentication User Community Participant Spam Forum Participant Sythe's 10th Anniversary
    [source] Breakout(non-applet) in Java! 100% coded by me.

    oooo, why thank you. :)


    EDIT: SHit nice. :D


    I am going to make a bot to win for me. :p

    The last block took me about 20 minutes to get. It kept going 1 px away from the damned thing i think. I hit the same place RIGHT NET TO IT like 100 times... make it so when you get a bigger block that the mouse is in the center and make it so that you can not move the thing off the edge of the map... would be nice.... :/




    EDIT 2: btw the last 2 files you posted r the same. /fail :D
     
  5. war833

    war833 Member

    Joined:
    Dec 11, 2008
    Posts:
    82
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    Good job. Would be easier in flash though. :(
     
  6. Swan

    Swan When They Cry...
    Retired Global Moderator

    Joined:
    Jan 23, 2007
    Posts:
    4,957
    Referrals:
    0
    Sythe Gold:
    0
    Sythe's 10th Anniversary Member of the Month Winner
    [source] Breakout(non-applet) in Java! 100% coded by me.

    Java is far better and has a lot more potential than flash to be honest - Flash is just a convenient way of animating, and to be honest I don't see the point in using it.
     
  7. war833

    war833 Member

    Joined:
    Dec 11, 2008
    Posts:
    82
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    I know, I think Java is far better too, AS cannot compete with it. Which is why it's a shame that flash is so popular among developers of 2d games on the internet. :(
     
  8. hampe-92

    hampe-92 Forum Addict

    Joined:
    Jul 10, 2008
    Posts:
    328
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    really nice man! :)
    not very hard to win tho ;)
    maybe should try to make a similar game in C# will post if i bother/succeed :p
     
  9. slashshot007

    slashshot007 Active Member

    Joined:
    May 6, 2006
    Posts:
    164
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    ok I changed the last file, so its actually pill.java.
     
  10. Ruski76

    Ruski76 Newcomer

    Joined:
    Jan 1, 2009
    Posts:
    4
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    nice game, how long it take u to make?:idea:
     
  11. slashshot007

    slashshot007 Active Member

    Joined:
    May 6, 2006
    Posts:
    164
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    idk a couple days. no more than an hour a day.
     
  12. Lopaka

    Lopaka Newcomer

    Joined:
    Mar 22, 2009
    Posts:
    5
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    naice game, good script.
     
  13. hampe-92

    hampe-92 Forum Addict

    Joined:
    Jul 10, 2008
    Posts:
    328
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    there is no script in sight...
     
  14. slashshot007

    slashshot007 Active Member

    Joined:
    May 6, 2006
    Posts:
    164
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    hampe did you grow up with asbestos in your room?
    clearly he was implying the code.
     
  15. hampe-92

    hampe-92 Forum Addict

    Joined:
    Jul 10, 2008
    Posts:
    328
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    asbetos, hmm, no I don't think so.. what makes you believe that?:)
    I'm just getting so irritated on people that think it's the same thing...
    and I'm not stupid, I understand what he meant...
     
  16. Yeezy

    Yeezy Newcomer

    Joined:
    Apr 30, 2012
    Posts:
    1
    Referrals:
    0
    Sythe Gold:
    0
    [source] Breakout(non-applet) in Java! 100% coded by me.

    Awesome job)
    Could you tell me where I can change the speed of ball, in which file and stroke?
     
< 370+ Java E-books[Organized][Google doc's][No download required] | Hard Challenge - Moving images >


 
 
Adblock breaks this site