Show Posts
|
|
Pages: [1]
|
|
1
|
Game Development / Newbie & Debugging Questions / Re: Collision Problem....need help please
|
on: 2013-01-11 11:33:27
|
See this base layout 1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Rectangle bounds = new Rectangle(x, y, w, h); public void moveTo(int x, int y){ bounds.x = x; bounds.y = y; }
public Rectangle getBounds(){ return bounds; }
public boolean isCollidingWith(GameObject o){ return bounds.intersects(o.getBounds()); } |
Now use 1
| obj1.isCollidingWith(obj2); |
Hi Thanks for your help... I have a problem, the arrayList is defined in main class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import javax.swing.*;
public class Jogo extends JFrame { private static final long serialVersionUID = 1L; private Image dbImage; private Graphics dbg; private ArrayList<Alvos> bugs = new ArrayList<>(); static Balas balas; static Canhao s1 = new Canhao(); static Objetos obj; Rectangle bounds; public Jogo() { setSize(600,400); setTitle("Trabalho GMC 2012/2013"); setBackground(Color.WHITE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setVisible(true); addKeyListener(new AL()); JMenuBar menubar = new JMenuBar(); JMenu fic = new JMenu("Ficheiro"); JMenuItem abrir = new JMenuItem("Abrir"); JMenuItem novo = new JMenuItem("Novo"); JMenuItem sair = new JMenuItem("Sair"); fic.add(abrir); fic.add(novo); fic.add(sair); menubar.add(fic); setJMenuBar(menubar); bugs.add(new Alvos(50, 50 , 70, 70,"imagens/bug.gif")); bugs.add(new Alvos(145, 50 , 70, 70,"imagens/bug1.gif")); bugs.add(new Alvos(225, 50 , 70, 70,"imagens/bug.gif")); bugs.add(new Alvos(305, 50 , 70, 70,"imagens/bug1.gif")); bugs.add(new Alvos(385, 50 , 70, 70,"imagens/bug.gif")); bugs.add(new Alvos(480, 50 , 70, 70,"imagens/bug.gif")); bugs.add(new Alvos(60, 100 , 50, 50,"imagens/bug1.gif")); bugs.add(new Alvos(155, 100 , 50, 50,"imagens/bug.gif")); bugs.add(new Alvos(235, 100 , 50, 50,"imagens/bug1.gif")); bugs.add(new Alvos(315, 100 , 50, 50,"imagens/bug.gif")); bugs.add(new Alvos(395, 100 , 50, 50,"imagens/bug1.gif")); bugs.add(new Alvos(490, 100 , 50, 50,"imagens/bug.gif")); bounds = new Rectangle(); } public Rectangle getBounds() { return bounds; } @Override public void paint(Graphics g) { dbImage = createImage(getWidth(), getHeight()); dbg = dbImage.getGraphics(); paintComponent(dbg); g.drawImage(dbImage, 0, 0, this); } public void paintComponent(Graphics g) { super.paint(g); s1.desenho(g); repaint(); for(Alvos av: bugs) { av.desenho(g); } } public void getTamanho() { bugs.size(); }
public class AL extends KeyAdapter { @Override public void keyPressed(KeyEvent e){ s1.keyPressed(e); } @Override public void keyReleased(KeyEvent e){ s1.keyReleased(e); } } public static void main(String[] args) { new Jogo(); Thread canhao = new Thread(s1); canhao.start(); } } |
Thanks
|
|
|
|
|
3
|
Game Development / Newbie & Debugging Questions / Collision Problem....need help please
|
on: 2013-01-10 23:32:24
|
Hi I have a simple mini game who has a cannon, that cannon shot bullets (Rectangle) to enemies stored in a arrayList. I must code into Bullet class the collision method but i have no idea. I have search examples but all of them has two rectangles... This is my Bullet class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.util.ArrayList;
public class Balas implements Runnable { int x, y; int balaX, balaY; Rectangle balas, r1; Boolean colisao= false; private Jogo jogo; private ArrayList<Alvos> bugs; public Balas() { x= 305; y= 355; } public void desenho(Graphics g) { g.setColor(Color.pink); g.fillRect(balas.x, balas.y, balas.width, balas.height); } public int getX() { return x; } public int getY() { return y; } public int getBalaX() { return balaX; } public int getBalaY() { return balaY; } @Override public void run() { try { while(true) { Thread.sleep(5); } } catch(Exception e){System.err.println(e.getMessage()); } } } |
This is my cannon class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.KeyEvent; import java.util.ArrayList;
public class Canhao implements Runnable { int x, y, DirecaoX; boolean disparar, tiro = false; static Balas bl = new Balas(); ArrayList<Alvos> bugs; ArrayList<Rectangle> bal = new ArrayList<>(); public Canhao() { x= 350; y= 355; } public void desenho(Graphics g) { g.setColor(Color.BLACK); g.fillRect(x, y, 40, 10); g.fillRect(x+18, y-7, 4, 7); if(tiro) { bl.desenho(g); } } public void movimento() { x += DirecaoX; if(x<=0) { x=0; } if(x>=555) { x=555; } } public void setDirecaoX(int xdir) { DirecaoX= xdir; } public void keyPressed(KeyEvent e){ int keyCode = e.getKeyCode(); if(keyCode == KeyEvent.VK_LEFT){ setDirecaoX(-1); } if(keyCode == KeyEvent.VK_RIGHT) { setDirecaoX(1); } if(keyCode == KeyEvent.VK_SPACE) { if(bl.balas==null) { disparar=true; } if(disparar) { bl.balaY= y-7; bl.balaX= x+18; bl.balas= new Rectangle(bl.balaX, bl.balaY, 15, 10); tiro = true; } } } public void keyReleased(KeyEvent e){ int keyCode = e.getKeyCode(); if(keyCode == KeyEvent.VK_LEFT) { setDirecaoX(0); } if(keyCode == KeyEvent.VK_RIGHT) { setDirecaoX(0); } if(keyCode == KeyEvent.VK_SPACE) { disparar=false; if(bl.balas.y <=-5) { bl.balas=new Rectangle(0,0,0,0); tiro = false; disparar=true; } } } public void atirar() { if(tiro) { bl.balas.y--; } } public void haColisao() { } @Override public void run() { Thread Balas = new Thread(bl); Balas.start(); try { while(true) { atirar(); movimento(); Thread.sleep(5); } } catch(Exception e){System.err.println(e.getMessage());} } } |
My enemies class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package canvasgmc; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Toolkit;
public class Alvos extends Objetos { private Image img; static Balas bl = new Balas();
public Alvos(int posX, int posY, int altura, int largura, String jog) { super(posX, posY, altura, largura); this.img=Toolkit.getDefaultToolkit().getImage(jog); }
@Override void desenho(Graphics g) { g.drawImage(img, getPosX(), getPosY(), getAltura(), getLargura(), null); } } |
The arrayList is created in the main class 1 2 3 4 5
| private ArrayList<Alvos> bugs = new ArrayList<>();
bugs.add(new Alvos(50, 50 , 70, 70,"imagens/bug.gif")); bugs.add(new Alvos(145, 50 , 70, 70,"imagens/bug1.gif")); |
Can someone show me how can i achieve the collision and remove enemies from the arrayList? Thanks
|
|
|
|
|