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