?

단축키

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
번호 제목 글쓴이 날짜 조회 수
8827 저번 글들과, 이전 글에 대해 묻고 싶습니다. idtptkd 2005.05.17 1314
8826 이전 작가들은 어떻게 되는 건가요? 아렉스 2005.05.17 1091
8825 이전 작가들은 어떻게 되는 건가요? 영원전설 2005.05.18 1152
8824 프루티룹스 질문... 신승일 2005.05.18 1472
8823 창작글만 있는데 감상문 같은 건 쓸수 없나요? 다르칸 2005.05.18 994
8822 창작글만 있는데 감상문 같은 건 쓸수 없나요? 아렉스 2005.05.18 1031
8821 창작글만 있는데 감상문 같은 건 쓸수 없나요? 천무 2005.05.18 820
8820 창작글만 있는데 감상문 같은 건 쓸수 없나요? 『水』신교 2005.05.18 869
8819 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; 밀크마스터 2005.05.18 1166
8818 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; 나랑놀자 2005.05.18 1111
8817 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; 셉티찡 2005.05.18 1170
8816 릴레이 소설 말인데요... 외로운갈매기 2005.05.18 675
8815 이전의 창작글 게시판의 글은 어케되나요? 천무 2005.05.18 471
8814 이전의 창작글 게시판의 글은 어케되나요? Sir_아사히 2005.05.19 563
8813 윈도우 98에서는 rpgxp안돌아가요 ? 바람을 가르는 자 2005.05.19 767
8812 윈도우 98에서는 rpgxp안돌아가요 ? 미칼렌 2005.05.19 927
8811 패치 요청... Norid 2005.05.19 454
8810 rpg만들기 2000에서 신규프로젝트가 만들어지지 않아요;; black-angel 2005.05.19 1147
8809 [RPG XP] 게임 테스트 오류. 살려주세요// Norid 2005.05.19 939
8808 릴레이소설 사래신장전 완결했는데요.. 적랑 2005.05.20 648
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 442 Next
/ 442


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

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