Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto] Ejercicio: "tiro al blanco"

Dejo por acá la versión realizada para esta práctica:

<canvas width="600" height="400"></canvas>

<script>

    const d = document

    var $canvas = d.querySelector("canvas")
    var brush = $canvas.getContext("2d")

    let canvasW = $canvas.getAttribute("width")
    let canvasH = $canvas.getAttribute("height")

    brush.fillStyle = "lightgray"
    brush.fillRect(0, 0, canvasW, canvasH)

    function drawCircle(xPoint, yPoint, radius, fill) {
        let fullAngle = 2 * Math.PI
        brush.fillStyle = fill
        brush.beginPath()
        brush.arc(xPoint, yPoint, radius, 0, fullAngle)
        brush.fill()
    }

    function getRandom(maxMeasure, maxRadius) {
        random = Math.round(Math.random() * maxMeasure)
        if(random < maxRadius) {
            random = random + (maxRadius - random)
            return random
        } else if(random > (maxMeasure - maxRadius)) {
            random = random - (random - (maxMeasure - maxRadius))
            return random
        } return random
    }

    function cleanCanvas() {
        brush.clearRect(0, 0, canvasW, canvasH)
    }

    function drawRandomTarget() {
        cleanCanvas()
        brush.fillStyle = "lightgray"
        brush.fillRect(0 , 0, canvasW, canvasH)

        xRandom = getRandom(canvasW, maxRadius)
        yRandom = getRandom(canvasH, maxRadius)

        drawCircle(xRandom, yRandom, maxRadius, "red")
        drawCircle(xRandom, yRandom, middleRadius, "white")
        drawCircle(xRandom, yRandom, smallRadius, "red")
    }

    let maxRadius = 30
    let middleRadius = maxRadius - 10
    let smallRadius = maxRadius - 20
    let xRandom
    let yRandom

    setInterval(drawRandomTarget, 1000)

    $canvas.addEventListener("click", (e) => {
        let xClick = e.offsetX
        let yClick = e.offsetY

        let maxLeftX = xRandom - smallRadius
        let maxRightX = xRandom + smallRadius
        let maxTopY = yRandom - smallRadius
        let maxBottomY = yRandom + smallRadius

        if((xClick < maxRightX) && (xClick > maxLeftX) && (yClick < maxBottomY) && (yClick > maxTopY)) {
                alert("¡¡¡Haz dado en el blanco!!!")
             }
    })

</script>
1 respuesta

Hola Israel, espero que estés bien.

Me alegro de que estés disfrutando del curso y de que hayas estado resolviendo y practicando lo que aprendiste. Es importante trabajar y aplicar lo que se está aprendiendo para poder progresar y adquirir nuevas habilidades. También es valioso dejar evidencia de tu trabajo y compartir tus dudas y preguntas con el resto del grupo de alumnos, ya que esto puede ayudar a aclarar conceptos y mejorar tu comprensión del material. ¡Sigue adelante y sigue disfrutando del curso! Estoy seguro de que continuarás haciendo grandes progresos.

Te recomiendo que compartas la solución de tus ejercicios en nuestro servidor de Discord, allí tenemos un canal exclusivo para eso (#compartatucodigo). Allá podrás tener más interacciones con otros Alumnos, Instructores y la comunidad en general.

Si tienes alguna duda, no dejes de preguntar. ¡Estamos aquí para ayudarte!.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios