1) Animatie dreptunghi de la tastatura (cu ajutorul sagetilor: jos, sus, stanga, dreapta) (rezolvare...)
2) Animatie doua dreptunghiuri de la tastatura (din sageti si taste) (rezolvare...)
Aplicatii Java: animatii (codul sursa)
Rezolvari
Se face un proiect java, in Eclipse.
(vezi aici utilizare Eclipse pentru dezvoltarea aplicaţiilor Java)
Atentie! Numele clasei declarate public, coincide cu numele fisierului java (fara extensie)
In cadrul lui, se face un fisier .java care se numeste Animatie1in care se copiaza codul de mai jos:
(vezi aici utilizare Eclipse pentru dezvoltarea aplicaţiilor Java)
Atentie! Numele clasei declarate public, coincide cu numele fisierului java (fara extensie)
In cadrul lui, se face un fisier .java care se numeste Animatie1in care se copiaza codul de mai jos:
//Animatie1.java import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class Animatie1 extends JPanel implements ActionListener, KeyListener //KeyListener=pt tastatura { Timer tm = new Timer (5, this); //Timer=pt animatie; pt ActionListener int x = 0, y = 0, velX = 0, velY = 0; //x=poz pe orizontala, y=poz pe verticala public Animatie1() { tm.start(); //pt inceperea procesului de animatie addKeyListener(this); setFocusable(true); //enable KeyListener setFocusTraversalKeysEnabled(false); } public void paintComponent (Graphics g) { super.paintComponent(g); g.setColor(Color.RED); g.fillRect(x, y, 50, 30); } public void actionPerformed(ActionEvent e) { //restrictii la spatiul pe care se misca if( x < 0 ) //dc obliectul este in stanga, in afara ferestrei { velX = 0; //oprim viteza x = 0; // repozitionam la 0 } if( x > 350 ) //dc obliectul este in dreapta, in afara ferestrei { velX = 0; //oprim viteza x = 350; // repozitionam la 350 } if(y < 0) //dc obliectul este sus, in afara ferestrei { velY = 0; //oprim viteza y = 0; //repozitionam la 0 } if(y > 250) //dc obliectul este jos, in afara ferestrei { velY = 0; //oprim viteza y = 250; //repozitionam la 250 } x = x + velX; //creste valoarea lui x cand apasam pe tastatura up sau down y = y + velY; //creste valoarea lui y cand apasam pe tastatura up sau down repaint(); } public void keyPressed(KeyEvent e) //pt cand apesi down de la tastatura { int c = e.getKeyCode(); //ia info de la tastatura if (c == KeyEvent.VK_LEFT) // CODUL PT SAGEATA STANGA { velX = -1; //viteza negativa cand merge in stanga velY = 0; } if (c == KeyEvent.VK_UP) // CODUL PT SAGEATA SUS { velX = 0; //pt ca nu mergem stanga sau dreapta velY = -1; //viteza negativa cand merge in sus } if (c == KeyEvent.VK_RIGHT) // CODUL PT SAGEATA DREAPTA { velX = 1; //viteza pozitiva pt ca merge in dreapta velY = 0; //pt ca nu apasam sus sau jos } if (c == KeyEvent.VK_DOWN) // CODUL PT SAGEATA JOS { velX = 0; //pt ca nu apasam dreapta sau stanga velY = 1; //viteza pozitiva pt ca merge in jos } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e) //ca sa nu se mai miste cand dai drumul la buton { velX = 0; velY = 0; } public static void main (String[] args) { Animatie1 t = new Animatie1(); JFrame jf = new JFrame(); jf.setTitle("Tutorial"); jf.setSize(400, 300); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.add(t); } }
Pentru a rula codul de mai sus, apasati butonul run din Eclipse si
vi se va deschide ca-n imaginea alaturata; folosind sagetile de la tastatura, puteti misca figura (dreprunghiul) in directiile: sus, jos, stanga, dreapta.
Pentru a downloada proiectul cu toate fisierele faceti click aici.
Se face un proiect java, in Eclipse.
(vezi aici utilizare Eclipse pentru dezvoltarea aplicaţiilor Java)
Atentie! Numele clasei declarate public, coincide cu numele fisierului java (fara extensie)
In cadrul lui, se face un fisier .java care se numeste Animatie2in care se copiaza codul de mai jos:
(vezi aici utilizare Eclipse pentru dezvoltarea aplicaţiilor Java)
Atentie! Numele clasei declarate public, coincide cu numele fisierului java (fara extensie)
In cadrul lui, se face un fisier .java care se numeste Animatie2in care se copiaza codul de mai jos:
import static java.awt.Color.green; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class Animatie2 extends JPanel implements ActionListener, KeyListener //KeyListener=pt tastatura { private static final long serialVersionUID = 1L; Timer tm = new Timer (5, this); //Timer=pt animatie; pt ActionListener int x1 = 10, y1 = 10, velX1 = 0, velY1 = 0; //x1=poz pe orizontala, y1=poz pe verticala int x2 = 375, y2 = 10, velX2 = 0, velY2 = 0; int xB = 100, yB = 100, xChange=10, yChange=5, diameter=15; private static int rectRightX=400, rectBottomY=300; //dimensiunea ferestrei in care are loc jocul public Animatie2() { tm.start(); //pt inceperea procesului de animatie addKeyListener(this); setFocusable(true); //enable KeyListener setFocusTraversalKeysEnabled(false); moveBall(); } private void moveBall() { xB = xB + 1; yB = yB + 1; } public void paintComponent (Graphics g) { super.paintComponent(g); setBackground(green); //desenez iarba (backgroundul) g.setColor(Color.GRAY); //fileu culoare g.drawLine(190, 250, 190, 10); //fileu desen g.setColor(Color.RED); g.fillRect(x1, y1, 5, 50); g.fillRect(x2, y2, 5, 50); //g.fillOval(xB, yB, diameter, diameter); } public void actionPerformed(ActionEvent e) { //restrictii la spatiul pe care se misca (I paleta) if( x1 < 10 ) //dc obliectul este in stanga, in afara ferestrei { velX1 = 0; //oprim viteza x1 = 10; // repozitionam la 10 } if( x1 > 181 ) //dc obliectul este in dreapta, in afara ferestrei { velX1 = 0; //oprim viteza x1 = 181; // repozitionam la 181 } if(y1 < 10) //dc obliectul este sus, in afara ferestrei { velY1 = 0; //oprim viteza y1 = 10; //repozitionam la 10 } if(y1 > 225) //dc obliectul este jos, in afara ferestrei { velY1 = 0; //oprim viteza y1 = 225; //repozitionam la 255 } x1 = x1 + velX1; //creste valoarea lui x cand apasam pe tastatura up sau down y1 = y1 + velY1; //creste valoarea lui y cand apasam pe tastatura up sau down //restrictii la spatiul pe care se misca (a II-a paleta) if( x2 < 195 ) //dc obliectul este in stanga, in afara ferestrei { velX2 = 0; //oprim viteza x2 = 195; // repozitionam la 195 } if( x2 > 375 ) //dc obliectul este in dreapta, in afara ferestrei { velX2 = 0; //oprim viteza x2 = 375; // repozitionam la 375 } if(y2 < 10) //dc obliectul este sus, in afara ferestrei { velY2 = 0; //oprim viteza y2 = 10; //repozitionam la 10 } if(y2 > 225) //dc obliectul este jos, in afara ferestrei { velY2 = 0; //oprim viteza y2 = 225; //repozitionam la 255 } x2 = x2 + velX2; //creste valoarea lui x cand apasam pe tastatura up sau down y2 = y2 + velY2; //creste valoarea lui y cand apasam pe tastatura up sau down repaint(); } public void keyPressed(KeyEvent e) //pt cand apesi down de la tastatura { int c = e.getKeyCode(); //ia info de la tastatura //if (c == KeyEvent.VK_LEFT) // CODUL PT SAGEATA STANGA if (c == KeyEvent.VK_A) // CODUL PT SAGEATA STANGA { velX1 = -1; //viteza negativa cand merge in stanga velY1 = 0; } //if (c == KeyEvent.VK_UP) // CODUL PT SAGEATA SUS if (c == KeyEvent.VK_W) // CODUL PT SAGEATA SUS { velX1 = 0; //pt ca nu mergem stanga sau dreapta velY1 = -1; //viteza negativa cand merge in sus } //if (c == KeyEvent.VK_RIGHT) // CODUL PT SAGEATA DREAPTA if (c == KeyEvent.VK_D) // CODUL PT SAGEATA DREAPTA { velX1 = 1; //viteza pozitiva pt ca merge in dreapta velY1 = 0; //pt ca nu apasam sus sau jos } //if (c == KeyEvent.VK_DOWN) // CODUL PT SAGEATA JOS if (c == KeyEvent.VK_Z) // CODUL PT SAGEATA JOS { velX1 = 0; //pt ca nu apasam dreapta sau stanga velY1 = 1; //viteza pozitiva pt ca merge in jos } if (c == KeyEvent.VK_LEFT) // CODUL PT SAGEATA STANGA { velX2 = -1; //viteza negativa cand merge in stanga velY2 = 0; } if (c == KeyEvent.VK_UP) // CODUL PT SAGEATA SUS { velX2 = 0; //pt ca nu mergem stanga sau dreapta velY2 = -1; //viteza negativa cand merge in sus } if (c == KeyEvent.VK_RIGHT) // CODUL PT SAGEATA DREAPTA { velX2 = 1; //viteza pozitiva pt ca merge in dreapta velY2 = 0; //pt ca nu apasam sus sau jos } if (c == KeyEvent.VK_DOWN) // CODUL PT SAGEATA JOS { velX2 = 0; //pt ca nu apasam dreapta sau stanga velY2 = 1; //viteza pozitiva pt ca merge in jos } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e) //ca sa nu se mai miste cand dai drumul la buton { velX1 = 0; velY1 = 0; velX2 = 0; velY2 = 0; } public static void main (String[] args) { Animatie2 t = new Animatie2(); JFrame jf = new JFrame(); jf.setTitle("Volley"); jf.setSize(rectRightX, rectBottomY); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.add(t); } }
Pentru a rula codul de mai sus, apasati butonul run din Eclipse si
vi se va deschide ca-n imaginea alaturata; folosind sagetile de la tastatura (jos, sus, stanga, dreapta) si tastele (z,w,a,d), puteti misca figurile (dreprunghiurile) in directiile: sus, jos, stanga, dreapta.
Pentru a downloada proiectul cu toate fisierele faceti click aici.