2013-12-13 66 views
-2

所以我写了一个编译的程序,但它不会做我想做的事情。它应该填充三角形而不使用填充多边形。我试图将代码限制为循环。填充没有填充多边形的三角形?

重点是让三条线越来越小,以填充三角形的每个部分。 解决这个问题的方法是,我认为应该找出循环应该停止的地方。我猜测了三角形的一半高度(140)。

import javax.swing.*; 
import java.awt.*; 

public class Tri extends JApplet 
    { 

     int x1=0; 
     int y1 = 140; 
     int x2 = 120; 
     int y2 = 140; 
     int x3 = 60; 
     int y3; 


       public void paint (Graphics page) 
       { 
        for (y3= 0; y3<=70; y3++) 
        { 
        page.drawLine (x1, y1, x2, y2); 
        page.drawLine (x2, y2, x3, y3); 
        page.drawLine (x3, y3, x1, y1); 


        y1++; 
        x2--; 
        y2--; 
        x1++; 
        } 


       } 

    } 
+0

1)请不要忘记添加'?'提问!有些人在页面中搜索'?'如果'问题'中不存在,则直接进入下一个(实际)问题。 2)为什么编写一个小程序?如果这是由于规格。由老师,请参考[为什么CS老师应该停止教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)。 –

+0

这不是填充形状的方法。实现*** [洪水填充算法](http://en.wikipedia.org/wiki/Flood_fill)*** –

+0

不要在绘画方法中调用repaint()。这将导致无限循环。 – camickr

回答

1

改变你的循环逻辑,试试下面的代码

int x1=0; 
    int y1 = 140; 
    int x2 = 120; 
    int y2 = 140; 
    int x3 = 60; 
    int y3=0; 


      public void paint (Graphics page) 
      { 
       page.drawLine (x1, y1, x2, y2); 
       page.drawLine (x2, y2, x3, y3); 
       page.drawLine (x3, y3, x1, y1); 

       for (x1= 0; x1<=120; x1++)  

      { 

       page.drawLine (x3, y3, x1, y1); 


      } } 

保持两行恒定,通过改变其坐标

信息有关油漆改变其他线的位置()和重绘请点击链接

paint() and repaint() in Java `

+0

你是说我应该反复画一条线吗? – munchschair

+1

是的,首先如果你绘制坐标(0,140)(60,0),你用(1,140)(60,0)绘制等等,直到它到达下一行,即(120,140)(60,0) – wudpecker

+0

谢谢你油漆重漆链接。这个网站非常有帮助。 – munchschair