2016-03-21 5 views
0

Hallo, ich habe einen Code geschrieben, um Kreise mit Putpixel-Methode in Java zu zeichnen. Ich habe versucht, eine Schleife für diesen Code zu entwerfen, aber ich habe keinen Erfolg. Dies ist der ursprüngliche Code:Loop-Algorithmus Design

g2d=(Graphics2D) g; 
    int x=200, y=200,rad =120; 
    printcircle(x,y,rad,g); 
    printcircle(x+rad/2,y,rad/2,g); 
    printcircle(x-rad/2,y,rad/2,g); 
    printcircle(200-90,200,30,g); 
    printcircle(200+90,200,30,g); 
    printcircle(200-30,200,30,g); 
    printcircle(200+30,200,30,g); 
    printcircle(200+45,200,15,g); 
    printcircle(200-45,200,15,g); 
    printcircle(200+15,200,15,g); 
    printcircle(200-15,200,15,g); 
    printcircle(200-15,200,15,g); 
    printcircle(200-75,200,15,g); 
    printcircle(200+75,200,15,g); 
    printcircle(200+105,200,15,g); 
    printcircle(200-105,200,15,g); 

Wo rad für Radius und x, y ist der Mittelpunkt für Kreise. das ist die Form, die ich meinen Code

enter image description here

für sich geschrieben hatte, und dies ist der Code, den ich anfangen musste es mit Schleife zu kodieren:

g2d=(Graphics2D) g; 
    int x=200, y=200,rad =120; 
    printcircle(x,y,rad,g); 
    for(int i=0;i<2;i++) 
    { int t=rad/2; 
    printcircle(x+t,y,t,g); 
     printcircle(x-t,y,t,g); 
     } 
for(int i=0;i<3;i++) 
{ 
    int t=rad/4; 
    printcircle(200-90,200,30,g); 
     printcircle(200+90,200,30,g); 
     printcircle(200-30,200,30,g); 
     printcircle(200+30,200,30,g); 
} 
      printcircle(200+45,200,15,g); 
      printcircle(200-45,200,15,g); 
      printcircle(200+15,200,15,g); 
      printcircle(200-15,200,15,g); 
      printcircle(200-15,200,15,g); 
      printcircle(200-75,200,15,g); 
      printcircle(200+75,200,15,g); 
      printcircle(200+105,200,15,g); 
      printcircle(200-105,200,15,g); 

Wenn jemand kann mir helfen, bitte .

+0

ist das, wie sie diese frilly Unterwäsche entwerfen? xD –

Antwort

1
g2d=(Graphics2D) g; 
int x=200, y=200,rad =120; 
for(int i=0;i<8;i++) 
{ 
    int param; 
    if(i == 2 || i == 6) 
     param = 30; 
    else if(i == 4) 
     param = 60; 
    else if(i == 0) 
     param = 120; 
    else 
     param = 15; 
    printcircle(x+i*15,y,param,g); 
    if(i == 0) 
     continue; 
    printcircle(x-i*15,y,param,g); 
} 
+0

Diese Antwort wäre besser, wenn Sie erklären, warum Ihr Ansatz überlegen ist und das in der Frage beschriebene Problem behebt. Nur-Code-Fragen sind technisch in Ordnung, haben aber nicht das gleiche Qualitätsniveau wie eine vollständig erklärte Antwort –