자유게시판

미드나잇 블루는 적도  스킬 수의 제한 (카드 장수 형식) 을 가지고 있으므로

적이 만약 스킬을 사용할 수 없게 된 경우에는 일반공격 혹은 방어를 선택해야 합니다.

그리고 기본 공격/방어  역시 스킬 카드의 모양을 보여주어야 하므로

다음과 같은 루프문을 짜서 적용시켰습니다.

 

알고리즘 적으로 정리되지 못하고 좀 조잡한 느낌이 있긴 하지만

실행 시간에는 큰 영향을 미치지 않더군요.

 

 

( 사실 이건 나중에 고쳤다가 잘못되버릴 경우를 대비한 백업 )

 

# 우선 루프는 적의 행동이 결정될때까지 반복되어야 하므로 loop 반복문을 사용

      loop do

# 처리시간 존재하는 loop 문 내에서 그래픽은 update 하지 않으면 안되더라
        Graphics.update
        Input.update

# available_actions 배열은 루프문 앞에서 make_action 메소드 내부에 정의 되어 있다.
        if available_actions.size == 0
# 만약 사용 가능 스킬이 하나도 없을 경우, 크기 2의 난수를 활용해서

          random_num = rand(2)
# 50% 확률로 공격과 방어 구분

          if random_num % 2 == 0

# kind 가 0이면 skill 이외의 행동을 의미
            self.current_action.kind = 0

# basic 이 0이면 공격, 1이면 방어
            self.current_action.basic = 0

# skill_id는 사실상 카드를 표현하는데 쓰인다. 998 과 999는 실질적으로 사용되는 스킬이 아닌 카드 표시용 이미지만 가진 스킬
            self.current_action.skill_id = 999

# 공격시 랜덤타겟을 뜻한다.
            self.current_action.decide_random_target_for_enemy

# 리턴은 루프를 끝내기 위해 필요
            return

# 솔직히 브레이크는 필요없다. 무한루프 방지용 안전빵이라는 것으로.
            break

# 이거슨 방어. (kind 0, basic 1) 바로 위의 공격 부분과 동일
          elsif random_num % 2 == 1
            self.current_action.kind = 0
            self.current_action.basic = 1
            self.current_action.skill_id = 998
            self.current_action.decide_random_target_for_enemy
            return
            break
          end
        end

# avaiable_actions 는 배열이다. action 은 앞의 배열 중에서 한 element를 뽑기 위한 index로 사용

        action = available_actions[i]

# action의 rating은 3이상 차이나게 하지 말자.
        if action.rating > rating_max - 3
          if value < action.rating - (rating_max - 3)

# 랜덤 변수 value가 rating 범위 내에 들었을 경우,

# 해당 스킬을 current_action에 대입 (kind는 1, basic은 상관없음, skill_id는 해당 skill의 id
            self.current_action.kind = action.kind
            self.current_action.basic = action.basic
            self.current_action.skill_id = action.skill_id

# 이 부분은 미드나잇 블루만의 스킬 데이터베이스에 속한

#has라는 자기참조 메소드. has[i] 는  id " i " 의 값을 가진 액터가 가진 스킬의 수를 의미.

#  액터가 적일 경우, id 에 100을 더한 값의 index에 값을 저장한다.

# 이 경우, 해당 스킬의 스킬카드의 장수가 0 이하일 경우
            if $data_skills[self.current_action.skill_id].has[self.id + 100] <= 0

# 유효 액션에서 해당 스킬을 지운다.

# 세이브/로드 시 이 정보는 기록되지 않으므로 전투 1회에 한정된다.

              available_actions.delete(action)

# 루프  테스트용  윈도우 출력 구문.
              # p available_actions

# 루프 진행용 변수 i.  만약 유효액션보다 i가 커지면 i값 초기화
              i += 1
              if i >= available_actions.size
                i -= available_actions.size
              end

#만약 원하는 스킬을 얻지 못했을 경우 루프를 종결시키지 않고 진행시킨다.
              next
            end
                       
# 만약 스킬의 내용이 정해졌다면 타겟을 정하고 return 한다.            
            self.current_action.decide_random_target_for_enemy
            return
            break
           
          else
            value -= action.rating - (rating_max - 3)
          end
        end
# 역시 루프 진행용 변수 i.        
        i += 1
        if i >= available_actions.size
          i -= available_actions.size
        end

      end

Who's 시트르산

?

제작중인 게임 :

Midnight Blue  (미드나잇 블루) - RPGXP

 공동제작 : 휘파람개비님

 시스템 : 45%, 스토리 : 10%, 맵 : 3%, 제작 : 1%

 CG : 2%         총 진행도 : 3%

 

 이번 게임은 공동제작인 만큼 최선을 다하겠습니다 ^^

기다려주세요~~


List of Articles
분류 제목 글쓴이 날짜 조회 수
공지 아방스 게시물 · 댓글 작성 규칙 (최근 수정일 2015.11.25) 17 file 완폐남™ 2012.07.17 40548
막장 오늘 꿈을 꿨는데 12 하얀악어 2014.02.11 470
막장 시트르산의 적 행동 작성 메소드 내부 루프의 세부 설명 시트르산 2011.01.23 471
막장 케잌을 사왓는데 왜 먹지를 못하니 3 위너프리드● 2011.01.18 473
막장 노트북이 아직 뭔가 이상하네요 2 JACKY 2013.10.02 473
막장 우와 씨빵 테시오 2010.11.01 474
막장 This is the 꾸준글 3 맛난호빵 2011.01.22 474
막장 천음님 칼리아 2010.10.21 475
막장 심심해, 허무해! 메모라이즈 2010.10.30 477
막장 똥똥배 대회를 노립니다! 4 내손목아지 2014.01.30 478
막장 음.... 3 제주 삼다수 2010.10.20 479
막장 아이 심심해. 1 달탱이 2010.10.28 479
막장 엑박이라니;; 6 노나메 2011.02.14 479
막장 레벨 1 포인트 몇되야지 됨? 3 ITE 2011.02.23 479
막장 레몬! 4 Lㅏ 2010.11.04 480
막장 명절 잔혹사 오지랖 2 파치리스 2014.09.07 480
막장 귀엽지 않습니까? 5 Alkaid 2011.02.09 481
막장 우와 막장이다 막장 ITE 2011.02.23 483
막장 오늘부터 다른일 내려놓고 게임만 만들어야겠습니다! 6 내손목아지 2014.02.06 483
막장 This is the 꾸준글 맛난호빵 2011.01.23 484
막장 현문님look SCUD 2010.12.04 485
목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 64 Next
/ 64