src/reducers/gameReducer.js
// Reducer para el array de cartas
Reducer para el array de cartas
Reducer para el array de cartas
function cardsState(state = [], action) {
  switch (action.type) {
    case FLIP_UP_CARD:
      return state.map((card) => {
        if (action.id === card.id) {
          return { ...card, imageUp: true };
        }
        return card;
      });
    case MARK_PAIR_AS_MATCHED:
      return state.map((card) => {
        if (action.id1 === card.id || action.id2 === card.id) {
          return { ...card, matched: true }
        }
        return card;
      });
    case FLIP_DOWN_PAIR:
      return state.map((card) => {
        if (action.id1 === card.id || action.id2 === card.id) {
          return { ...card, imageUp: false };
        }
        return card;
      });
    case SHUFFLE_CARDS:
      let newCards = [...state];
      newCards = shuffle(newCards);
      return newCards;
    default:
      return state;
  }
}
function cardsState ( state = [ ] , action ) { switch ( action . type ) { case FLIP_UP_CARD : return state . map ( ( card ) => { if ( action . id === card . id ) { return { ... card , imageUp : true } ; } return card ; } ) ; case MARK_PAIR_AS_MATCHED : return state . map ( ( card ) => { if ( action . id1 === card . id || action . id2 === card . id ) { return { ... card , matched : true } } return card ; } ) ; case FLIP_DOWN_PAIR : return state . map ( ( card ) => { if ( action . id1 === card . id || action . id2 === card . id ) { return { ... card , imageUp : false } ; } return card ; } ) ; case SHUFFLE_CARDS : let newCards = [ ... state ] ; newCards = shuffle ( newCards ) ; return newCards ; default : return state ; } }
Reducer para el array de cartas
Reducer para el array de cartas
// Evaluar la acción despachada // Voltear hacía arriba la carta // Modificar el atributo para indicar que se debe mostrar // la imagen principal // Si el id de la carta actual coincide con el enviado a la acción // Clonar el objeto y modificar el atributo imageUp a true // Devuelvo la carta como está // Marcar cartas como coincidencias // Recorrer el array de cartas // Si es alguna de las dos cartas // Clonar el objeo y modificar el atributo matched a true // Devolver la carta como está // Voltear cartas boca abajo // Recorrer el array con las catas // Si es alguna de las cartas // Clonar el objeto y modificar el atributo imageUp a true // Devuelvo la carta como está // Mezclar las cartas // Clonar las cartas // Mezclarlas // Si no es ninguna de las acciones devuelvo el estado