zeichnung nach bedingung mit weiß übermalen

Status
Nicht offen für weitere Antworten.

florian89

Mitglied
ich hab nen neues problem mit meinen kleinen java applet. diesmal will ich, nachdem ich endlich die blasen aus dem see hab aufteigen lassen, ein gezeichnetes strichmenschen bei beendigung des aufsteigens der blasen mit weiß übermalen und ein anderes anstatt des alten "erscheinen" lassen.
so hier mal der code:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;

public class LakeNyos4 extends JFrame
{
  Graphics comp;
  public LakeNyos4()
  {
    super("LAKE NYOS");
    setTitle("Lake Nyos");
    setSize(1000,1000);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    MapPane LakeNyos1 = new MapPane();
    Container content = getContentPane();
    content.add(LakeNyos1);
    setVisible(true);
    LakeNyos1.starteBlasenBewegung1();
    LakeNyos1.starteBlasenBewegung2();
    LakeNyos1.starteBlasenBewegung3();
    LakeNyos1.starteBlasenBewegung4();
    LakeNyos1.colormensch(comp);                          // versuch den menschen zu übermalen
  }
      public static void main(String[] arguments)
    {
        LakeNyos4 frame = new LakeNyos4();
    }

  
}
class MapPane extends JPanel
{
  Graphics comp;
  Graphics2D comp1D = (Graphics2D)comp;
  private int y = 450;
  private int y2= 430;
  private int y3 = 400;
  private int y4 = 440;

   public void menschen(Graphics comp)                     //zeichnet den menschen
  {

    Graphics2D comp1D = (Graphics2D)comp;
    comp1D.setColor(Color.black);
    GeneralPath ss = new GeneralPath();
    ss.moveTo(25F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(37F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(31F,255F);
    ss.lineTo(25F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(37F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(31F,265F);
    ss.lineTo(25F,275F);
    ss.closePath();
    comp1D.draw(ss);
    BasicStroke pen2 = new BasicStroke();
    comp1D.setStroke(pen2);
    Ellipse2D.Float em = new Ellipse2D.Float(27,246,8,8);
    comp1D.fill(em);
  }
    public void totmensch(Graphics comp)            //zeichnet den zweiten menschen (bloß ein strich zur veranschauung
  {
   Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(Color.red);
    GeneralPath tt = new GeneralPath();
    tt.moveTo(25F,270F);
    tt.lineTo(38F,270F);
    tt.closePath();
    comp2D.draw(tt);
    
  }
  public void colormensch(Graphics comp)     //methode zur übermalung, funktioniert aber nicht
  {
    Thread e = new Thread(new Runnable()
        {
            public void run()
            {
              if (y > 320)                   //variablenveränderung findet in einer methode statt, die ich nicht mit kopiert habe
              comp1D.setColor(Color.black);
              else
              comp1D.setColor(Color.black);
            }
        });
        e.start();

  }
    public void paintComponent(Graphics comp)
  {

    menschen(comp);
   totmensch(comp);
  }
}

so, ich würd gern wissen, wo da der wurm drin steckt. danke im vorraus
 

André Uhres

Top Contributor
Code:
...
public class LakeNyos4 extends JFrame {
    public LakeNyos4() {
...
        LakeNyos1.manColor = LakeNyos1.getBackground();     // versuch den menschen zu übermalen 
    }
...
}
class MapPane extends JPanel {
...
    public Color manColor = Color.BLACK;
    public void menschen(Graphics comp)                     //zeichnet den menschen
    {
        Graphics2D comp1D = (Graphics2D)comp;
//        comp1D.setColor(Color.black);//<--------------------------------- muss weg
...
    }
...
    public void colormensch(Graphics comp)     //methode zur übermalung
    {
        Graphics2D comp1D = (Graphics2D)comp;
        comp1D.setColor(manColor);
    }
    public void paintComponent(Graphics comp) {
        colormensch(comp);
        menschen(comp);
        totmensch(comp);
    }
...
}
 

florian89

Mitglied
so, hab den befehl gelöscht, aber nun is der mensch rot, oder son komisches braun
ich hab an andere stelle eine farbe erzeugt, die genau so aussieht. aber ich verwende sie bei dem applet für etwas anderes und benutze sie nicht für den menschen
 

André Uhres

Top Contributor
Müsste die Hintergrundfarbe sein.
(LakeNyos1.manColor = LakeNyos1.getBackground();)
Für weiss:
LakeNyos1.manColor = Color.WHITE;
 

florian89

Mitglied
ich poste einfach mal den ganzen code und du kannst dir das applet anschauen.
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;

public class LakeNyos4 extends JFrame
{
  Graphics comp;
  public LakeNyos4()
  {
    super("LAKE NYOS");
    setTitle("Lake Nyos");
    setSize(1000,1000);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    MapPane LakeNyos1 = new MapPane();
    Container content = getContentPane();
    content.add(LakeNyos1);
    setVisible(true);
    LakeNyos1.starteBlasenBewegung1();
    LakeNyos1.starteBlasenBewegung2();
    LakeNyos1.starteBlasenBewegung3();
    LakeNyos1.starteBlasenBewegung4();
    LakeNyos1.colormensch(comp);
  }
      public static void main(String[] arguments)
    {
        LakeNyos4 frame = new LakeNyos4();
    }


}
class MapPane extends JPanel
{
  Graphics comp;
  Graphics2D comp1D = (Graphics2D)comp;
  private int y = 450;
  private int y2= 430;
  private int y3 = 400;
  private int y4 = 440;
  public void See(Graphics comp)
  {
    Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(Color.white);
    Rectangle2D.Float background = new Rectangle2D.Float(
    0F, 0F, (float)getSize().width, (float)getSize().height);
    comp2D.fill(background);
    // den see zeichnen
    comp2D.setColor(Color.black);
    GeneralPath fl = new GeneralPath();
    fl.moveTo(0F,300F);
    fl.lineTo(10F,300F);
    fl.lineTo(15F,290F);
    fl.lineTo(18F,290F);
    fl.lineTo(23F,280F);
    fl.lineTo(26F,275F);
    fl.lineTo(50F,275F);
    fl.lineTo(50F,275F);
    fl.lineTo(100F,273F);
    fl.lineTo(150F,270F);
    fl.lineTo(200F,275F);
    fl.lineTo(210F,315F);
    fl.lineTo(215F,315F);   //Beginn des Sees
    fl.lineTo(225F,350F);
    fl.lineTo(235F,400F);
    fl.lineTo(250F,430F);
    fl.lineTo(270F,440F);
    fl.lineTo(320F,450F);
    fl.lineTo(380F,460F);
    fl.lineTo(440F,460F);
    fl.lineTo(500F,450F);
    fl.lineTo(550F,440F);
    fl.lineTo(570F,410F);
    fl.lineTo(585F,380F);
    fl.lineTo(595F,350F);
    fl.lineTo(605F,315F);  //Ende des Sees
    fl.lineTo(630F,310F);
    fl.lineTo(700F,305F);
    fl.lineTo(750F,315F);
    fl.lineTo(850F,315F);
    fl.lineTo(920F,305F);
    fl.lineTo(1000F,295F);
    fl.lineTo(1000F,295F);
    fl.lineTo(920F,305F);
    fl.lineTo(850F,315F);
    fl.lineTo(750F,315F);
    fl.lineTo(700F,305F);
    fl.lineTo(630F,310F);
    fl.lineTo(605F,315F);
    fl.lineTo(595F,350F);
    fl.lineTo(585F,380F);
    fl.lineTo(570F,410F);
    fl.lineTo(550F,440F);
    fl.lineTo(500F,450F);
    fl.lineTo(440F,460F);
    fl.lineTo(380F,460F);
    fl.lineTo(320F,450F);
    fl.lineTo(270F,440F);
    fl.lineTo(250F,430F);
    fl.lineTo(235F,400F);
    fl.lineTo(225F,350F);
    fl.lineTo(215F,315F);
    fl.lineTo(210F,315F);
    fl.lineTo(200F,275F);
    fl.lineTo(150F,270F);
    fl.lineTo(100F,273F);
    fl.lineTo(26F,275F);
    fl.lineTo(23F,280F);
    fl.lineTo(18F,290F);
    fl.lineTo(15F,290F);

    fl.lineTo(10f,300F);
    fl.lineTo(0F,300F);
    fl.closePath();
    comp2D.draw(fl);
  }
  public void fuelleSee(Graphics comp)
  {
    Graphics2D comp2D = (Graphics2D)comp;
    // See mit Wasser füllen
    comp2D.setColor(Color.blue);
    GeneralPath sl = new GeneralPath();
    sl.moveTo(215F,320F);
    sl.lineTo(225F,350F);
    sl.lineTo(235F,400F);
    sl.lineTo(250F,430F);
    sl.lineTo(270F,440F);
    sl.lineTo(320F,450F);
    sl.lineTo(380F,460F);
    sl.lineTo(440F,460F);
    sl.lineTo(500F,450F);
    sl.lineTo(550F,440F);
    sl.lineTo(570F,410F);
    sl.lineTo(585F,380F);
    sl.lineTo(595F,350F);
    sl.lineTo(605F,320F);
    sl.closePath();

    comp2D.fill(sl);
  }
     public void blasen(Graphics comp)
   {
      Graphics2D comp2D = (Graphics2D)comp;
      // CO2 Blasen zeichnen
      comp2D.setColor(Color.white);
      BasicStroke pen2 = new BasicStroke();
      comp2D.setStroke(pen2);
      Ellipse2D.Float e1 = new Ellipse2D.Float(380,y,4,4);
      Ellipse2D.Float e2 = new Ellipse2D.Float(355,y,4,4);
      Ellipse2D.Float e3 = new Ellipse2D.Float(390,y2,4,4);
      Ellipse2D.Float e4 = new Ellipse2D.Float(400,y,4,4);
      Ellipse2D.Float e5 = new Ellipse2D.Float(320,y2,4,4);
      Ellipse2D.Float e6 = new Ellipse2D.Float(435,y3,4,4);
      Ellipse2D.Float e7 = new Ellipse2D.Float(580,y3,4,4);
      Ellipse2D.Float e8 = new Ellipse2D.Float(230,y3,4,4);
      Ellipse2D.Float e9 = new Ellipse2D.Float(300,y4,4,4);
      Ellipse2D.Float e10 = new Ellipse2D.Float(375,y4,4,4);
      Ellipse2D.Float e11 = new Ellipse2D.Float(520,y4,4,4);
      Ellipse2D.Float e12 = new Ellipse2D.Float(410,y2,4,4);
      Ellipse2D.Float e13 = new Ellipse2D.Float(230,y,4,4);
      comp2D.fill(e1);
      comp2D.fill(e2);
      comp2D.fill(e3);
      comp2D.fill(e4);
      comp2D.fill(e5);
      comp2D.fill(e6);
      comp2D.fill(e7);
      comp2D.fill(e8);
      comp2D.fill(e9);
      comp2D.fill(e10);
      comp2D.fill(e11);
      comp2D.fill(e12);
      comp2D.fill(e13);
   }

   public void starteBlasenBewegung4()
   {
     Thread t = new Thread(new Runnable()
        {
            public void run() // Entspricht deiner "aufsteigen"-Methode
            {
                while ( y4 >= 320)
                {
                     y4 = y4 - 1;
                     repaint();
                     warten2();
                }
            }
        });
        t.start();

   }
   public void starteBlasenBewegung3()
   {
       Thread t = new Thread(new Runnable()
        {
            public void run() // Entspricht deiner "aufsteigen"-Methode
            {
                while ( y3 >= 320)
                {
                     y3 = y3 - 3;
                     repaint();
                     warten();
                }
            }
        });
        t.start();
   }
    public void starteBlasenBewegung2()
    {
       Thread t = new Thread(new Runnable()
        {
            public void run() // Entspricht deiner "aufsteigen"-Methode
            {
                while ( y2 >= 320)
                {
                     y2 = y2 - 2;
                     repaint();
                     warten();
                }
            }
        });
        t.start();
    }
    public void starteBlasenBewegung1()
    {
        Thread t = new Thread(new Runnable()
        {
            public void run() // Entspricht deiner "aufsteigen"-Methode
            {
                while ( y >= 320)
                {
                     y = y - 1;
                     repaint();
                     warten();
                }
            }
        });
        t.start();
    }

  public void warten()
  {
    try
     {
      Thread.sleep(50); // Millsekunden
     }
     catch (InterruptedException e)
    {
     e.printStackTrace();
    }
   }
     public void warten2()
  {
    try
     {
      Thread.sleep(60); // Millsekunden
     }
     catch (InterruptedException e)
    {
     e.printStackTrace();
    }
   }

   public void menschen(Graphics comp)
  {

    Graphics2D comp1D = (Graphics2D)comp;

    GeneralPath ss = new GeneralPath();
    ss.moveTo(25F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(37F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(31F,255F);
    ss.lineTo(25F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(37F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(31F,265F);
    ss.lineTo(25F,275F);
    ss.closePath();
    comp1D.draw(ss);
    BasicStroke pen2 = new BasicStroke();
    comp1D.setStroke(pen2);
    Ellipse2D.Float em = new Ellipse2D.Float(27,246,8,8);
    comp1D.fill(em);
  }

  public void totmensch(Graphics comp)
  {
   Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(Color.red);
    GeneralPath tt = new GeneralPath();
    tt.moveTo(25F,270F);
    tt.lineTo(38F,270F);
    tt.closePath();
    comp2D.draw(tt);

  }

  public void krater(Graphics comp)
  {
    Color brown = new Color(128,64,0);
    Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(brown);
    GeneralPath kk = new GeneralPath();
    kk.moveTo(235F,400F);
    kk.lineTo(245F,450F);
    kk.lineTo(255F,550F);
    kk.lineTo(280F,650F);
    kk.lineTo(290F,800F);
    kk.lineTo(310F,1000F);
    kk.lineTo(400F,1000F);
    kk.lineTo(400F,460F);
    kk.lineTo(380F,460F);
    kk.lineTo(320F,450F);
    kk.lineTo(270F,440F);
    kk.closePath();
    comp2D.fill(kk);
    GeneralPath kk2 = new GeneralPath();
    kk2.moveTo(420F,460F);
    kk2.lineTo(420F,1000F);
    kk2.lineTo(540F,1000F);
    kk2.lineTo(540F,800F);
    kk2.lineTo(550F,700F);
    kk2.lineTo(560F,550F);
    kk2.lineTo(570F,410F);
    kk2.lineTo(550F,440F);
    kk2.lineTo(500F,450F);
    kk2.lineTo(440F,460F);
    kk2.lineTo(420F,460F);
    kk2.closePath();
    comp2D.fill(kk2);
  }
  public void colormensch(Graphics comp)
  {
    Thread e = new Thread(new Runnable()
        {
            public void run()
            {
              if (y > 320)
              comp1D.setColor(Color.black);
              else
              comp1D.setColor(Color.black);
            }
        });
        e.start();

  }

    public void paintComponent(Graphics comp)
  {
    See(comp);
    fuelleSee(comp);
    blasen(comp);
    krater(comp);
    menschen(comp);
  }
}

dieses braun benutze ich für einen krater(es soll jedenfalls einen darstellen :))
 

André Uhres

Top Contributor
in paintComponent kommt colormensch(comp); direkt vor menschen(comp);
colormensch soll so aussehen:
public void colormensch(Graphics comp) //methode zur übermalung
{
Graphics2D comp1D = (Graphics2D)comp;
comp1D.setColor(manColor);
}
und manColor so:
public Color manColor = Color.BLACK;
die Farbe des menschen wird so gesetzt(*):
LakeNyos1.manColor = LakeNyos1.getBackground();
Das hier kommt dann natürlich auch weg: LakeNyos1.colormensch(comp);
Siehe dazu auch meinen Code oben.

EDIT:
(*) oder so: LakeNyos1.manColor = Color.WHITE;
 

Marco13

Top Contributor
Eine Möglichkeit wäre auch eine Variable
private boolean menschWeg = false;
in der MapPane-Klasse, die bei jedem Neuzeichnen abgefragt wird. Wenn sie "false" ist, wird der Mensch gezeichnet, wenn sie "true" ist, etwas anderes.

Die Variable auf "true" zu setzen könnte dann einer der aufsteige-Threads erledigen.

Aber noch ein "Nachtrag": Ich hatte gestern schon so etwas befürchtet, aber "gehofft", du würdest dir überlegen, wie man das vernünftig auf mehrere Blasen verallgemeinern kann. Das war nicht der Fall. Was würdest du machen, wenn du nun z.B. 100 Blasen haben möchtest, und die sich alle unterschiedlich schnell bewegen sollten?

Das hier
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;

public class LakeNyos4 extends JFrame
{
  Graphics comp;
  public LakeNyos4()
  {
    super("LAKE NYOS");
    setTitle("Lake Nyos");
    setSize(1000,1000);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    MapPane LakeNyos1 = new MapPane();
    Container content = getContentPane();
    content.add(LakeNyos1);
    setVisible(true);
    LakeNyos1.starteBlasenBewegung1();
  }
      public static void main(String[] arguments)
    {
        LakeNyos4 frame = new LakeNyos4();
    }
}


class MapPane extends JPanel
{
  Graphics comp;
  Graphics2D comp1D = (Graphics2D)comp;

  int blasenzahl = 100;
  private float x[];
  private float y[];


  public void See(Graphics comp)
  {
    Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(Color.white);
    Rectangle2D.Float background = new Rectangle2D.Float(
    0F, 0F, (float)getSize().width, (float)getSize().height);
    comp2D.fill(background);
    // den see zeichnen
    comp2D.setColor(Color.black);
    GeneralPath fl = new GeneralPath();
    fl.moveTo(0F,300F);
    fl.lineTo(10F,300F);
    fl.lineTo(15F,290F);
    fl.lineTo(18F,290F);
    fl.lineTo(23F,280F);
    fl.lineTo(26F,275F);
    fl.lineTo(50F,275F);
    fl.lineTo(50F,275F);
    fl.lineTo(100F,273F);
    fl.lineTo(150F,270F);
    fl.lineTo(200F,275F);
    fl.lineTo(210F,315F);
    fl.lineTo(215F,315F);   //Beginn des Sees
    fl.lineTo(225F,350F);
    fl.lineTo(235F,400F);
    fl.lineTo(250F,430F);
    fl.lineTo(270F,440F);
    fl.lineTo(320F,450F);
    fl.lineTo(380F,460F);
    fl.lineTo(440F,460F);
    fl.lineTo(500F,450F);
    fl.lineTo(550F,440F);
    fl.lineTo(570F,410F);
    fl.lineTo(585F,380F);
    fl.lineTo(595F,350F);
    fl.lineTo(605F,315F);  //Ende des Sees
    fl.lineTo(630F,310F);
    fl.lineTo(700F,305F);
    fl.lineTo(750F,315F);
    fl.lineTo(850F,315F);
    fl.lineTo(920F,305F);
    fl.lineTo(1000F,295F);
    fl.lineTo(1000F,295F);
    fl.lineTo(920F,305F);
    fl.lineTo(850F,315F);
    fl.lineTo(750F,315F);
    fl.lineTo(700F,305F);
    fl.lineTo(630F,310F);
    fl.lineTo(605F,315F);
    fl.lineTo(595F,350F);
    fl.lineTo(585F,380F);
    fl.lineTo(570F,410F);
    fl.lineTo(550F,440F);
    fl.lineTo(500F,450F);
    fl.lineTo(440F,460F);
    fl.lineTo(380F,460F);
    fl.lineTo(320F,450F);
    fl.lineTo(270F,440F);
    fl.lineTo(250F,430F);
    fl.lineTo(235F,400F);
    fl.lineTo(225F,350F);
    fl.lineTo(215F,315F);
    fl.lineTo(210F,315F);
    fl.lineTo(200F,275F);
    fl.lineTo(150F,270F);
    fl.lineTo(100F,273F);
    fl.lineTo(26F,275F);
    fl.lineTo(23F,280F);
    fl.lineTo(18F,290F);
    fl.lineTo(15F,290F);

    fl.lineTo(10f,300F);
    fl.lineTo(0F,300F);
    fl.closePath();
    comp2D.draw(fl);
  }
  public void fuelleSee(Graphics comp)
  {
    Graphics2D comp2D = (Graphics2D)comp;
    // See mit Wasser füllen
    comp2D.setColor(Color.blue);
    GeneralPath sl = new GeneralPath();
    sl.moveTo(215F,320F);
    sl.lineTo(225F,350F);
    sl.lineTo(235F,400F);
    sl.lineTo(250F,430F);
    sl.lineTo(270F,440F);
    sl.lineTo(320F,450F);
    sl.lineTo(380F,460F);
    sl.lineTo(440F,460F);
    sl.lineTo(500F,450F);
    sl.lineTo(550F,440F);
    sl.lineTo(570F,410F);
    sl.lineTo(585F,380F);
    sl.lineTo(595F,350F);
    sl.lineTo(605F,320F);
    sl.closePath();

    comp2D.fill(sl);
  }
     public void blasen(Graphics comp)
   {
	   if (y==null) return;

      Graphics2D comp2D = (Graphics2D)comp;
      // CO2 Blasen zeichnen
      comp2D.setColor(Color.white);
      BasicStroke pen2 = new BasicStroke();
      comp2D.setStroke(pen2);

      for (int i=0; i<y.length; i++)
      {
         Ellipse2D.Float e1 = new Ellipse2D.Float(x[i],y[i],4,4);
         comp2D.fill(e1);
	  }
   }

    public void starteBlasenBewegung1()
    {
		x = new float[blasenzahl];
		y = new float[blasenzahl];
		final float speed[] = new float[y.length];
		for (int i=0; i<speed.length; i++)
		{
			x[i] = 250 + (float)(Math.random()*300);
			y[i] = 460 + (float)(Math.random()*20);
			speed[i] = 1+(float)(Math.random()*2);
	    }

        Thread t = new Thread(new Runnable()
        {
            public void run() // Entspricht deiner "aufsteigen"-Methode
            {
				int finished = 0;
				while (finished != y.length)
				{
					finished = 0;
					for (int i=0; i<y.length; i++)
					{
						if (y[i] >= 320)
						{
							y[i] -= speed[i];
						}
						else
						{
							finished++;
						}
					}
                    repaint();
                    warten();
                }
            }
        });
        t.start();
    }

  public void warten()
  {
    try
     {
      Thread.sleep(50); // Millsekunden
     }
     catch (InterruptedException e)
    {
     e.printStackTrace();
    }
   }

   public void menschen(Graphics comp)
  {
    Graphics2D comp1D = (Graphics2D)comp;

    GeneralPath ss = new GeneralPath();
    ss.moveTo(25F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(37F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(31F,255F);
    ss.lineTo(25F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(37F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(31F,265F);
    ss.lineTo(25F,275F);
    ss.closePath();
    comp1D.draw(ss);
    BasicStroke pen2 = new BasicStroke();
    comp1D.setStroke(pen2);
    Ellipse2D.Float em = new Ellipse2D.Float(27,246,8,8);
    comp1D.fill(em);
  }

  public void totmensch(Graphics comp)
  {
   Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(Color.red);
    GeneralPath tt = new GeneralPath();
    tt.moveTo(25F,270F);
    tt.lineTo(38F,270F);
    tt.closePath();
    comp2D.draw(tt);

  }

  public void krater(Graphics comp)
  {
    Color brown = new Color(128,64,0);
    Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(brown);
    GeneralPath kk = new GeneralPath();
    kk.moveTo(235F,400F);
    kk.lineTo(245F,450F);
    kk.lineTo(255F,550F);
    kk.lineTo(280F,650F);
    kk.lineTo(290F,800F);
    kk.lineTo(310F,1000F);
    kk.lineTo(400F,1000F);
    kk.lineTo(400F,460F);
    kk.lineTo(380F,460F);
    kk.lineTo(320F,450F);
    kk.lineTo(270F,440F);
    kk.closePath();
    comp2D.fill(kk);
    GeneralPath kk2 = new GeneralPath();
    kk2.moveTo(420F,460F);
    kk2.lineTo(420F,1000F);
    kk2.lineTo(540F,1000F);
    kk2.lineTo(540F,800F);
    kk2.lineTo(550F,700F);
    kk2.lineTo(560F,550F);
    kk2.lineTo(570F,410F);
    kk2.lineTo(550F,440F);
    kk2.lineTo(500F,450F);
    kk2.lineTo(440F,460F);
    kk2.lineTo(420F,460F);
    kk2.closePath();
    comp2D.fill(kk2);
  }


    public void paintComponent(Graphics comp)
  {
    See(comp);
    fuelleSee(comp);
    blasen(comp);
    krater(comp);
    menschen(comp);
  }
}
ist immernoch ziemlicher Trash (sorry) aber ... so sinngemäß - du weißt schon :roll:

Wenn du mal irgendwann Variablen- oder Methodennamen hast wie
name1
name2
name3
dann solltest du dir (SPÄTESTENS, wenn sie bis name3 oder name4 laufen) überlegen, ob man da nicht was mit einem Array machen könnte.
 

florian89

Mitglied
cool, erstma danke wegen den blasen, ich muss echt sagen, du hast mein abi um ca 0,2 punkte nach oben geschupst^^. wenn du mal jemanden brauchst, der dir deine wohnung putzt oder ich jemanden umbringen soll, frag mich^^.
ich probier noch ne weile das mit den menschen und sag später bescheid, ob ich es hinbekommen hab
 

florian89

Mitglied
so ich hab jetzt die variable menschweg erstellt und sie in de rmethode starteblasenbewegung1 nach finished auf true gesetzt. jetzt muss ich also die die variable mit der methode mensch verbinden, sodass erst der stehende mensch aus der methode menschen gezeichnet, und wenn sie auf true wechselt der liegende aus der methode totmensch.
"meingehirnvorüberanstrengungplatzt" frage: wie mach ich das und bitte diesmal kein vorgeschriebener code(ich weiß deine hilfe zu schätzen aber etwas muss ich ja auch nen bissl selber machen), ich brauch bloß ne kleine starthilfe.
ich habs jetzt so versucht
Code:
   public void menschen(Graphics comp)
  {
    if (menschweg = false)
    {
    Graphics2D comp1D = (Graphics2D)comp;
    comp1D.setColor(Color.black);
    GeneralPath ss = new GeneralPath();
    ss.moveTo(25F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(37F,275F);
    ss.lineTo(31F,265F);
    ss.lineTo(31F,255F);
    ss.lineTo(25F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(37F,250F);
    ss.lineTo(31F,255F);
    ss.lineTo(31F,265F);
    ss.lineTo(25F,275F);
    ss.closePath();
    comp1D.draw(ss);
    BasicStroke pen2 = new BasicStroke();
    comp1D.setStroke(pen2);
    Ellipse2D.Float em = new Ellipse2D.Float(27,246,8,8);
    comp1D.fill(em);
    }
  }


  public void totmensch(Graphics comp)
  {
   if (menschweg = true)
   {
    Graphics2D comp2D = (Graphics2D)comp;
    comp2D.setColor(Color.red);
    GeneralPath tt = new GeneralPath();
    tt.moveTo(25F,270F);
    tt.lineTo(38F,270F);
    tt.closePath();
    comp2D.draw(tt);
   }
  }

funzt aber nicht, warum?
 

Marco13

Top Contributor
Es funzt allein schon deswegen nicht, weil das in der Klammer bei
if (menschweg = true)
eine ZUWEISUNG ist, und keine Abfrage. Wenn, dann müßte es
if (menschweg == true)
oder
if (menschweg == false)
heißen - der Fehler kann aber garnicht erst passieren, wenn man einfach
if (menschweg)
oder
if (!menschweg)
schreibt :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Zeichnung verschwindet nach verändern der Fenstergröße. AWT, Swing, JavaFX & SWT 2
B Nach dem Verdecken des Applets ist die Zeichnung weg AWT, Swing, JavaFX & SWT 14
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
A Swing Zeichnung wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 4
X JInternalFrame vor Java2D-Zeichnung langsam bzw. Gui friert ein AWT, Swing, JavaFX & SWT 1
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
M Zeichnung aktualisieren AWT, Swing, JavaFX & SWT 3
F Zeichnung von Kästchen mit Pfeilen... (Strukturdiagramm) AWT, Swing, JavaFX & SWT 3
P Swing Zeichnung auf Tab im Hintergrund wird nicht gezeichnet AWT, Swing, JavaFX & SWT 3
O JPanel Zeichnung verschwindet AWT, Swing, JavaFX & SWT 4
F Zeichnung verschwindet bei Nutzung von einem Layout AWT, Swing, JavaFX & SWT 6
R Swing JTable: Eigene Zeichnung im Header AWT, Swing, JavaFX & SWT 11
T Zeichnen vieler Messwerte --> Zeichnung wird nie fertig AWT, Swing, JavaFX & SWT 4
N eine Zeichnung scrollbar machen AWT, Swing, JavaFX & SWT 4
J Größe einer Zeichnung anpassen AWT, Swing, JavaFX & SWT 2
G SWT Graphics Zeichnung neu laden AWT, Swing, JavaFX & SWT 13
K Zeichnung verschwindet. AWT, Swing, JavaFX & SWT 21
berserkerdq2 Buttons und Shapes sehen ja nach Screengröße klein oder zu groß aus, jemand eine Idee, was man tun kann? AWT, Swing, JavaFX & SWT 1
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
H JavaFX Fenstergröße nach maximieren erkennen AWT, Swing, JavaFX & SWT 6
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
T Elemente auf vorheriger Stage, nach Wechsel der Stage ansprechen AWT, Swing, JavaFX & SWT 32
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
VPChief Nach abspielen von Sound reagiert das Program nichtmehr AWT, Swing, JavaFX & SWT 9
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
K JavaFX Element in HBOX nach rechts verschieben AWT, Swing, JavaFX & SWT 2
S JavaFX Slider freezt nach Benutzung AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
T JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
S Ausgabe aktualisiert sich nur nach 2. Klick AWT, Swing, JavaFX & SWT 17
F JavaFX Zustand der CheckMenuItems behalten nach Programmneustart AWT, Swing, JavaFX & SWT 7
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
stroggi Swing Suche nach Kurveneditor (UI-Element) AWT, Swing, JavaFX & SWT 1
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
L Swing Komponenten erst nach Resize sichtbar AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
MiMa Java, Maven Projekte nach JavaFX? AWT, Swing, JavaFX & SWT 3
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
MiMa Java Projekt nach JavaFX convertieren AWT, Swing, JavaFX & SWT 4
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
L JTextField erscheint erst nach Veränderung der Framegröße AWT, Swing, JavaFX & SWT 5
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
F AWT Robot Klasse Screenshot nach Pixelmustern in bestimmten Radius um Bildschirmmittelpunkt absuchen AWT, Swing, JavaFX & SWT 13
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
D iText PDF wird nach Neustart nicht importiert AWT, Swing, JavaFX & SWT 0
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
N Swing Abfrage durch JTextField nach Button betätigung AWT, Swing, JavaFX & SWT 3
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Linie wird nach Mausklick nicht am richtigen Ort gezeichnet AWT, Swing, JavaFX & SWT 11
C Memory Karten nach Paar offen bleiben sonst wieder umdrehen AWT, Swing, JavaFX & SWT 1
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
M JavaFX Methode nach initialize() aufrufen AWT, Swing, JavaFX & SWT 6
MrSnake Tabelle nach 2 Strings Filtern AWT, Swing, JavaFX & SWT 3
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
T Swing Tabelle mit Button - Anzeigefehler nach Zeile entfernen AWT, Swing, JavaFX & SWT 1
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
KilledByCheese Swing Seltsame Ausgabe nach ButtonClick AWT, Swing, JavaFX & SWT 1
thobren JavaFX textarea nach setPrefRowCount Ansicht aktualisieren AWT, Swing, JavaFX & SWT 1
L Graphik nach 100 ms neu laden AWT, Swing, JavaFX & SWT 1
B Doppelte MenuBar -> Nach Minimieren verschwunden AWT, Swing, JavaFX & SWT 3
W JComboBox auffristen nach Listenänderung AWT, Swing, JavaFX & SWT 20
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
F 2D-Grafik Grafikproblem nach Aufruf von JColorChooser-Dialog AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben