Si sono verificati i seguenti errori:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.3.13 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



SITO1 -- SITO2 -- Forum1 -- CercaGlobale -- Informativa su Cookie e Privacy


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
JAVA animazione e collisione
#1
Sono riuscito ad animare una immagine e a controllare la collisione con un'altra, ovviamente scopiazzando dalla rete, si può fare di meglio e in modo più semplice ?
Codice:
package Collision;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
//import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Collision {

 public static void main(String[] args) {
   EventQueue.invokeLater(new Runnable() {
     @Override
     public void run() {
       JFrame frame = new JFrame();
     
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.add(new BackgroundPane());
       frame.pack();
       frame.setVisible(true);
       frame.setSize(100, 500);
     }
   });
 }
}

class BackgroundPane extends JPanel {
 private BufferedImage bg;
 private BufferedImage bg2;
 private int yOffset = 0;
 private int yDelta = 4; // velocità scorrimento
 Timer timer;

 public BackgroundPane() {
   try {
//     bg = ImageIO.read(new URL("http://www.java2s.com/style/download.png"));
       File file= new File("meteorite_01.gif");
       bg = ImageIO.read(file);
       file= new File("meteorite_02.gif");
       bg2 = ImageIO.read(file);
   } catch (Exception ex) {
     ex.printStackTrace();
   }

   timer = new Timer(40, new ActionListener() {
       
     @Override
     public void actionPerformed(ActionEvent e) {
       yOffset += yDelta; // muove l'oggetto
       if (yOffset > getHeight()) {
         yOffset = 0;
       }
       repaint();
     }
   });
   timer.start();
 }

 @Override
 public Dimension getPreferredSize() {
   return new Dimension(bg.getWidth(),bg.getHeight());
 }

 @Override
 protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   Graphics2D g2d = (Graphics2D) g.create();
   int bg2Y = 400;
   int xPos = (getWidth() - bg.getWidth()) / 2;
   int yPos = yOffset;
   g2d.drawImage(bg, xPos, yPos, this);
   g2d.drawImage(bg2, xPos, bg2Y, this); // meteoritr fisso
   Rectangle r1 = new Rectangle(xPos,yOffset,bg.getHeight(),bg.getWidth());
   Rectangle r2 = new Rectangle(xPos,bg2Y+5,bg2.getHeight(),bg2.getWidth());
   if (r1.intersects(r2)) {
//            yOffset = 0;
           timer.stop();
           setBackground(Color.RED);
   }
   g2d.dispose();
 }
}

P.S. mi piacerebbe poter muovere l'oggetto in basso col mouse, ma non so come fare


Allegati
.gif   meteorite_01.gif (Dimensione: 1,92 KB / Download: 44)
.gif   meteorite_02.gif (Dimensione: 2,13 KB / Download: 45)
Cita messaggio
Grazie da:


Messaggi in questa discussione
JAVA animazione e collisione - da patel - 26-10-2018,16:25
RE: JAVA animazione e collisione - da BAT - 26-10-2018,19:06
RE: JAVA animazione e collisione - da patel - 27-10-2018,10:12
RE: JAVA animazione e collisione - da BAT - 27-10-2018,15:06
RE: JAVA animazione e collisione - da patel - 09-11-2018,17:38

Vai al forum:


Utenti che stanno guardando questa discussione: