Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

5. Mão na massa começando com o jogo da Forca - seguimento de RETA

REPETI O EXERCICIO E MESMO ASSIM NÃO FEZ O SEGUIMENTO DE RETA IMAGINEI QUE O DESENHO DA GRID - ESTA SOBREPONDO O SEGUIMENTO DE RETA QUE VAI DO PONTO

  • DESENHO DA GRID 10 LINHAS (alias 11) por 10 COLUNAS (11 linhas de coluna)

ONDE ESTA O ERRO ???

```

package br.com.forca.jogos.jogodaforca;

import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet;

/** * Created by fabio on 21/01/2016. */ public class ForcaView extends PlanoCartesianoView {

private Path pathForca;  // responsavel por desenhar TODAS AS FIGURAS GEOMETRICAS
private Paint paintForca;

public ForcaView(Context context) {
    super(context);
}

public ForcaView(Context context, AttributeSet attrs) {
    super(context, attrs);

    setPathForca(new Path()); /* criando uma Instancia de Path() */
    /* passando como parãmetro para o método setPathForca(new Path()) */

}


@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    getPathForca().moveTo(toPixel(2), toPixel(2));
    getPathForca().lineTo(toPixel(8), toPixel(2));

    canvas.drawPath(getPathForca(), getPaintForca());

}

public Path getPathForca() {
    return pathForca;
}

public void setPathForca(Path pathForca) {
    this.pathForca = pathForca;
}

public Paint getPaintForca() {

    this.paintForca = new Paint(); /* 1a Etapa - Inicializa a variavel "paintForca" */


    this.paintForca.setColor(Color.BLUE);
    this.paintForca.setStyle(Paint.Style.STROKE);
    this.paintForca.setStrokeWidth(8);

    return this.paintForca;
}

}

```

O MAIN XML

``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Main">

<br.com.forca.jogos.jogodaforca.ForcaView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

```

E POR FIM O PLANO CARTESINO

```

package br.com.forca.jogos.jogodaforca;

import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.view.View;

/** * Created by fabio on 21/01/2016. */ public class PlanoCartesianoView extends View {

/* GUARDA A REFERÊNCIA DO MENOR LADO DO DISPLAY,
SE O MENOR FOR O VERTICAL, então vai ATRIBUIR A INFORMAÇÃO DA VERTICAL
SE O MENOR LADO FOR O HORIZONTAL, então vai ATRIBUIR o valor correspondente HORIZONTAL
 */
private int menorLadoDisplay;
private int unidade; /* receberá o valor do lado do DISPLAY menor, dividido por 10 */

/* Unidade, porque estamos trabalhando com PROPORÇÕES esta é a ideia
ou seja, unidades proporcionais da tela, quando tentar desenhar.
 */

/* --------------------------------------------------- gets e Seters */ public int getUnidade() { return unidade; }

public void setUnidade(int unidade) {
    this.unidade = unidade;
}

public int getMenorLadoDisplay() {
    return menorLadoDisplay;
}

public void setMenorLadoDisplay(int menorLadoDisplay) {
    this.menorLadoDisplay = menorLadoDisplay;
}

/* --------------------------------------------------- gets e Seters */

public PlanoCartesianoView(Context context) {
    super(context);
}

public PlanoCartesianoView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    int Largura = getWidth(); /* em relação ao DISPLAY */
    int altura = getHeight(); // DO RESPECTIVO DISPOSITIVO

    if (Largura < altura) {
        setMenorLadoDisplay(Largura);
    } else {
        setMenorLadoDisplay(altura);
    }

    setUnidade(getMenorLadoDisplay() / 10);

    drawPlanocartesiano(canvas);

}


public void drawPlanocartesiano(Canvas canvas){

    Path path = new Path();
    /* a ideia é definir
    todos os caminhos que desejamos desenhar, uma LINHA, RETANGULO, UM CIRCULO
    SEJA O QUE FOR... (TUDO QUE DESEJAMOS DESENHAR ESTARÁ NO "path"
     */

    int max = toPixel(10);
    for (int n=0;n<=10;n++){
        //desenhando as LINHAS VERTICAIS
        path.moveTo(toPixel(n),1);
        path.lineTo(toPixel(n),max);
        //desenhando as LINHAS HORIZONTAIS
        path.moveTo(1,toPixel(n));
        path.lineTo(max,toPixel(n));

    }

    Paint paint = new Paint();


    paint.setAntiAlias(true); // determina a suavidade das linhas
    paint.setColor(Color.BLACK);
    paint.setStyle(Paint.Style.STROKE); // sem preenchimento INTERNO (DO DEZENHO) apenas bordas
    paint.setStrokeWidth(1); // a espesura fina das linhas...

    canvas.drawPath(path, paint);

}

public int toPixel(int vlrPixelPoint) {
    return vlrPixelPoint * getUnidade();
}

}

```

CABE LEMBRAR QUE ESTA PINTANDO A GRIDE

PORÉM O SEGUIMENTO DE RETA COMO DEMONSTRA:

   A  VIDEO AULA - " 4 "

DO MODULO:

"   5. Mão na massa começando com o jogo da Forca   "

A PERGUNTA ALGUÉM PODE AJUDAR A DESCOBRIR O ERRO ?

Desde já agradecido pela atenção de todos.

[]s Fábio Bugarin

2 respostas
solução!

Consegui resolver o problema!

Agora consigo desenhar os traço a MOLDURA DA FORCA, O BONECO, ou seja a cabeça, os braçoes etc...

Vou seguir em frente e realizar outras tarefas no código

Estou com o mesmo problema, como resolveste?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software