사용자:용사용자/괴트리스/변수연습장

리버티게임, 모두가 만들어가는 자유로운 게임

괴트리스를 만들기 위해 위키 문법에서 변수를 어떻게 다룰지 연습하는 장소입니다.

#var과 #vardefine을 이용하여 변수를 설정하고 출력하기[편집 | 원본 편집]

  • 코드
{{#vardefine:백괴|100}}[1]
{{#var:백괴}}[2]
  • 실행결과
100

설정되지 않은 변수를 출력하라고 하면?[편집 | 원본 편집]

  • 코드
{{#var:백괴사전}}[3]
  • 실행결과


보다시피 아무것도 나오지 않는다.

변수를 두 번 이상 설정하면?[편집 | 원본 편집]

변수 선언을 먼저 두 번 한 뒤 출력을 한번 시킨다.[편집 | 원본 편집]

  • 코드
{{#vardefine:백괴스럽다|100}}
{{#vardefine:백괴스럽다|200}}
{{#var:백괴스럽다}}
  • 출력 결과



200

변수 선언을 한 뒤 출력하고 다시 변수를 선언한다.[편집 | 원본 편집]

  • 코드
{{#vardefine:백괴백괴|100}}
{{#var:백괴백괴}}
{{#vardefine:백괴백괴|200}}
  • 출력 결과


100


출력을 명령한 뒤 변수 선언을 한다.[편집 | 원본 편집]

  • 코드
{{#var:사전사전}}
{{#vardefine:사전사전|1000}}
{{#vardefine:사전사전|2000}}
  • 출력



보다시피 아무것도 출력되지 않는다.

한번 선언 한번 출력을 두 번 반복하기[편집 | 원본 편집]

  • 코드
{{#vardefine:사전|10}}
{{#var:사전}}
{{#vardefine:사전|20}}
{{#var:사전}}
  • 출력

10

20

소론[편집 | 원본 편집]

#var 명령어는 위에서부터 위키 코드를 읽어가면서 #vardefine으로 부터 값을 받아 #var이 위치한 자리에 밀어넣는다고 생각하면 된다.

#var의 용도와 한계[편집 | 원본 편집]

#var은 페이지 내에서 자주 사용되는 변수들의 이름을 정해서 불러줄 수 있다는 장점이 있다. 예컨데 백괴사전의 가격이 만원이면, 문서에 백괴사전의 가격이 나오는 부분마다 만원, 만원 하나씩 치는것이 아니라 {{#var:백괴사전가격}}를 쓰므로서 훨씬 더 직관적이고 빠르게 문서를 작성할 수 있다는 장점이 있다.

그러나 #var은 다른 문서에는 적용되지 않고 변수를 선언한 그 문서에서만 적용된다는 단점이 있다. 당장 링크로 가서 확인해보자. 이는 게임을 만들면서 치명적인 단점으로 작용한다. 예컨데 RPG를 만들었고, 문서 1은 1번 방 그리고 문서 2는 2번 방을 염두에 두고 제작했다고 하자. 여러분이 1번 방에서 2번 방으로 이동할 때 주인공 캐릭터의 정보가 그대로 이동해야 하지만, 이것은 #var로는 구현할 수 없다. 그래서 아래 설명한 CGI2와 Linkget을 사용한다.

Linkget을 이용하기[편집 | 원본 편집]

앞서 말했듯, 다른 문서로 변수값을 넘겨주기 위해서 우리는 CGI2와 Linkget을 사용한다. CGI2는 CGI와 Linkget을 합친 기능이기 때문에 나중에 차차 설명하고 Linkget에 대해서 우선 설명하자.

Linkget의 기초[편집 | 원본 편집]

  • 변수를 넘겨주기 위한 코드 : {{Linkget/임시|괴트리스/변수연습장#Linkget.EC.9D.98_.EA.B8.B0.EC.B4.88[4]|이거 클릭[5]|get=변수값[6]=10[7]}}
  • 이거 클릭

 버튼을 누르기 전 까지는 절대 펼치지 말것

#var과의 충돌[편집 | 원본 편집]

  • 앞서 링크를 통해 보냈던 "변수값"의 값을 #var로 불러낼 수 있을까?

 펼쳐서 확인해 보자


여기서 우리는 #var과는 뭔가 다른것이 Linkget에 적용되고 있다는 것을 알 수 있다. 변수 앞에 #var이 붙어있으면 오로지 #vardefine에서 그 값을 가져온다. 그렇다면 #urlget은 어디서 그 값을 가져오는가? 답은 간단하다. 이름에서 알 수 있듯이 링크에서 변수 값을 가져온다. 현재 링크를 잘 보면 우리가 "변수값" 이라고 이름 붙인 변수가 나오는 것을 볼 수 있다. 정확히는 변수값=10이라고 적혀있을 텐데, #urlget은 여기서 값 10을 가지고 온다.

그래서 세줄요약좀 해달라구요[편집 | 원본 편집]

1. Linkget은 링크로 특정 페이지로 변수값을 넘겨준다. 물론 여러분이 보고있는 이 페이지도 포함해서.

2. #urlget은 링크에 적힌 변수를 가져온다.

3. #var은 문서 내부에 #vardefine으로 적힌 변수를 가져온다.


  • 예시 없으면 니들 화낼꺼지?
  • 코드
{{Linkget/임시|괴트리스/변수연습장#그래서_세줄요약좀_해달라구요|클릭해보기|get=QT=200}}
{{#vardefine:QT|100}}
{{#var:QT}}
{{#urlget:QT}}
  • 결과

클릭해보기

 링크를 클릭한뒤 열어볼것!

세부논의, C언어와의 비교[편집 | 원본 편집]

C언어에서는 프로그램 코드의 앞부분에

int a;
int a=10;

이렇게 변수를 먼저 선언하고 초기화한 다음 사용한다. 그러나 위키 문법에서는 이와 같은 코딩이 이루어질 필요가 없다.

예컨데 페이지 1이 있고, 페이지 2가 있다고 하자. 페이지 1에서 페이지 2로 Linkget을 이용하여 넘어가면서 변수 ByeonSu를 넘겨줬다고 하자.


페이지 1 페이지 2
{{Linkget/임시||페이지2|넘겨주자|get=ByeonSu=백괴사전}} 여러분이 접속하고 있는 사전의 이름은 {{#urlget:ByeonSu}}입니다.


페이지 2에서는 ByeonSu의 값을 사용함에 있어서 C처럼 변수를 따로 선언할 필요가 없다. 링크에 ByeonSu의 값이 남아있기 때문에 그냥 {{#urlget:ByeonSu}}를 해주면 값을 따오는데 아무런 문제가 없다. 그냥 내가 ByeonSu의 값을 따올 필요가 있는 부분마다 {{#urlget:ByeonSu}}를 해주면 된다.

작은 실험[편집 | 원본 편집]

아래와 같은 코드를 실행시켜 보자.

  • 코드
{{#vardefine:졸려졸려|괴트리스}}
[[{{#var:졸려졸려}}]]
{{Linkget/임시||괴트리스/변수연습장#실험|링크클릭해줘|get=포타알2=연습장}}
[[괴트리스/{{#urlget:포타알2}}]]
  • 실행결과


괴트리스

여기를 클릭해줘뭐해? 안누르고

괴트리스/


링크를 클릭한 결과 괴트리스/연습장으로 향하는 링크가 하나 생기는 것을 볼 수 있다. #var친구와 #urlget친구는 위키 문법을 이용하여 짠 코드에서 자신이 나온 부분을 다른 값으로 치환한다고 생각하면 편하다. 위의 코드를 예시로 들면

  1. [[{{#var:졸려졸려}}]]의 {{#var:졸려졸려}} 부분을 발견
  2. {{#vardefine:졸려졸려|괴트리스}}에서 "괴트리스"라는 문자열을 가져와 치환
  3. [[괴트리스]]라는 위키 문법으로 된 문자열로 변경
  4. 문서로 오면서 괴트리스 링크 생성

이 일어나며 두 번째 링크의 경우는

  1. [[괴트리스/{{#urlget:포타알2}}]]의 {{#urlget:포타알2}}부분을 발견
  2. {{#urlget:포타알2}} 부분을 링크 주소에서 "연습장"이라는 문자열을 가져와 치환
  3. [[괴트리스/연습장]]라는 위키 문법으로 된 문자열로 변경
  4. 문서로 오면서 괴트리스/연습장 링크 생성.

과정을 거친다. 링크를 클릭하지 않을 경우 urlget은 어떤 문자열도 가져올 수 없어서 아무것도 아닌 빈칸을 가져오게 된다. 그래서 링크가 깨지며 괴트리스/까지만 나타나는 것이다. #var 혹은 #urlget은 단순히 변수를 표시하기 위한 장치가 아니라, C언어로 비유하면 변수 그 자체라고 볼 수 있다. 위키 문법으로 코딩된 문서를 실제 표시되는 문서로 고치기 전 #var, #urlget 자리에는 실제 변수의 값(url에 있거나 #vardefine으로 명시되거나 한)이 들어가기 때문이다.

변수의 작용을 이해하기[편집 | 원본 편집]

이런 위키 문법에서 변수의 작용은 판촉 사원에 비유하여 이해할 수 있다.

당신이 집집마다 돌아다니면서 물건을 소개하는 판촉 사원이라고 생각해보자.

편의상 당신이 오렌지 주스를 팔러 다니고 있다고 상상한뒤, 평범해보이는 집 A 안으로 들어갔다고 가정해보자.

자. 지금 평범해 보이는 집 A안에 집주인과 당신이 마주보고 있다. 집 A의 집주인은 당신에게 당신이 가져온 오렌지 주스를 줘보세요 라고 할 수도 있으며, 아니면 자기집 냉장고 안의 오렌지 주스를 꺼내올 수도 있다. 만약 당신이 가지고 있는 오렌지 주스가 델몬트고 집주인이 냉장고에 둔 오렌지 주스가 카프리선이라고 하면....

  1. 집주인이 만약 자신의 냉장고에 있는 오렌지 주스를 꺼내오면? 카프리선이 나올 것이다.
  2. 집주인이 만약 당신이 가지고 있는 오렌지 주스를 꺼내라고 하면? 델몬트가 나올 것이다.

Linkget의 응용 CGI2[편집 | 원본 편집]

그냥 시도해본거[편집 | 원본 편집]

함 눌러보라카이


{{#while:

| true
|
  • 0

}}


주석[편집 | 원본 편집]

  1. 변수 백괴를 100으로 설정한다.
  2. 변수 백괴를 출력한다.
  3. 백괴사전이라는 변수는 정의되지 않았다.
  4. 보낼 위치(여기서는 이 문서)
  5. 링크가 어떻게 보일지 적어주기
  6. 보낼 변수의 이름
  7. 보낼 변수의 값