Premetto che sono ignorantissimo, è il primo anno che studiamo java a scuola ma si va molto lentamente e ho fatto veramente poco per il momento. Da qualche settimana abbiamo iniziato la "grafica" in java, ovvero la creazione di qualche disegnino tipo una macchina o una palla, con l'ausilio del java.awt
Abbiamo iniziato ad utilizzare anche i thread, così vorrei creare in java un omino che si muove con il loro ausilio, ma riesco a farne partire solo uno.
Il mio progetto è composto da un file main, una classe contenente l'omino intero e la possibilità di farlo muovere, e altri quattro file rispettivamente per il braccio destro, quello sinistro, la gamba destra e la rispettiva sinistra.
Ho creato, inizialmente, un file main con questo codice:
Ed ecco la classe Uomo che contiene il disegno:import java.awt.*;
public class Main
{
public static void main(String[] args)
{
Frame f = new Frame("Omino che cammina");
f.setSize(800,500);
f.setLocation(200,200);
Uomo u = new Uomo();
f.add(u);
f.setVisible(true);
Thread t = new Thread(u);
t.start();
}
}
Gli altri quattro file sono molto simili tra loro, ho preso solo la parte del corpo interessata per farla muovere:import java.awt.*;
public class Uomo extends Canvas implements Runnable
{
int i = 0;
int y=0;
public void paint(Graphics g)
{
// Colora la finestra di dimensioni 800*500 di bianco
g.setColor(Color.white);
g.fillRect(0,0,800,500);
// Creazione dell'omino:
g.setColor(Color.BLACK);
g.drawOval(100+i,100,50,50); // Testa
g.drawLine(125+i,150,125+i,170); // Collo
g.drawRect(105+i,170,40,80); // Busto
g.drawLine(105+i,170,80+i,250); // Braccio visuale sinistra
g.drawLine(145+i,170,170+i,250); // Braccio visuale destra
g.drawLine(110+i,250,100+i,330); // Gamba visuale sinistra
g.drawLine(100+i,330,110+i,330); // Piede visuale sinistra
g.drawLine(140+i,250,140+i,330); // Gamba visuale destra
g.drawLine(140+i,330,150+i,330); // Piede visuale destra
}
public void run()
{
for(i=0;i<=715;i+=15)
{
repaint();
try
{
Thread.sleep(100);
}catch(Exception e)
{
System.out.println("Cattura Eccezione");
}
}
}
}
Non avendo mai avuto davanti più thread a scuola ho provato con l'aggiungere al file main la seguente stringa ad esempio per far muovere il braccio sinistro:import java.awt.*;
public class BraccioSinistro extends Canvas implements Runnable
{
int i = 0;
public void paint(Graphics g)
{
// Colora la finestra di dimensioni 800*500 di bianco
g.setColor(Color.white);
g.fillRect(0,0,800,500);
// Mobilità del braccio di sinistra:
g.drawLine(1005,170,80+i,250); // Braccio visuale sinistra
}
public void run()
{
for(i=0;i<=100;i+=15)
{
repaint();
try
{
Thread.sleep(100);
}catch(Exception e)
{
System.out.println("Cattura Eccezione");
}
}
}
}
Facendo partire il main funge solo il thread t e del t1 non v'è traccia, quasi sicuramente non era questo il procedimento corretto per avere più thread, dunque vi chiedo gentilmente di illuminarmi (rimanendo sempre ad un livello bassissimo perchè altrimenti non capireiBraccioSinistro bs = new BraccioSinistro();
f.add(bs);
f.setVisible(true);
Thread t1 = new Thread(bs);
t1.start();) e spiegarmi cosa devo fare per far muovere contemporaneamente l'omino orizzontalmente e le sue braccia/gambe.
Grazie![]()

) e spiegarmi cosa devo fare per far muovere contemporaneamente l'omino orizzontalmente e le sue braccia/gambe.
Rispondi quotando