Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 2 of 2

Thread: collision between player and enemy

  1. #1
    Member
    Join Date
    Oct 2012
    Posts
    133
    Thanks
    16
    Thanked 0 Times in 0 Posts

    Default collision between player and enemy

    first note this function is inside loop.
    what i am trying to do is if my player toch the enemy, than my player shoud jump back. so it will look like player got hurt.
    the method i want to use is set to set collsion of box around my enemy and player. that way i know those two box cant toch each other.

      /*** player + enemy collion ***/
    		public void PLAYER_ENEMY_COLLISION(Main m, Player p,Enemy e)
    		{
    			int enemyX = e.getX();
    			int enemyY = e.getY();
    		}
    		/*** end of PlAYER_ENEMY_COLLISION METHOD ***/

    what i was thinking was may be to do:
    when the enemy x postion by this if statment
    if(playerX < enemyX && playerX > enemyX + enemyWIDTH)
    than i can add another if statment
    if(playerY > enemyY && playerY > enemyY+enemyHEIGHT)
    now i should have collsion box around enemy. so i can see player X and Y here


    Main.java
    public class Main extends Applet implements Runnable, /*TimerListener,*/ KeyListener
    {
    	//Double buffering variables
    	Image dbImage;
    	Graphics dbGraphics;
     
    	Thread thread;
    	Timer timer;
     
    	//Class variables
    	Ground ground_class;
    	Player player_class;
    	Platform platform_class;
    	Shoot shoot_class;
    	Enemy  enemy_class;
     
     
     
    	/*** init method ***/
    	@Override
    	public void init() 
    	{
    		setSize(900, 400);
    		addKeyListener(this);
    	}/*** end of init method ***/
     
     
     
     
    	/*** start method ***/
    	@Override
    	public void start()
    	{
    		ground_class = new Ground(0, this.getHeight()-20,this.getSize().width, 20); //x, y, widith, height
    		player_class = new Player(10, ground_class.getY()-30);  //x, y
    		platform_class = new Platform();
    		shoot_class = new Shoot();
    		enemy_class = new Enemy(500, 345);   //x, y
     
    		thread = new Thread(this); //start run method
    		thread.start();
    		//timer = new Timer(1000,this); //1 sec
    		//timer.start();
    		//void stop()
    		//void setDelay(int delay)
    		//boolean isRunning()
    		//int getDelay
    	}/*** end of start method ***/
     
     
     
    	/*** run method ***/
     
    	public void run()
    	{
    		while(true) //player moves
    		{
    			ground_class.update(this, player_class);                         //ground + player collions
    			player_class.PLAYER_MOVE(this, ground_class);                                  //player moves
    			platform_class.update(this, player_class);
    			shoot_class.PLAYER_SHOOT_MOVE(this, player_class, shoot_class);  //player shoot bullet moves
    			player_class.PLAYER_ENEMY_COLLISION(this, player_class, enemy_class);          //player + enemy collision
     
    			repaint();
    			try
    			{
    				Thread.sleep(10);
    			}
    			catch(InterruptedException e)
    			{
    				e.printStackTrace();
    			}
    		}
    	}/*** end of run method ***/
     
     
     
     
     
     
     
    	/*** update method ***/
    	@Override
    	public void update(Graphics g) 
    	{
    		if(dbImage == null) //if image is empty than create new image
    		{
    			dbImage = createImage(this.getSize().width, this.getSize().height);
    			dbGraphics = dbImage.getGraphics();
    		}
    		dbGraphics.setColor(getBackground());  //set the background color
    		dbGraphics.fillRect(0, 0, this.getSize().width, this.getSize().height);
    		dbGraphics.setColor(getForeground());
    		paint(dbGraphics);     //call paint method
    		g.drawImage(dbImage, 0, 0, this);
    	}/*** end of update method ***/
     
     
     
     
     
     
    	/*** paint method ***/
    	@Override
    	public void paint(Graphics g) 
    	{
    		ground_class.paint(g);             //call paint method from Ground class  //draw ground than player on top
    		player_class.paint(g);             //call paint method from Player classr 
    		platform_class.paint(g);
    		shoot_class.paint(g, player_class); //draw bullet
    		if(enemy_class.isDEAD() == false)  //draw enemy if it's not dead
    		{
    			enemy_class.paint(g);
    		}
     
    	}/*** end of paint method ***/
     
     
     
     
     
     
    	/*** stop method ***/
    	@Override
    	public void stop()
    	{
     
    	}/*** end of stop method ***/
     
    	/*** destroy method ***/
    	@Override
    	public void destroy()
    	{
     
    	}/*** end of destroy method ***/
     
     
     
     
     
     
     
     
     
     
     
     
     
    	/************** key *********************/
    	@Override
    	public void keyPressed(KeyEvent e)
    	{
    		int keys = e.getKeyCode();
    		if(keys == KeyEvent.VK_RIGHT) 
    		{
    			player_class.hitRIGHT();
    		}
    		else if(keys == KeyEvent.VK_LEFT)
    		{
    			player_class.hitLEFT();
    		}	
    		else if (keys == KeyEvent.VK_UP)
    		{
    			player_class.hitJUMP(ground_class);
    		}
    		else if(keys == KeyEvent.VK_SPACE)
    		{
    			shoot_class.hitSHOOT();
    		}
    	}
    	@Override
    	public void keyReleased(KeyEvent e)
    	{
    		int keys = e.getKeyCode();
    		if(keys == KeyEvent.VK_RIGHT) 
    		{
    			player_class.stopRIGHT();
    		}
    		else if(keys == KeyEvent.VK_LEFT)
    		{
    			player_class.stopLEFT();
    		}	
    		//else if (keys == KeyEvent.VK_UP)
    		//{
    			//player_class.stopJUMP();
    		//}
    		else if(keys == KeyEvent.VK_SPACE)
    		{
    			shoot_class.stopSHOOT();
    		}
    	}
    	@Override
    	public void keyTyped(KeyEvent e){}
     
    	/************    MOUSE  **********/
    	public void mousePressed(MouseEvent e){}
    	public void mouseReleased(MouseEvent e){}
    	public void mouseClicked(MouseEvent e){}
    	public void mouseEntered(MouseEvent e){}
    	public void mouseExited(MouseEvent e){}
    }


    ENEMY.java
    public class Enemy 
    {
    	private int x;
    	private int y;
    	private int width = 30;
    	private int height = 40;
    	private int dx;
    	private int dy;
     
    	private boolean dead = false; //to test if enemy is dead or not
     
    	private static ImageIcon enemy_image = new ImageIcon("Image/enemy/ch2.png");
     
     
     
     
    	public Enemy(int ix, int iy)
    	{
    		x = ix;
    		y = iy;
    	}
     
    	/*** get/set methods ***/
    	public static Image getEIMAGE()  
    	{ return enemy_image.getImage(); }
     
    	public int getX()
    	{ return x; }
    	public void setX(int value) 
    	{ this.x =  value; }
     
    	public int getY()
    	{ return y; }
    	public void setY(int value) 
    	{ this.y =  value; }
     
    	public int getWIDTH()
    	{ return width; }
    	public void setWIDTH(int value) 
    	{ this.width =  value; }
     
    	public int getHEIGHT()
    	{ return height; }
    	public void setHEIGHT(int value) 
    	{ this.height =  value; }
     
    	public boolean isDEAD()
    	{ return dead; }
    	public void setDEAD(boolean value)
    	{ this.dead = value; }
     
     
     
     
    	/*** update method ****/
    	public void update(Main m)
    	{
     
    	}
     
     
     
    	/*** paint method ***/
    	public void paint(Graphics g) 
    	{
    		g.drawImage(this.getEIMAGE(), x, y, width, height, null); 
    	}/*** paint method ***/
     
    }

    Player.java
    public class Player 
    {
    	//Player movement variable
    	private int sx = 10;
    	private int sy = 352;
    	private int x;     //current x
    	private int y;     //current y
    	private int dx = 2;    //speed of player
     
    	private double dy = 6.0;  //go x up and down x
    	private double gravity = 0.2;    
     
     
    	private boolean dead = false;
     
    	private boolean look_right = true;
    	private boolean walk_right;
    	private boolean walk_left;
    	private boolean jump = false;
    	private boolean jump_lock = false;
    	private boolean fall = false;                  
    	private boolean hitSPACE = false;
     
    	/*** image variable ***/
    	private static ImageIcon player_walk_right = new ImageIcon("Image/player/player_walk_right.gif");
    	private static ImageIcon player_walk_left = new ImageIcon("Image/player/player_walk_left.gif");
    	private static ImageIcon player_stand_right = new ImageIcon("Image/player/player_stand_right.gif");
    	private static ImageIcon player_stand_left = new ImageIcon("Image/player/player_stand_left.gif");
    	private static ImageIcon player_jump_right = new ImageIcon("Image/player/player_jump_right.gif");
    	private static ImageIcon player_jump_left = new ImageIcon("Image/player/player_jump_left.gif");
     
     
     
    	/*** constructor Method ***/
    	public Player()
    	{
    	}
    	/*** constructor Method2 ***/
    	public Player(int ix, int iy) 
    	{
    		x = ix;
    		y = iy;
    	}	
     
    		/*** get/set method ***/
    		//need these to draw image's
    		public static Image get_player_walk_right()  
    		{ return player_walk_right.getImage(); }
    		public static Image get_player_walk_left()  
    		{ return player_walk_left.getImage(); }
    		public static Image get_player_stand_right()  
    		{ return player_stand_right.getImage(); }
    		public static Image get_player_stand_left()  
    		{ return player_stand_left.getImage(); }
    		public static Image get_player_jump_right()  
    		{ return player_jump_right.getImage(); }
    		public static Image get_player_jump_left()  
    		{ return player_jump_left.getImage(); }
     
    		public boolean isDEAD()
    		{ return dead; }
    		public void setDEAD(boolean value) 
    		{ this.dead =  value; }
     
    		public int getX()
    		{ return x; }
    		public void setX(int value) 
    		{ this.x =  value; }
     
    		public int getY()
    		{ return y; }
    		public void setY(int value) 
    		{ this.y =  value; }
     
    		public int getDX()
    		{ return dx; }
    		public void setDX(int value) 
    		{ this.dx =  value; }
     
    		public double getDY()
    		{ return dy; }
    	    public void setDY(double value) 
    		{ this.dy =  value; }
     
     
     
    		/*** main key methods ***/
    		/*** RIGHT ***/
    		public void hitRIGHT()  //if user hit right button
    		{ 
    			walk_right = true; 
    			look_right = true;
    		}
    		public void stopRIGHT() //if user let go of right button
    		{
    			walk_right = false;  //stop 
    			look_right = true;
    		}
     
    		/*** LEFT ***/
    		public void hitLEFT()  //move left
    		{
    			walk_left = true;
    			look_right = false;
    		}
    		public void stopLEFT()
    		{
    			walk_left = false;  //stop
    			look_right = false;
    		}
     
    		/*** JUMP ***/
    		public void hitJUMP(Ground g)
    		{
    			if(y >= g.getY()-30) //if on ground
    			{
    				jump = true;
    				dy = 6.0;	//reset
    			}
    		}
     
     
     
     
     
    		/**************************/
    		/****** LOOP METHODS ******/
    		/**************************/
    		/*** player move method ***/
    		//loop method
    		public void PLAYER_MOVE(Main m, Ground g) //player move's
    		{
    			//always same (Main m)
    			//loop - collion check here 
    			if(walk_right == true)
    			{
    					x += dx;
    			}
    			else if(walk_right == false)
    			{
    			}
     
    			if(walk_left == true)  //walking left
    			{
    				if(x - dx < 0)  //cant go left
    				{
    					x = 0;
    				}
    				else
    				{
    					x -= dx;      //move left
    				}
    			}
    			else if(walk_left == false)
    			{
    			}
     
     
     
     
    			if(jump == true) 
    			{
    				dy -= gravity;
    				y -= dy;	
    				if(y >= g.getY()-29) //if on ground
    				{
    					jump = false;
    				}
    			}
    		}/***end of update method ***/
     
     
     
     
     
     
     
     
     
    		/*** player + enemy collion ***/
    		public void PLAYER_ENEMY_COLLISION(Main m, Player p,Enemy e)
    		{
    			int enemyX = e.getX();
    			int enemyY = e.getY();
     
     
    		}
    		/*** end of PlAYER_ENEMY_COLLISION METHOD ***/
     
     
     
     
     
     
    		/*** paint method ***/
    		public void paint(Graphics g)
    		{
    			if(jump == false)
    			{
    				if(look_right == true)
    					{
    						if(walk_right == true)
    						{
    							g.drawImage(this.get_player_walk_right(), x, y, null);
    						}
    						else if(walk_right == false)
    						{
    							g.drawImage(this.get_player_stand_right(), x, y, null);
    						}
    					}
    				else if(look_right == false)
    				{
    					if(walk_left == true)
    						{
    							g.drawImage(this.get_player_walk_left(), x, y, null);
    						}
    					else if(walk_left == false)
    					{
    						g.drawImage(this.get_player_stand_left(), x, y, null);
    					}
    				}	
    			}
    			else if(jump == true)
    			{
    				if (look_right == true)
    				{
    					g.drawImage(this.get_player_jump_right(), x, y, null);
    				}
    				else if(look_right == false)
    				{
    					g.drawImage(this.get_player_jump_left(), x, y, null);
    				}
    			}
    		}
    }/*** end of class ***/


  2. #2
    Crazy Cat Lady KevinWorkman's Avatar
    Join Date
    Oct 2010
    Location
    Washington, DC
    Posts
    5,298
    My Mood
    Hungover
    Thanks
    142
    Thanked 620 Times in 531 Posts

    Default Re: collision between player and enemy

    And what happened when you tried that?
    Useful links: How to Ask Questions the Smart Way | Use Code Tags | Java Tutorials
    Static Void Games - Play indie games, learn from game tutorials and source code, upload your own games!

Similar Threads

  1. How can i make my Player attack another Player?
    By Graser in forum What's Wrong With My Code?
    Replies: 2
    Last Post: July 31st, 2012, 05:01 PM
  2. java game bullets hit player 1 but not player 2
    By ajakking789 in forum What's Wrong With My Code?
    Replies: 3
    Last Post: August 22nd, 2011, 08:19 AM
  3. java game, both players move for player 2 but not player 1
    By ajakking789 in forum What's Wrong With My Code?
    Replies: 1
    Last Post: August 21st, 2011, 12:52 PM
  4. Collision
    By risen375 in forum What's Wrong With My Code?
    Replies: 4
    Last Post: June 28th, 2011, 07:02 AM
  5. Need help with collision in a game!
    By Skyhigh32 in forum Java Theory & Questions
    Replies: 5
    Last Post: May 18th, 2011, 12:12 AM