Bresenham 선긋기 알고리즘을 LUA 로 간단히 구현해본 예제입니다.

테스트는 마우스로 시작할 위치에 오른쪽 클릭하고서 클릭버튼을 때지않고 드래그합니다.

그 다음에 마무리 위치에서 오른쪽 클릭 버튼을 뗍니다.

두 지점 사이에 선이 그려집니다.

최단거리로 직선으로 이동할 때나, 직선의 형태로 뭔가를 처리하고자 할 때 이용하고자 만들어본 예제입니다.

출처: http://en.wikipedia.org/wiki/Bresenham's_line_algorithm

저작자 표시
신고


100x100 크기의 이미지를 800x600 화면에 타일형태로 찍어서 무제한으로 스크롤하는 예제입니다.

각종 배경 애니메이션에 활용될 수 있는 스크롤 기법입니다.


F5 로 실행 한뒤에, 방향키로 스크롤 속도를 조절할 수 있습니다.

스크롤 속도가 변동되는 중간에도 부드럽게 스크롤 되도록 구현되어 있습니다.

저작자 표시
신고


튜토리얼 2-7A

기본 튜토리얼 2-7 예제는 네트워크 채팅을 설명하고 있습니다.

그런데 일반적인 채팅창을 구현할 때, 공통적인 인터페이스 요구사항이 있습니다.

게임을 하다가, 바로 ENTER 키를 입력하면 채팅창에서 입력할 수 있도록 하는 것입니다.

게임오븐에서도 이와 유사한 기능을 다음과 같이 구현할 수 있습니다.

function tutorial2_7ClientApp:OnUIMsg(main, msg)
 -- 키보드 엔터 누르면 이벤트로 알리기
 if msg.id == Evt_KeyboardDown.id then
  local v = msg:GetValue(Evt_KeyboardDown.key.Value)
  if v == UIConst.KeyEnter then
   local msg = Message(Evt_InputEnter)
   self:SendToScene(msg)
  end
 end
 ClientApp.OnUIMsg(self, main, msg)
end

OnUIMsg() 함수는 UI 메시지를 받았을 때 호출되는 함수로, 몇가지의 경우를 제외하고 대부분의 경우 호출됩니다.

특히 다른 Edit 에 활성화 되어 있는 경우에는 모든 키 입력을 그 Edit 에서 받아서 처리하기 때문에, OnUIMsg() 함수가 호출되지 않습니다.

그래도 대부분의 경우에는 위와 같은 구현으로, 원하는 기능이 충분히 구현될 것이라고 믿습니다.

이상입니다.


다른곳: http://cms.hangame.com/post2/812/2611858


저작자 표시
신고

티스토리 툴바