Note that there are some explanatory texts on larger screens.

plurals
  1. POhow to draw multiple rectangles
    primarykey
    data
    text
    <p>so I am trying to make a simple program where you click on the screen and it creates a block that falls and collides with a larger block beneath and sticks to it. Kind of like a simple collision program. The problem is when I create one block it deletes the block previously. I made an array, but it still does this. Do any of you know what Im doing wrong? Im sure its a simple fix.</p> <pre><code> public class Screen extends JPanel implements Runnable { public static JLabel statusbar; //displays a status bar showing what mouse movements are taking place private Image cat; //image of the cat public int xCoord ; //get the coordinates of the mouse pressed public int yCoord ; public int xCreate; public int yCreate; public Rectangle Ground; public Rectangle Block; public boolean isClicked = false; public int clickCount = 0; Rectangle blocks[] = new Rectangle[10]; int blocknum = 0; public Screen(Frame frame) { loadPic(); //calls the loadPic method above Handlerclass handler = new Handlerclass(); //creates a new class to use the mouse motion listener System.out.println("mouse works!"); addMouseListener(handler); addMouseMotionListener(handler); statusbar = new JLabel("default"); add(statusbar); } public void run(){ //this is the game run loop System.out.println("this is running"); try{ } catch(Exception e) {} //exception handling } public void loadPic(){ //loads the picture from the other project but its the same pic cat = new ImageIcon("C:\\Users\\Camtronius\\Documents\\NetBeansProjects\\Moving Block Proj\\src\\MovingBlock\\catIcon1.png").getImage(); //gets the image System.out.println("Image Loaded!"); } @Override public void paintComponent(Graphics g){ super.paintComponent(g); //paints the component, the picture, on top Graphics2D g2d = (Graphics2D) g.create(); g2d.drawImage(cat, xCoord, yCoord, null); g2d.setColor(Color.BLUE); Ground = new Rectangle(0,450,550,50); g2d.fillRect(0,450, 550, 50); for(Rectangle blocknum : blocks){ if (blocks != null) { g2d.setColor(Color.RED); g2d.fillRect(xCreate,yCreate,50,50); System.out.println(blocknum); } } //move(); } public void move(){ if(yCreate&lt;400){ yCreate+=1; }else{ } if(Ground.intersects(blocks[blocknum])){ yCreate=400; System.out.println("contains!"); } } private class Handlerclass implements MouseListener, MouseMotionListener{ public void mouseClicked(MouseEvent event){ } public void mousePressed(MouseEvent event){ } public void mouseReleased(MouseEvent event){ if(blocknum&lt;blocks.length){ xCreate=event.getX(); yCreate=event.getY(); blocks[blocknum] = new Rectangle(50,50, xCreate, yCreate); repaint(); } blocknum=blocknum+1; } public void mouseEntered(MouseEvent event){ } public void mouseExited(MouseEvent event){ } public void mouseDragged(MouseEvent event){ } public void mouseMoved(MouseEvent event){ statusbar.setText(String.format("Coordinates are: %d, %d", event.getX(),event.getY())); xCoord=event.getX(); yCoord=event.getY(); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload