Avatar billede xsix Nybegynder
02. oktober 2007 - 19:10 Der er 2 kommentarer og
1 løsning

Slette g.drawRect og g.frawOval?

Hej Eksperter.

Har den her kode, hvor jeg får en bil til at kopiere sig selv igen og igen, så der ser ud som om den flytter sig, problemet er at jeg gerne vil have det til at se mere realistisk ud, sådan så at hver gang jeg laver en ny, skal den slette den gamle.

Nogen der kan forklare mig hvordan jeg gør det? :-)

(det skal nok lige siges at jeg er meget nybegynder til java)

import javax.swing.*;
import java.awt.*;
/**
*
* @author XsiX
*/
public class MoveCar
{
  public static void main(String args[])
  {
      JFrame win = new JFrame();
      Graphics g;
      Container cp;
     
      win.setSize(500,500);
      win.setDefaultCloseOperation(win.EXIT_ON_CLOSE);
      win.setBackground(Color.DARK_GRAY);
      win.setVisible(true);
     
     
      cp = win.getContentPane();
      g = cp.getGraphics();
      g.setColor(Color.BLUE);
      g.drawRect(10, 10, 20, 10);
      int i=0;
      for(;i<400;i+=30)
      { 
          g.drawRect(10+i,10, 20, 10);
          g.drawOval(10+i,20, 10,10);
          g.drawOval(20+i,20, 10,10);
          waitAlittle();
          g.clearRect(10+i,10, 20, 10);
         
      }
     
      int j=0;
      for(;j<400;j+=30)
      { 
          g.drawRect(10+i,10+j, 20, 10);
          g.drawOval(10+i,20+j, 10,10);
          g.drawOval(20+i,20+j, 10,10);
          waitAlittle();
          g.clearRect(10+i,10+j, 20, 10);
         
      }
     
      int k=0;
      for(;k<400;k+=30)
      { 
          g.drawRect(10+i-k,10+j, 20, 10);
          g.drawOval(10+i-k,20+j, 10,10);
          g.drawOval(20+i-k,20+j, 10,10);
          waitAlittle();
          g.clearRect(10+i-k,10+j, 20, 10);
         
      }
     
            int l=0;
      for(;l<400;l+=30)
      { 
          g.drawRect(10+i-k,10+j-l, 20, 10);
          g.drawOval(10+i-k,20+j-l, 10,10);
          g.drawOval(20+i-k,20+j-l, 10,10);
          waitAlittle();
          g.clearRect(10+i-k,10+j-l, 20, 10);
         
      }
           
      int m=0;
      for(;m<400;m+=30)
      { 
          g.drawRect(10+i-k+m,10+j-l+m, 20, 10);
          g.drawOval(10+i-k+m,20+j-l+m, 10,10);
          g.drawOval(20+i-k+m,20+j-l+m, 10,10);
          waitAlittle();
          g.clearRect(10+i-k+m,10+j-l+m, 20, 10);
         
      }
     
            int n=0;
            for(;n<400;n+=30)
      { 
          g.drawRect(10+i-k+m,10+j-l+m-n, 20, 10);
          g.drawOval(10+i-k+m,20+j-l+m-n, 10,10);
          g.drawOval(20+i-k+m,20+j-l+m-n, 10,10);
          waitAlittle();
          g.clearRect(10+i-k+m,10+j-l+m-n, 20, 10);
         
      }
           
            int b=0;
            for(;b<400;b+=30)
      { 
          g.drawRect(10+i-b,10+b, 20, 10);
          g.drawOval(10+i-b,20+b, 10,10);
          g.drawOval(20+i-b,20+b, 10,10);
          waitAlittle();
          g.clearRect(10+i-b,10+b, 20, 10);
         
      }
           

  }
  public static void waitAlittle()
  { 
          for(int i=0;i<100000000;i++);
         
      }
   
}
Avatar billede xsix Nybegynder
02. oktober 2007 - 20:53 #1
Ville være super fedt hvis jeg kunne få et svar her i aften, da jeg skal bruge det i morgen tidlig.

Hvis i synes det er for uoverskueligt, er det meste af det egentlig bare gentagelse af:

  for(;i<400;i+=30)
      {
          g.drawRect(10+i,10, 20, 10);
          g.drawOval(10+i,20, 10,10);
          g.drawOval(20+i,20, 10,10);
          waitAlittle();
          g.clearRect(10+i,10, 20, 10);
       
      }
Avatar billede xsix Nybegynder
02. oktober 2007 - 22:26 #2
Fandt ud af det ved at bruge:
g.clearRect(0,0, 500, 500);
Avatar billede jakoba Nybegynder
03. oktober 2007 - 02:01 #3
Et alternativ er at beholde en kopi af det oprindelige billede, og så bare tegne bilen forskellige steder på det billede igen og igen, billeder der en gang er tegnet en bil på bliver så bare slettet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester