본문 바로가기

잡동사니

게임도우미2009 설명#1

이제 갓 입문한 초보입니다(사실 기계도없습니다. 친구꺼 그냥 보고 좀 만졌을뿐이에요)

아직등업이 안되서 프로그램기본이용법을 못보는군요 ㅠ_ㅠ 보고싶은데...


친구놈도 그렇던데.. 변수 A 에 0을 넣고 10을 넣어야겟다. 20을 넣어야겠다라는 말을 자주하더라구요
물론 여기 게시판 글을 보고있어도 비슷한 느낌이 만히 나네요.. 물론 정확한 상황을 제가 모르기떄문에
그럴수도있지만 ^^ ..너무 변수(?)를 신경을쓰실까봐 이렇게 함 끄적여 봅니다.


이곳에서 변수라는것은 일종의 제어용으 성격이 강하더군요.

 

예제조건 : 내피의위치(100,100) 이 좌표가 피가있으면 빨간색이고 삐가없으면 검은색(색 상관없음)이 될때

              키보드1(물약단축키라고 가정)을 눌러야하는 상황이라면?

   위의명령을 궃이 변수를 쓰는 에제를 들자면
             인식1 :  내  위치(100,100) 이 빨간색이아니면 A=10 을 넣어라.
             인식2 :  A=10 이면  키보드1을 눌러라.

   안쓰면
             인식1 : 내 위치(100,100) 이 빨간색이아니면 키보드1을 눌러라.

 

이렇게 요약되는데 궃이 변수를 써야할까요?

변수를 쓰려면 그만큼 저장공간이 할당되어야할테고 부담이 더 갈듯한데 말이죠..

 

그럼 변수를 왜 써야하는가가 문제가생기는데..
첨에 적었듯이 일종의 제어용으로 변수가 필요하게됩니다. 즉 한가지일이아닌 두가지이상의 일이생겼을때는 필요할것같아요

예제조건 : 내피를 게속검사를 하는데 내피말고 파티원의 피도 검사를 해야겠다! 하는상황.  
              파티원에게 피를 주기위해서는 특정키보드(예를들어 3)를 누른후 해당 파티원을 마우스로 가르키고

              마우스우측버튼을 눌러야한다 (전부가정이에요.각 게임마다 다르겟죠)

위치조건 : 내피위치(100,100)  /  파티1피위치(200,100)

 

 인식1 : 내피위치 이 빨간색이아니면 키보드1을 눌러라. >> 이러면 내 피는 잘 차겠죠? 그럼 파티원1의 피검사를 해보죠
 인식2 : 파티1피위치 가 빨간색이 아니면 키보드 3을 눌르고 마우스를 파트1피위치로 옴긴후에 우측버튼을 클릭합니다.

 

 오.. 변수가 없어도 잘 작동하겠죠?.

근데 여기서 만약... 인식1,2가 동시에 작동하려고 든다면 어쩔까요? 내피를 채우려고하는시점에 파티원1을 피를 채우려한다면
기계는 키보드 1도 눌러소 3도눌럿다는 말도안되는 신호를 WIndow 에 보내겟죠?...

그러면 미치거나 잘되거나(?) 둘중하나겠지만 인식목록이 복잡해지면 복잡할수록  불안정해질건 뻔합니다.. 

그렇다면.. 둘이 동시발생을 해도 한놈만 실행하게하는겁니다.

 

 여기서 변수를 써봅시다.  내피를 채우는동안에 변수 H 에 1을 넣어봅시다. 기본값은 0이겟죠^^;

 

  인식1 : 내피위치 이 빨간색이 아니다
  인식1(1) : H = 1
  인식1(2) : 키보드1을 눌른다
  인식1(3) : H = 0
  인식2 : 조건 H=0 일떄만 작동하게한다.
  인식2(1) : 파티1피위치 가 빨간색이 아니면 키보드 3을 눌르고 마우스를 파트1피위치로 옴긴후에 우측버튼을 클릭합니다.

 위의명령을 해석하자면 내 피를 채우는동안에는 H=1 이되기떄문에 동시에 인식2가 발생하더라도 H값떄문에 작동을 하지않겠죠?
 이런경우라면변수가 필요합니다. 후에모를 오류처리를 대비함이되죠.

 이제 이런 기본틀(?)에 좀더 뼈와살을 붙여보죠.

 

추가조건 : 내피와 파티원1의 피를 확인하고  60초마다(즉 60초를 넘어간다면) 마나물약(단축키 Z 라고 가정함)을 먹도록?
추가설명 :  T1(T는 타이머이며 기계가 작동하는 시점에서 1초마다 +1이 증거한다고 생각하면 됩니다 - 틀리면 태클환영

              (저역시 많이 보지못한관계로 ^^)

 

 인식1 : 내피위치 이 빨간색이 아니다
   인식1(1) : H = 1
   인식1(2) : 키보드1을 눌른다
   인식1(3) : H = 0
 인식2 : 조건 H=0 일떄만 작동하게한다.
   인식2(1) : R = 1
   인식2(2) : 키보드3을 눌른다
   인식2(3) : 마우스위치를 파트1로 이동
   인식2(4) : 마우스우측버튼을 클릭한다.   >> 3~4의 명령을  위치파트1에 마우스 우클릭을한다와 동일합니다.
   인식2(5) : R = 0
 인식3 : T1 >= 60

(여기서 크거나 같다던  같다던 상관이없지만 혹시 모를 오류로인해서 60이라는 숫자가 사라졋을경우를 대비함으로 >=를 사용했다.
  왜 >= 인지 왜 = 인지는 조금더 생각해보시길 바랍니다.(사실 차이가 거의 없다고보심됩니다만 >= 가 더 오류에 강할거라고 에측합니다)
  인식3(1) : 키보드 Z를 눌릅니다

 

 단 여기서도 각 명령의 동기화를 해줘야겠죠? 중복으로 일어날경우의 대비죠.  인식3은 다음과같이 변경해줘야 아름다울것 같습니다.
 
 인식3 : H=0 이고 R=0 이고 T1 >= 60

  인식3(1) : 키보드 Z를 눌릅니다
  인식3(2) : T1 = 0 으로 설정.

 

  위의명령으로 마나를 먹는타임은 60초를 경과한후에 계속 인식이 되는데 H = 0 (피를 안먹는상황) ,

 R=0(파티1피를 안채우는상황) 에서만 작동합니다.
  만약 T1=60이라고가정을 했다면  60초순간에 피를 먹거나 파티1을 피를 채우게된다면 이  마나는 절대 못먹고 다시

60초후를 기다려야하지만 >= 이므로
  61초가되도 62초가되고 피, 파티1를 채우고잇지만않으면 기다리고(?) 있다가 작동하게됩니다.  여기서보면 >= 를 써야 더 말이되겟죠?
  그리고 마지막에 T1=0을 설정을 해줘야 T1 의 값이 0이되고 다시 +1씩 갈테니.. 60초후에 또 인식3이 작동할 조건이 작동되겠죠.

 

에궁 급히 쓰느라 글 상태가 말이 아니군요 ^^;

 

실제테스트해본 로직이아니므로 오류가 있을수있습니다. 어디까지나 설명용입니다.