/*
 * ThreadPrincipal.java
 *
 * Created on 28 de Agosto de 2006, 10:23
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package usathreads;

/**
 *
 * @author root
 */
public class ThreadPrincipal extends Thread{
    
    /** Declaração das variáveis */
    private int Matriz[][];
    private int X=0, Y=0, NumX=0, NumY=0;
    private boolean Pronto=false;
    private int Cont=0;
    
    /** Uso interno para setar o estado do processo*/
    private void setPronto(boolean Estado){Pronto = Estado;}
    
    /** Uso externo para pegar o estado do processo*/
    public boolean getPronto(){return Pronto;}
    
    /** Construtor de passagem de parametros da classe principal */
    public ThreadPrincipal(int X, int Y, int NumX, int NumY, int Matriz[][]){
        this.Matriz=Matriz;
        this.X=X;
        this.Y=Y;
        this.NumX=NumX;
        this.NumY=NumY;
    }
    
    /** Executa o processo */
    public void run(){
        setPronto(false);
        Cont=0;
        for(int i=X; i<X+NumX; i++){
            for(int n=Y; n<Y+NumY; n++){
                if(Matriz[i][n]!=0){
                    Cont=Cont+Matriz[i][n];
                    try{
                        sleep(1);
                    }catch(Exception e){}
                }
                
            }
        }
        setPronto(true);
    }
    
    /** Retorna o valor atual ou final do processo */
    public int getValor(){return Cont;}
    
}
