CursosEmpresasBlogLiveConfPrecios

¿Qué es un array bidimensional?

Clase 5 de 24 • Taller Práctico de JavaScript: ¡Crea tu Primer Videojuego!

Clase anteriorSiguiente clase

Contenido del curso

Introducción
  • 1
    Programemos un juego con JavaScript

    Programemos un juego con JavaScript

    17:13
Canvas
  • 2
    ¿Qué es canvas en JavaScript?

    ¿Qué es canvas en JavaScript?

    18:37
  • 3
    Tamaño del canvas y sus elementos

    Tamaño del canvas y sus elementos

    17:37
  • 4
    Canvas responsive

    Canvas responsive

    12:37
Mapa del juego
  • 5
    ¿Qué es un array bidimensional?

    ¿Qué es un array bidimensional?

    05:48
  • 6
    Arreglos multidimensionales en JavaScript

    Arreglos multidimensionales en JavaScript

    23:38
  • 7
    Refactor del mapa de juego

    Refactor del mapa de juego

    20:48
Movimientos del jugador
  • 8
    Eventos y botones

    Eventos y botones

    14:14
  • 9
    Objeto playerPosition

    Objeto playerPosition

    11:34
  • 10
    Limpieza de movimientos

    Limpieza de movimientos

    09:53
  • 11
    No te salgas del mapa

    No te salgas del mapa

    11:15
Colisiones
  • 12
    Detectando colisiones fijas

    Detectando colisiones fijas

    13:29
  • 13
    Detectando colisiones con arrays

    Detectando colisiones con arrays

    14:11
  • 14
    Victoria: subiendo de nivel

    Victoria: subiendo de nivel

    07:50
  • 15
    Derrota: perdiendo vidas

    Derrota: perdiendo vidas

    11:45
Bonus: adictividad
  • 16
    Sistema de vidas y corazones

    Sistema de vidas y corazones

    13:02
  • 17
    Sistema de tiempo y puntajes

    Sistema de tiempo y puntajes

    19:30
  • 18
    ¿Qué es localStorage?

    ¿Qué es localStorage?

    07:33
  • 19
    Guardando records del jugador

    Guardando records del jugador

    18:35
Deploy
  • 20
    Depurando errores del juego

    Depurando errores del juego

    23:16
  • 21
    Desplegando el juego a GitHub Pages

    Desplegando el juego a GitHub Pages

    07:39
Próximos pasos
  • 22
    Reto: reinicio del juego

    Reto: reinicio del juego

    03:36
  • 23
    Reto: timeouts de victoria o derrota

    Reto: timeouts de victoria o derrota

    04:14
  • 24
    ¿Quieres un simulador laboral?

    ¿Quieres un simulador laboral?

    06:53
    Juan Pablo Soto Velasco

    Juan Pablo Soto Velasco

    student•
    hace 3 años

    Comparto mi solución al reto 😄:

    for_1_tll_js.PNG

      Aaron Carhuaricra

      Aaron Carhuaricra

      student•
      hace 2 años

      Yo lo hice parecido pero el (+5) lo vincule al (element size) para que responda con cualquier tamaño, saludos

      for(let i = 1; i <= 10; i++) { for(let j = 1; j <= 10; j++) { game.fillText(emojis['X'], (elementsSize * i) + (elementsSize / 5), (elementsSize *j)-(elementsSize / 5)); } }
    Miguel Torres Cerna

    Miguel Torres Cerna

    student•
    hace 3 años

    genial , me gusta mucho su enseñanza.

      Josue Cerron Tuesta

      Josue Cerron Tuesta

      student•
      hace 3 años

      Muy buen curso!

      Beder Danilo Casa Condori

      Beder Danilo Casa Condori

      student•
      hace un año

      es muy bueno en lo que hace

    Manuel Araujo

    Manuel Araujo

    student•
    hace 3 años
    for(j=1; j<=10; j++) { for(i=1; i <= 10; i++) { game.fillText(emojis['X'], elementsSize*i, elementsSize*j); } }
    Julia Gabriela Nieva Paredes

    Julia Gabriela Nieva Paredes

    student•
    hace 3 años

    Mi solución: [](

    code.png

    Laura Muñoz

    Laura Muñoz

    student•
    hace 3 años

    RETO:

    for(let i = 1; i <= 10; i++){ for(let j = 1; j <= 10; j++){ game.fillText(emojis['X'], elementsSize * i , elementsSize * j); } }
    Gualberto Montiel

    Gualberto Montiel

    student•
    hace 3 años

    Asi quedo mi codigo:

    JSGame2.png
    Andrés Toledo Margalef

    Andrés Toledo Margalef

    student•
    hace 3 años

    Yo lo arme asi, porque me molestaba como se salia la Bombita (Rodriguez ;) ;) ) del canvas

    function startGame() { game.font = (elementsSize - 8) + "px Helvetica"; console.log(game.font) game.textAlign = "left"; for (let i = 1; i <= 10; i++) { for(let f = 0; f < 10; f++) { game.fillText(emojis["X"], elementsSize * f, elementsSize * i - 10); } } }
    Darvin Emil Rodriguez Nuñez

    Darvin Emil Rodriguez Nuñez

    student•
    hace 3 años
    Screenshot_20230105_055021.png

    me sale mal esto, no entendo por que?

      Juan Castro

      Juan Castro

      teacher•
      hace 3 años

      Recuerda que puedes revisar propiedades como el textAlign: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textAlign

    JORGE MANRIQUE CHAVARRO

    JORGE MANRIQUE CHAVARRO

    student•
    hace 2 años

    Comparto mi solución.

    for (let x = 1; x <= 10; x++) { for (let y = 1; y <= 10; y++) { game.fillText(emojis['X'], elementSize * x, elementSize * y); } }
    Santiago Montero

    Santiago Montero

    student•
    hace 2 años

    Solucion del Reto <3

    function starGame() { game.font = elementSize + "px Verdana"; game.textAlign = "end"; for (let i = 1; i <= 10; i++) { for (let z = 1; z <= 10; z++) { game.fillText(emojis["X"], elementSize * i, elementSize * z); } } }
    Miguel Negron Garcia

    Miguel Negron Garcia

    student•
    hace 2 años

    Esta es una solucion que vi en clases pasadas y que trate de replicarla:

    (

    bombas.png

    Elío Diez

    Elío Diez

    student•
    hace 3 años

    Mi solución:

    for (let i=1; i<=10; i++){ for (let h=1; h<=10; h++){ game.fillText(emojis['X'], elementSize*h, elementSize*i); }; };
    Alexander Palazuelos

    Alexander Palazuelos

    student•
    hace 3 años

    Mi solución:

    for(let i=1; i<=10; i++){ for (let j = 1; j <= 10; j++) { game.fillText(emojis['X'], elementsSize * j, elementsSize * i); } }
    Cristian Zapata

    Cristian Zapata

    student•
    hace 3 años

    Solución corta utilizando un ciclo while y creando una nueva variable.

    let columnNumber = 1; while (columnNumber < 11){ for (let i = 1; i < 11; i++) { game.fillText(emojis['X'], columnNumber*elementsSize , elementsSize * i) ; } columnNumber ++; }
    Victor Hugo Cruz Carballo

    Victor Hugo Cruz Carballo

    student•
    hace 3 años
    function startGame(){ game.font = elemtSize + 'px Verdana'; game.textAlign = 'end'; // for (let i = 1; i <= 10; i++) { // game.fillText(emojis['X'], elemtSize*i+4, elemtSize-10); // } const map = maps[0]; const mapRow = map.trim().split('\n'); const mapRowCol = mapRow.map(row => row.trim().split('')); console.log({mapRowCol}) for (let x = 1; x <= 10; x++) { console.group(x) for (let y = 1; y <= 10; y++) { game.fillText(emojis[mapRowCol[y-1][x-1]],elemtSize*x,elemtSize*y-10); console.log('fila' + x) console.log('columna' + y) } console.groupEnd() } }
    Screenshot from 2022-10-30 23-00-09.png
    Axel Enrique Galeed Gutierrez

    Axel Enrique Galeed Gutierrez

    student•
    hace 3 años

    Les comparto mi solución al reto, les estaré dejando tanto el código como el resultado final. :D

    Repositorio de GitHub.

    carbon (1).png

    Código

    import { EMOJIS } from './maps.js'; const startGame = (fontSize, elementSize) => { GAME.font = `${fontSize}px sans-serif`; GAME.textAlign = 'left'; let yPositionEmoji = elementSize; let yCounterPositionEmoji = 1; let xCounterPositionEmoji = 0; for (let i = 0; i < 100; i++) { if (i % 10 === 0 && i !== 0) { yCounterPositionEmoji++; yPositionEmoji = elementSize * yCounterPositionEmoji; xCounterPositionEmoji = 0; } const X = elementSize * xCounterPositionEmoji * 1.015; const Y = yPositionEmoji * 0.98; GAME.fillText(EMOJIS['X'], X, Y); xCounterPositionEmoji++; } }; const setCanvasSize = () => { const WIDTH_WINDOWS = window.innerWidth; const HEIGHT_WINDOWS = window.innerHeight; const IS_SMALLER_HEIGHT = WIDTH_WINDOWS < HEIGHT_WINDOWS && WIDTH_WINDOWS < 550; const WIDTH_BASE = window.innerWidth * 0.9; const HEIGHT_BASE = window.innerHeight * 0.6; const SIDE_CANVAS = (IS_SMALLER_HEIGHT) ? (WIDTH_BASE).toString() : (HEIGHT_BASE).toString(); CANVAS.setAttribute('width', SIDE_CANVAS); CANVAS.setAttribute('height', SIDE_CANVAS); const ELEMENT_SIZE = Number(SIDE_CANVAS) / 10.25; const FONT_SIZE = ELEMENT_SIZE * 0.82; startGame(FONT_SIZE, ELEMENT_SIZE); }; const CANVAS = document.querySelector('#main__game-container-id'); const GAME = CANVAS.getContext('2d'); window.addEventListener('load', setCanvasSize); window.addEventListener('resize', setCanvasSize);

    Resultado

    Captura de pantalla 2022-10-27 021354.png
    Jhon Eduard Bocanegra Ortiz

    Jhon Eduard Bocanegra Ortiz

    student•
    hace 3 años

    Asi quedo:

    code.png

    Javier Núñez

    Javier Núñez

    student•
    hace 3 años

    Comparto la solución del reto, o una soloción:

    for (let j = 1; j <= 10; j++){ for (let i = 1; i <= 10; i++){ game.fillText(emojis['X'], elementsSize * i, elementsSize * j); } }
    Luis Angel Santillan

    Luis Angel Santillan

    student•
    hace 3 años

    Lo resolvi de la siguiente manera.

    code.png

    Y aqui el resultado...

    Bom.PNG

    Por alguna razon le etoy sumando 22 a mi eje y* por que no entra dentro del canva si alguien me pudiera ayudar a resolver eso, Gracias!!!

    JeanCarlos Atoche Pascual

    JeanCarlos Atoche Pascual

    student•
    hace 3 años

    Hice el Reto usando el mapa, sin ver las siguientes clases, de momento, solo reenderize el primer mapa, no se que venga mas adelante xD

    Captura de pantalla 2022-09-10 200412.png

    const startGame = () => { game.font = elementsSize + 'px Verdana'; game.textAlign = 'start'; game.textBaseline = 'top'; let newMaps = maps[0]; newMaps = newMaps.trim().split('\n') newMaps = newMaps.map(element => element.trim()); newMaps = newMaps.map(element => [...element]) for (let i = 0; i < newMaps.length; i++) { for (let j = 0; j < newMaps.length; j++) { game.fillText(emojis[newMaps[i][j]], elementsSize * j, elementsSize * i) } } };

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads