I'm trying to draw infinite rectangles on my canvas from a distance, but I can not. It starts well but in the second loop or the rectangle is the size of the screen or they disappear. I wanted three rectangles to appear in each loop.
public class Obstaculos {
private Tela tela;
private static int QUANTIDADE_INIMIGOS = 5;
private static int DISTANCIA_INIMIGOS = 200;
private static int DISTANCIA_INIMIGOS_HORIZONTAL=100;
private Context context;
private List<Obstaculo> obstaculos = new ArrayList<Obstaculo>();
public Obstaculos(Context contex, Tela tela) {
this.context=contex;
this.tela = tela;
int inimigoEsquerda=00;
int inimigoBaixoDireita=75;
for (int i = 0; i < QUANTIDADE_INIMIGOS; i++) {
inimigoEsquerda += DISTANCIA_INIMIGOS;
inimigoBaixoDireita += DISTANCIA_INIMIGOS;
this.obstaculos.add(new Obstaculo(context,tela, inimigoEsquerda,inimigoBaixoDireita));
}
}
public void desenhaObstaculosNo(Canvas canvas){
for(Obstaculo obstaculo: this.obstaculos){
obstaculo.desenhaObstaculoNo(canvas);
}
}
private int maiorPosicaoBaixoDireita(){
int maximoBD=0;
for(Obstaculo obstaculo: this.obstaculos){
maximoBD= Math.max(obstaculo.getInimigoBaixoDireita(),maximoBD);
}
return maximoBD;
}
private int maiorPosicaoDireita(){
int maximoD=0;
for(Obstaculo obstaculo: this.obstaculos){
maximoD= Math.max(obstaculo.getInimigoDireita(),maximoD);
}
return maximoD;
}
private int maiorPosicaoBaixoEsquerda(){
int maximoBE=0;
for(Obstaculo obstaculo: this.obstaculos){
maximoBE= Math.max(obstaculo.getInimigoBaixoEsquerda(),maximoBE);
}
return maximoBE;
}
private int maiorPosicaoEsquerda(){
int maximoE=0;
for(Obstaculo obstaculo: this.obstaculos){
maximoE= Math.max(obstaculo.getInimigoEsquerda(),maximoE);
}
return maximoE;
}
public void move(){
ListIterator<Obstaculo> iterator= this.obstaculos.listIterator();
while(iterator.hasNext()){
Obstaculo obstaculo= (Obstaculo) iterator.next();
obstaculo.move();
if(obstaculo.saiuDaTela()){
iterator.remove();
Obstaculo outroObstaculo= new Obstaculo(this.context,this.tela,maiorPosicaoEsquerda()-maiorPosicaoBaixoDireita(),maiorPosicaoBaixoEsquerda()-maiorPosicaoBaixoDireita());
iterator.add(outroObstaculo);
}
}
}
}
public class Obstaculo {
private int inimigoDireita;
private int inimigoEsquerda;
private int inimigoBaixoDireita;
private int inimigoBaixoEsquerda;
private static Paint VERDE= Cores.getCorObstaculo();
private Tela tela;
private Context context;
public Obstaculo(Context context,Tela tela, int inimigoEsquerda, int inimigoBaixoDireita){
this.context=context;
this.tela=tela;
this.inimigoDireita=450;
this.inimigoBaixoEsquerda=350;
this.inimigoEsquerda=inimigoEsquerda;
this.inimigoBaixoDireita=inimigoBaixoDireita;
}
public void move(){
this.inimigoDireita-=3;
this.inimigoBaixoEsquerda-=3;
}
public void desenhaObstaculoNo(Canvas canvas){
canvas.drawRect(this.inimigoDireita,this.inimigoEsquerda,this.inimigoBaixoEsquerda,this.inimigoBaixoDireita,VERDE);
}
public int getInimigoBaixoEsquerda(){
return this.inimigoBaixoEsquerda;
}
public int getInimigoEsquerda(){
return this.inimigoEsquerda;
}
public int getInimigoDireita(){
return this.inimigoDireita;
}
public int getInimigoBaixoDireita(){
return this.inimigoBaixoDireita;
}
public boolean saiuDaTela(){
return inimigoDireita+inimigoBaixoEsquerda<0;
}
}