?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요... 모르는게 있어 질문드립니다....

 

 

 

 

기본 변수 메소드 - $gameVariables.setValue(value,n)

셀프 변수 플러그인 - this.get_self_variable(name,n)

 

 

 

 

질문드리는 식은 아래 초록색 식입니다.

 

for (var i = 0; i < 100; i++) {

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", i))

}

 

 

 

 

이렇게 썻는데 실행하면 작동은 되는데 게임상에서는

 

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 1))

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 2))

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 3))

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 99))

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 100))

 

이렇게 표시나요?

 

 

 

 

 

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 1~100))

아니면, 빨간색갈 부분의 숫자만 바뀌나요 ..................?

 

 

 

 

-----------------------------------------------------

 

 

 

 

 

$gameVariables.setValue(146, 이곳에)

 

위의 식의 '이곳에'라는 곳에 아래의 식을 다 더해서 넣어주고 싶습니다...

물론, 노가다로 1부터 100까지 직접 작성하는 방법이 있지만,

for문이나 어떠한 요약식으로 요약하여 1~100을 쉽게 더하는 방법이 있는지 질문드립니다... ㅠㅠ

 

this.get_self_variable("병렬처리대상", 1)

this.get_self_variable("병렬처리대상", 2)

this.get_self_variable("병렬처리대상", 3)

.

.

.

this.get_self_variable("병렬처리대상", 99)

this.get_self_variable("병렬처리대상", 100)

 

어떻게 써야 1~100까지 위의 문장을 반복해서 더해줄 수가 있을까요?

 

$gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 1) + .................... + this.get_self_variable("병렬처리대상", 100))

 

이런 느낌입니다...

 

도와주세요 ㅠㅠ

?
  • profile
    lklslel 2016.12.17 11:12
    흐음... 진부한 설명은 컴퓨터나 하드웨어 관련 학과의

    자료구조나 알고리즘에 대해서 이야기를 해야하겠지만요...

    그런 말을 하면 괜시리 머리만 아파오는 것이 알반적이니

    알기 쉽게 말을 풀어서 설명해드리겠습니다.

    모든 loop(반복)구문들은 { }(대괄호 : 구문의 처음과 끝을 구분짓는 기호)을

    기준으로 한 번씩 반복을 합니다.



    for (var i = 0; i < 100; i++) {

    $gameVariables.setValue(146, this.get_self_variable("병렬처리대상", i))

    }



    직접 작성하신 부분을 예로 들자면

    실행 순서는 다음과 같이 됩니다.

    (그냥 적힌 문자열의 순서대로 설명해드립니다.)


    1. 실행할 구문 : for

    -> 실행할 구문에 따라 실행하는
    방식이 다르므로 반드시 읽습니다.


    2. 현재값 : i = 0~99

    -> (초기값 0, ++연산으로 }이후에 1만큼 증가)


    3. 실행 임계 조건 : i < 100

    ->i 가 100보다 작을 때 실행됩니다.
    i 가 100이 되면 for(){} 의 구문의 실행은 하지 않습니다.


    4. 변수 값 조정부분 : i++ (after increase)

    -> for(){}가 한번 실행되고 나서 마지막으로 실행됩니다.


    5. 구문 내부 읽기 시작 : {

    -> { 괄호의 시작기호 - ( / [ / { - 를 만나면

    어떤 구문이라도 안에 있는 내용을 우선시합니다.


    6. 구문 내부 실행부분 : $gameVariables.setValue(146, this.get_self_variable("병렬처리대상", i));


    7. 구문 내부 읽기 종료 : }



    실상적인 구문의 실행은 다음과 같습니다.



    for문이 처음 실행될 때


    for (0; 0 < 100; 0++) {

    $gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 0))

    }


    ....



    for문이 100번째 실행될 때


    for (99; 99 < 100; 99++) {

    $gameVariables.setValue(146, this.get_self_variable("병렬처리대상", 99))

    }



    for문이 종료될 때


    for (100; 100 < 100; )


    조건부분의 값이 false를 나타내기 때문에

    이후의 처리는 공백상태의 초기 형태를

    실행하는 구조로 마무리 됩니다.


    어셈블리어로 살펴보면 jump(해당 메모리 주소로 즉각이동명령어) 관련 명령어들이

    없고 다음으로 진행하도록 변경됩니다.



    ※ 어셈블리어란 기계어(0,1로 이루어진 원시언어)보다

    최소 한 단계 높은 원시언어로 메모리 영역에서

    실제적인 데이터의 처리를 하는데 쓰여집니다.


    ※ 모든 프로그래밍 언어는 해당 언어에서 어셈블리어로,

    어셈블리어에서 기계어로 변환되어서 실행됩니다.



    실행에 대한 설명은 이정도로 마무리 짓겠습니다.
  • profile
    lklslel 2016.12.17 15:09

    프로그래밍 언어마다 구문을 구분하는 괄호가

    없는 경우도 있다는 점은 참고하시기 바랍니다.


    몽롱하다님께서 말씀하신 부분은 속도적인 측면에서

    직관적인 부분을 콕 집어내셨다고 할 수 있습니다.


    for문을 일일이 실행하면서 1개의 값을

    더하는 과정은 속도 저하로 이루어집니다.


    몽롱하다님께서 쓰시려는 플러그인이 HIME_SelfVariables.js

    인듯해서 스크립트를 받아서 쓰시려는 부분에 대해서 찾아보았습니다.

    this.set_self_variable(NAME, VALUE, EVENT_ID)
    this.get_self_variable(NAME, EVENTID)

    쓰시는 부분이 eventID에 저장된 변수의

    값을 더하는 부분인 듯하여 더 필요한

    정보를 정리를 해보았습니다.



    get / set_self_variable 함수는

    각종 Interpreter 객체
    Game_Player 객체
    Game_Follower 객체
    Game_Vehicle 객체
    Game_Event 객체

    의 인스턴스에서만 사용하실 수

    있다는 점을 잊으시면 안됩니다.



    다음은 사용하는 것이 가능한

    변수들의 모음입니다.



    $gamePlayer



    $gamePlayer._followers._data[팔로워인덱스]

    팔로워인덱스

    팔로워중에 데이터를 처리할 팔로워의 인덱스번호



    $gameMap._vehicles[차량타입]

    차량타입

    0 = 보트
    1 = 배
    2 = 비행선



    $gameMap._interpreter



    $gameMap._events[이벤트Id]

    이벤트Id

    맵에서 발생하는 각종 이벤트의 Id



    위에 제가 정리해드린 부분과 각종 interpreter관련

    변수들에서는 사용하실 수 있지만 이외에는 불가합니다.

    현재 당장 생각하셔야 할 점은 다음과 같습니다.

    1. 값을 찾기 원하는 변수명

    2. 찾기 시작하는 변수의 인덱스 번호

    3. 마지막으로 찾을 변수의 인덱스 번호

    4. 원하는 기능을 구현하는 방법



    을 생각하시고 나서 즉각적으로 쓰려고 하면

    다음과 같이 작성하는 것이 제일 단순할 겁니다.

    .setValue(146, this.get_self_variable("병렬처리대상", 1) + .................... + this.get_self_variable("병렬처리대상", 100))



    이처럼 작성하실 수도 있지만 좀 더 간편하게

    사용할 함수로 만들어보도록 하겠습니다.



    function range_sum(object , variable_name , start_index , last_index){
    var i, j, k, l,reg;
    switch(true){
    case (start_index != NaN && typeof start_index === "number" && last_index != NaN && typeof last_index != "number"):
    //시작 인덱스 데이터가 숫자이고
    //끝 인덱스 데이터가 숫자가 아니면
    //끝 인덱스 데이터는 시작 인덱스 데이터와 같도록 설정합니다.
    last_index = start_index;
    break;
    case (start_index != NaN && typeof start_index != "number" && last_index != NaN && typeof last_index != "number"):
    //시작 인덱스와 끝 인덱스가 숫자가 아니면
    //에러문을 찍어주고 강제로 종료합니다.
    throw new Error('range_sum\'s\nparameter is incorrect.');
    return false;
    }
    //j 는 합을 저장할 임시 변수입니다.
    j = 0;
    //k 는 단위 처리 갯수 변수입니다.
    k = 10;
    //l 은 전체 갯수를 k로 나누었을 때 발생한 나머지 값 변수입니다.
    l = (last_index - start_index) % k;
    switch(true){
    case (last_index >= start_index):
    //끝 인덱스가 시작 인덱스보다 클 때
    for(i = start_index;i < (last_index - l) + 1;i += k){
    j += object.get_self_variable(variable_name,i) + object.get_self_variable(variable_name,i + 1) + object.get_self_variable(variable_name,i + 2) + object.get_self_variable(variable_name,i + 3) + object.get_self_variable(variable_name,i + 4) + object.get_self_variable(variable_name,i + 5) + object.get_self_variable(variable_name,i + 6) + object.get_self_variable(variable_name,i + 7) + object.get_self_variable(variable_name,i + 8) + object.get_self_variable(variable_name,i + 9);
    }
    for(;i < last_index;i++){
    j += object.get_self_variable(variable_name,i);
    }
    break;
    case (last_index < start_index):
    //끝 인덱스가 시작 인덱스보다 작을 때
    for(i = last_index;i > (start_index + l) - 1;i -= k){
    j += object.get_self_variable(variable_name,i) + object.get_self_variable(variable_name,i - 1) + object.get_self_variable(variable_name,i - 2) + object.get_self_variable(variable_name,i - 3) + object.get_self_variable(variable_name,i - 4) + object.get_self_variable(variable_name,i - 5) + object.get_self_variable(variable_name,i - 6) + object.get_self_variable(variable_name,i - 7) + object.get_self_variable(variable_name,i - 8) + object.get_self_variable(variable_name,i - 9);
    }
    for(;i > start_index - 1;i--){
    j += object.get_self_variable(variable_name,i);
    }
    break;
    }
    return j;
    };



    사용방법의 예는 다음과 같습니다.

    $gameVariables.setValue(146,range_sum($gamePlayer,"병렬처리대상",1,100));

     

    ※ $gamePlayer 는 다른 변수로 대체될 수 있습니다. ※




    range_sum함수는 HIME_SelfVariables.js에

    추가하시기 보다는 작성한 함수를 등록하는

    플러그인을 하나 만드시면 되겠습니다.


    그렇게까지는 못하시겠다면 다른 플러그인의

    주석 부분 바로 뒤쪽에 붙여넣기 하시면 됩니다.


    HIME_SelfVariables.js를 예로 들자면


    Which will return true or false depending on what the value of the variable is.

    -------------------------------------------------------------------------------
    */

    //바로 여기에

    var Imported = Imported || {} ;
    var TH = TH || {};


List of Articles
번호 제목 글쓴이 날짜 조회 수
8648 [VXACE]회전하는 막대그림에 충돌 판정(혹은 이벤트 충돌 판정)을 정하고 싶습니다. 4 file Cos!cos! 2017.03.03 562
8647 안녕하세요! 네코RPG XP 플레이어 관련 질문드립니다. neezu 2017.03.02 438
8646 XP 레벨변수 질문해봅니다. 1 준E 2017.02.24 684
8645 인터넷 연결 유무 확인하는 법 1 구미/쿠라마 2017.02.22 838
8644 [VXACE]게임 실행 중 데이터 베이스내의 액터의 메모를 수정 및 추가할 수 있는 방법은 없을까요? file Cos!cos! 2017.02.22 281
8643 [VXACE]스크립트에 NoMethodError undefined method ~~for nil:NilClass가 뜨는데 어떡하죠? 4 Cos!cos! 2017.02.21 1266
8642 네코 1 pjy3216s 2017.02.21 262
8641 RPG XP 확장자를 바꿨는데 뭐였는지 까먹었습니다... 1 file 준E 2017.02.20 723
8640 RPG MAKER XP 게임에서 컴퓨터 윈도우 창 표현하기 2 수냐 2017.02.18 713
8639 네코로 mv돌리니깐 방향키가! 1 버들 2017.02.18 811
8638 터치스크립트? 1 뿡꾸 2017.02.17 716
8637 ㄹㅇ궁금함 4 Dkdjdos 2017.02.16 729
8636 RPG MAKER MV에서 게임 시작과 동시에 타임카운팅을 하고싶은데 3 냉동새우 2017.02.14 810
8635 대화창 불투명도 조절(ACE) 2 수녀갓 2017.02.13 726
8634 [MV] 겹치는 Sprite 순서 질문입니다 3 file huguduk 2017.02.07 503
8633 MV 맵칩과 캐릭터칩을 보니까 2 스탈린 2017.02.07 1094
8632 No implicit conversion ~~~ 하는 오류좀 도와주십쇼 1 리하링 2017.02.05 617
8631 [RPG XP] 해상도 질문 1 스탈린 2017.02.04 1277
8630 RPG MAKER XP 구매처 질문 2 스탈린 2017.02.04 710
8629 캐릭터칩 사용법 질문 2 file 오리고기훈제 2017.02.04 746
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 442 Next
/ 442






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)