Para praticar, resolvi dividir o programa em outras funções, e criei variáveis para que fique fácil ao usuário mudar o tamanho dos quadrados, além de inserir outros valores desejados para a fração a ser exibida na tela. Claro, há muito o que melhorar... mas eu comecei a gastar muito tempo nesse programa, e achei melhor ir para as próximas aulas. rsrs
<canvas width="600" height="400"></canvas>
<script>
//Digite a quantidade de quadrados cheios
var fracaoCheia = 3;
//Digite a quantidade de quadrados vazios
var fracaoVazia = 1;
//Digite o tamanho das laterais do quadrado;
var tamanhoQuadrado = 50;
//Digite a cor do quadrado cheio;
var corQuadradoCheio = "green";
//Digite a cor do quadrado vazio;
var corQuadradoVazio = "white";
var tela = document.querySelector('canvas');
var pincel = tela.getContext('2d');
pincel.fillStyle = 'lightgray';
pincel.fillRect(0, 0, 600, 400);
function desenhaQuadrado(x,y,tamanho,cor) {
pincel.fillStyle = cor;
pincel.fillRect(x,y,tamanho,tamanho);
pincel.filllStroke = "black";
pincel.strokeRect(x,y,tamanho,tamanho);
}
var xi = (600 - ((fracaoCheia + fracaoVazia) * tamanhoQuadrado)) / 2;
var yi = (400 - tamanhoQuadrado) / 2;
function desenhaFracao() {
desenhafracaoCheia(fracaoCheia);
desenhaFracaoVazia(fracaoVazia);
}
function desenhafracaoCheia(quantidadeQuadradosCheios) {
for (var quadradosCheiosDesenhados = 0; quadradosCheiosDesenhados < quantidadeQuadradosCheios; quadradosCheiosDesenhados++) {
var posicaoFinal = quadradosCheiosDesenhados * tamanhoQuadrado;
desenhaQuadrado(xi + posicaoFinal,yi,tamanhoQuadrado,corQuadradoCheio);
}
}
function desenhaFracaoVazia(quantidadeQuadradosVazios) {
for (var quadradosVaziosDesenhados = 0; quadradosVaziosDesenhados < quantidadeQuadradosVazios; quadradosVaziosDesenhados++) {
posicaoFinal = fracaoCheia * tamanhoQuadrado + quadradosVaziosDesenhados * tamanhoQuadrado;
desenhaQuadrado(xi + posicaoFinal,yi,tamanhoQuadrado,corQuadradoVazio)
}
}
desenhaFracao();
</script>