Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Beginner Web en 21 Mayo 2020, 08:36 am



Título: adaptar codigo html a angular
Publicado por: Beginner Web en 21 Mayo 2020, 08:36 am
como puedo adaptar este fragmento de codigo para ser usado en angular??

Código
  1. <div id="div_palabra"></div>
  2.  
  3.  let activo
  4.  dibujarPalabra('RAT')
  5.  capturaTeclado()
  6.  
  7.  function dibujarPalabra(palabra) {
  8.    const div = document.getElementById('div_palabra')
  9.    for (let i = 0; i < palabra.length; i++) {
  10.      const btn = document.createElement('button')
  11.      btn.addEventListener('click', (e) => activo = e.target)
  12.      const txt = document.createTextNode('_')
  13.      btn.appendChild(txt)
  14.      div.appendChild(btn)
  15.    }
  16.  }
  17.  
  18.  function capturaTeclado() {
  19.    document.addEventListener('keyup', (e) => {
  20.      if (activo && e.keyCode > 64 && e.keyCode < 90) {
  21.        activo.innerText = e.key
  22.      }
  23.    })
  24.  }
  25. </script>


Título: Re: adaptar codigo html a angular
Publicado por: EdePC en 22 Mayo 2020, 01:47 am
- Copiando y pegando el código en el src/index.html debería de funcionar correctamente XD. Pero si quieres integrarlo como un componente tienes que agregar uno como tal y/o editar uno ya existente.

- En otro Post leí que estabas mencionando algo de Routing, entonces supongo que quieres agregar un Componente para registrarlo en el Módulo routing.module.ts.

- Primero agrega el Componente que en mi caso llamaré juego,

Código
  1. ng generate component juego

- Luego ve a tu Módulo routing.module.ts que en mi caso es app-routing.module.ts y agrega la ruta, que en mi caso terminaría todo así:

Código
  1. import { NgModule } from '@angular/core';
  2. import { Routes, RouterModule } from '@angular/router';
  3. import { JuegoComponent } from './juego/juego.component';
  4.  
  5. const routes: Routes = [
  6.  {
  7.    path: 'app-juego',
  8.    component: JuegoComponent
  9.  }
  10. ];
  11.  
  12. @NgModule({
  13.  imports: [RouterModule.forRoot(routes)],
  14.  exports: [RouterModule]
  15. })
  16. export class AppRoutingModule { }
  17.  

- El juego.component.html terminaría así:

Código
  1. <div id="div_palabra"></div>

- Y el juego.component.ts así:

Código
  1. import { Component, OnInit } from '@angular/core';
  2.  
  3. @Component({
  4.  selector: 'app-juego',
  5.  templateUrl: './juego.component.html',
  6.  styleUrls: ['./juego.component.css']
  7. })
  8. export class JuegoComponent implements OnInit {
  9.  
  10.  activo: any
  11.  
  12.  constructor() { }
  13.  
  14.  ngOnInit(): void {
  15.    this.dibujarPalabra('RAT')
  16.    this.capturaTeclado()
  17.  }
  18.  
  19.  dibujarPalabra(palabra: string): void {
  20.    const div = document.getElementById('div_palabra')
  21.    for (let i = 0; i < palabra.length; i++) {
  22.      const btn = document.createElement('button')
  23.      btn.addEventListener('click', (e) => this.activo = e.target)
  24.      const txt = document.createTextNode('_')
  25.      btn.appendChild(txt)
  26.      div.appendChild(btn)
  27.    }
  28.  }
  29.  
  30.  capturaTeclado(): void {
  31.    document.addEventListener('keyup', (e) => {
  32.      if (this.activo && e.keyCode > 64 && e.keyCode < 90) {
  33.        this.activo.innerText = e.key
  34.      }
  35.    })
  36.  }
  37.  
  38. }
  39.  

- Para finalizar ejecutas lo siguiente:

Código
  1. ng serve -o

-- Entonces agregas a la URL /app-juego y al final debería mostrar los botones y funcionar los eventos, en mi caso la URL sería: http://localhost:4200/app-juego


- Esa es una manera poco elaborada, luego se puede adaptar mejor para usar funcionalidades más puras de Angular, primero que funcione lo anterior y luego se corrige lo demás.


Título: Re: adaptar codigo html a angular
Publicado por: Beginner Web en 22 Mayo 2020, 04:45 am
me faltan dos cositas,
1) que al ingresar una letra que sea incorrecta el jugador se le descuento 1 vida
2) y que al acertar la palabra completa pase a la siguiente palabra y gane una cantidad de puntos :D