241120 TIL - oreno turn wk2 (3)

LIHA·2일 전
0

내일배움캠프

목록 보기
115/117
post-thumbnail

뼈대잡기

오늘 할일

플리마켓 - 특수카드의 일종이라서 useCard 먼저 필요

  • 현재 뼈대만 만들어져있는 상태

  • 동혁님이 만들어주신 useCard를 기반으로 플리마켓 발동 관련한 핸들러들 제작 예정

  • 아주 만약에 동혁님의 useCard 코드를 이해하지 못했거나, 사용이 어렵다라면 리하 나름대로의 useCardHandler 만들어봐도 될까?
    -> 이해 못했다면 OK

  • 페이즈 관련한 인터벌매니저는 만들어져 있으므로...
    -> 진수님이 작업해주실 예정

요약 : useCardHandler 셀프구현 및 플리마켓 개노답삼형제 구현

오늘 한일

  • 플리마켓은 구현 못함 -> 고려할게 많아 머리가 너무 복잡해져서 손대지 못함
  • useCardHandler 셀프구현 완료함 - 제대로 돌아가는지는 모르겠음
  • CARD_LIMIT 값 추가해놓음
  • CARD_SUM 함수 호출로 구현해놓음 - 값 변동되어도 작동함
  • 만기적금 핸들러 구현중 - card.js에 맵핑해놓음
  • 카드 덱 구현 중

기획

그래서 우리의 기획은요?

핵심 기획내용 뼈대

  1. 액션과 리액션
  2. 난입
  3. 덱빌딩
    -> 리로딩: 패의 카드를 다 쓰거나, 리로드 버튼을 누르면 패의 카드를 모두 버리고 오랜 대기 후 남은 덱의 카드를 랜덤하게 다시 넣는다

트러블슈팅

난사처럼 타겟이 따로 없는 경우 상대의 데이터를 어떻게? - 배열에 넣어서 전달!

  • 의문점: 타겟이 되는 유저가 여러명이라서 얘네의 데이터를 하나하나 다 가공해주는 방법을 모르겠다!
    -> 소켓 말고 Id로 잡아오자 - 타겟이 명확해지니 ok. 근데 여전히 여러개네... 어쩌지?
    -> 배열을 새로 만들어서 push해주고, 그 배열을 멀티캐스트로 쏴준다!

유저 상태 업데이트 노티를 만들던 중, 난사나 플리마켓처럼 모두를 대상으로 발동하는 카드인 경우 타겟 유저가 여러명인데 어떻게 해줘야 할지 몰라 고민에 빠져 유정 튜터님을 찾아뵈었다.

user가 맵 객체인건 문제가 안된다 - socket 말고 targetUserId가 쓰이는게 나을것! 그래야 타겟을 정함

  • 일단 상대를 잡아오는 것부터 소켓말고 id로 바꾸자. 이걸 위해 타겟유저Id가 페이로드에서 오는 것임.
    (소켓으로 잡으면 막연히 나말고 나머지~ 로 잡혀오기 때문에 타겟 유저를 특정할 수 없다)
  • 전체대상 카드인 경우 유저 업데이트 노티를 써주는건 맞는데, 전원의 데이터가 들어갈 것.
    -> 이 전원의 데이터는 배열을 만들어 push해주고, 그 배열을 노티로 쏴주면 된다.

카드를 사용할 때마다 모든 유저의 정보가 업데이트 되는건 아니니, 필요한 유저의 정보만 보내자

  • 카드를 사용할때마다 모든 유저의 정보가 업데이트 되는건 아니니까, 필요한 유저의 정보만 보내자
    -> 이거 타겟유저의 정보만 잡아와서 걔의 정보만 업데이트 해주면 될것
  • CARD_TYPES.BIG_BBANG 이면 난사 -> 모두가 쉴드가 가능한 상태로 만들어준다
    -> 이 경우도 유저업데이트 노티로 간다 - 그러나 전원의 데이터가 들어갈것
    -> '난사중' 이라는 상태로 내 상태 또한 업데이트 해줘야 할것
  • 핸들러에서 카드 사용해주고 나면 userUpdate 노티도 쏴줘야 한다
    -> 카드를 사용하면서 변경된 사항이 있을 것. 내정보만 변경됐으면 내꺼만 넣고, 남도 변경됐으면 남의 것도 넣으면 된다

만기적금을 타고싶은데 카드는 어디서 가져오면 될까? -> 게임 시작 시 카드 덱이 생성되어야 한다

  • 덱에서 쌓인 카드 셔플하고 나면 그 더미의 맨 위에서부터 가져오니까 그런 느낌으로 가져와야 할것
    카드더미의 매수는 제한되어 있겠지? 어디서 가져와야 하지? -> 게임 시작시 세팅되는 어딘가에 있는 카드더미
    저기서 가져오고 나면 가져온 카드 빼줘야 할것
  • 77장 다 써도 게임이 끝난다는 보장이 없으니, 사용한 카드는 다시 카드더미에 넣어주자
    카드의 종류별로도 매수가 제한되어 있는데, 이것에 대한 구현을 어떻게 하면 좋지? -> ?????? 여기서 막혔다
    카드 종류별 매수값을 상수폴더에 넣어줬으니, 만기적금으로 받아가면 같이 빼주는걸로... -> 어디서?
  • int형 배열을 하나 만들어서 1을 20개 넣고 한개씩 까자 -> Map이어도 상관없고 뭐든 좋다 => 얘 자체가 카드더미!!
    카드더미라는 배열이랑 카드 매수별 제한이라는 배열은 별도 존재 -> 카드더미를 위해 매수별 제한이 필요한것

키-밸류 쌍인 객체 묶음의 길이는 Object.keys(객체).length

참고 블로그

int배열로 만들어진 카드 더미를 랜덤으로 섞고 싶은데 - sort와 Math.random을 이용해보자

enum값을 들고오고 싶다면 .values를 붙여줘야 한다!

삼항연산자에서 부정문을 조건으로 걸고싶어요 -> 느낌표 두개를 써주자

참고 블로그

if문에는 느낌표 한개만 써주는데 삼항연산자에는 느낌표 하나가 먹히질 않았다. 호영 튜터님께 여쭤보니 삼항연산자의 조건절에 쓰려면 변수를 true false로 변경해야 해서, 느낌표 두개면 된다고.

profile
갑자기 왜 춤춰?

0개의 댓글