본문 바로가기
카테고리 없음

pocketmon

by Sowon Kim 2025. 9. 17.
```javascript

const BASE_URL = 'https://pokeapi.co/api/v2/';

const pokeImage = document.querySelector('#poke-image')
const pokeButotn = document.querySelector('button')

async function getPokemon(num) {
    pokeImage.innerHTML = '';
    const response = await (await fetch(`${BASE_URL}/pokemon/${num}`)).json()
    const { sprites } = response
    pokeImage.innerHTML += `<img src=${sprites.front_default}><img src=${sprites.front_shiny}><br>`
    if (sprites.front_female !== null) {
        pokeImage.innerHTML += `<img src=${sprites.front_female}><img src=${sprites.front_shiny_female}></img>`
    }
}

async function getPokeSpecies(num) {
    const response = await (await fetch(`${BASE_URL}/pokemon-species/${num}`)).json()
    const eveolution_chain = response?.evolution_chain?.url;
    if (eveolution_chain != null) {
        const evolution_chain_response = await (await fetch(eveolution_chain)).json()
        const first = evolution_chain_response.chain.species;
        const second = evolution_chain_response?.chain?.evolves_to?.[0]?.species;
        const third = evolution_chain_response?.chain?.evolves_to?.[0]?.evolves_to?.[0]?.species;
        const arr = [first?.url, second?.url, third?.url]
            .filter(url => url !== undefined)
        let html = '';
        for (const url of arr) {
            const result = await getPokemonImage(url)
            if (result !== null) {
                html += `<img src=${result}>`
            }
        }
        pokeImage.innerHTML += `
            <div>
                <p>진화과정</p>
                ${html}
            </div>
        `
    }
}


async function getPokemonImage(url) {
    const num = url.split('/').at(-2)
    const response = await (await fetch(`${BASE_URL}/pokemon/${num}`)).json();
    const { sprites } = response
    return sprites?.front_default
}

pokeButotn.onclick = function () {
    const randomNumber = Math.round(Math.random() * 1000);
    getPokemon(randomNumber);
    getPokeSpecies(randomNumber);
}


```