4
respostas

Lógica de Programação. Como melhorar?

Procurei seguir todas as orientações do professor, porém mesmo assim, ainda conseguia errar. Uma dificuldade que encontrei bastante é a lógica de programação, algo que se torna bastante complicado para quem está iniciando. Gostaria de uma indicação de literatura para completar o aprendizado. Obrigado.

*Exercício resolvido. *

//Variaveis da Bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro / 2;

//velocidade da Bolinha let velocidadeXBolinha = 5; let velocidadeYBolinha = 5;**

//variavies da raquete let xRaquete = 5; let yRaquete = 150; let RaqueteComprimento = 10; let RaqueteAltura = 90;

//variaveis do Oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeyOponente;

let colidiu = false;

//placar do jogo let meusPontos = 0; let pontosOponente = 0;

//sons do jogo let raquetada; let ponto; let trilha;

function preload(){ trilha = loadSound("trilha.mp3"); ponto = loadSound("ponto.mp3"); raquetada = loadSound("raquetada.mp3"); }

function setup() { createCanvas(600, 400); trilha.loop(); }

function draw(){ background (0); mostraBolinha(); movimentaBolinha(); verificacolisaoborda(); mostraRaquete(xRaquete, yRaquete); movimentaminhaRaquete(); mostraRaquete(xRaqueteOponente, yRaqueteOponente); //verificacolisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente,yRaqueteOponente); incluiplacar(); marcaPonto(); }

function mostraBolinha(){ circle (xBolinha, yBolinha, diametro); }

function movimentaBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha; }

function verificacolisaoborda(){ if (xBolinha + raio > width || xBolinha - raio < 0) { velocidadeXBolinha *= -1; } if (yBolinha + raio > height || yBolinha - raio < 0) { velocidadeYBolinha *= -1; } }

function mostraRaquete (x, y){ rect(x, y, RaqueteComprimento, RaqueteAltura) }

function movimentaminhaRaquete(){ if (keyIsDown(UP_ARROW)) { yRaquete -= 10; yRaquete -= 10; } if (keyIsDown(DOWN_ARROW)){ yRaquete += 10; yRaquete += 10; } }

function verificacolisaoRaquete(){ if (xBolinha - raio < xRaquete + RaqueteComprimento && yBolinha - raio < yRaquete + RaqueteAltura && yBolinha + raio > yRaquete){ velocidadeXBolinha *= -1; } }

function verificaColisaoRaquete(x, y){ colidiu = collideRectCircle(x, y, RaqueteComprimento, RaqueteAltura, xBolinha, yBolinha, raio); if (colidiu) {velocidadeXBolinha *= -1; raquetada.play();} }

function movimentaRaqueteOponente(){ if (keyIsDown(87)) { yRaqueteOponente -= 10; yRaqueteOponente -= 10; } if (keyIsDown(83)){ yRaqueteOponente += 10; yRaqueteOponente += 10;

} }

function incluiplacar(){ textAlign(CENTER); textSize (16); fill (color (63, 25, 231)); rect (150, 10, 40, 20); fill (255); text (meusPontos, 170, 26); fill (color (63, 25, 231)); rect (450, 10, 40, 20); fill (255); text (pontosOponente, 470, 26); }

function marcaPonto(){ if (xBolinha > 590){ meusPontos += 1; ponto.play(); }

if (xBolinha < 10){ pontosOponente += 1; ponto.play(); } }

4 respostas

Olá, Marcelo, sim, a lógica de programação realmente é um ponto crucial e para quem está começando, como nós, ela às vezes pesa um pouco.

Vou compartilhar com você duas coisas que têm me ajudado bastante:

A primeira é procurar fazer esquemas e ilustrações de tudo o que tenho dificuldade de compreender.

Exemplo: para entender esse bloco de código:

function verificaColisaoRaquete() {
    if (xBolinha - raio < xRaquete + raqueteComprimento
        && yBolinha - raio < yRaquete + raqueteAltura
        && yBolinha + raio > yRaquete) {
        velocidadeXBolinha *= -1;
    }
}

Eu peguei um trecho dele:

yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete

E fiz uma ilustração, para conseguir visualizar melhor:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Outro exemplo, com outro bloco de código:

function mostraCarro(){
    for   (let i = 0;    i < imagemCarros.length;    i = i + 1)   {
          image   (imagemCarros[i],    xCarros[i],    yCarros[i],    50,    40);
    }
}

Eu fiz esta tabela para entender melhor o laço de repetição:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Sobre material de apoio para os estudos, eu compartilho aqui a coleção "Head First". Ela tem vários títulos como lógica, javascript e inúmeros outros. As versões em inglês (infelizmente) podem ser baixadas gratuitamente pela internet (pdfdrive.com). Existe a versão em português "Use a cabeça" dessa mesma coleção, mas tive dificuldade de encontrar para baixar gratuitamente. Eu gosto bastante, pois são bem didáticos. Mas existe muita coisa boa na internet em português, não só livros, mas sites também.

Espero ter ajudado. Desejo que tua jornada pelo mundo da tecnologia seja prazerosa e muito produtiva. Bons estudos!

Obrigado pelas dicas e pelo material. Esses esquemas visuais, de fato, são bons. Também sou bastante visual, só consigo estudar se estiver rabiscando esquemas e gráficos. Vou procurar esta coleção e dar uma lida.

Olá, Marcelo, trago mais uma indicação que tive nesta semana para aprender lógica de programação:

Portugol Studio - desenvolvido e mantido pelo Laboratório de Inovação Tecnológica na Educação da UNIVALI

http://lite.acad.univali.br/portugol/

Bons estudos! :)

Olá Mundo! Olá Leila Müller, Obrigado pela super dica. Achei bem didática a explicação do professor. Já me escrevi no curso e assisti algumas aulas. Sei que no começo é difícil e esses incentivos ajudam bastante. Valeu mesmo!