본문 바로가기

파이어몽키

스노우크래프트(Snow Craft) for 안드로이드(소스포함)



델마당(http://www.delmadang.com)을 통해 양병규님이 Snow Craft 라는 게임을 Delphi XE5로 만드시고(Clone) 공개하셔서 소개합니다. 아마 예전에 윈도우 버전으로 작업했던 부분을 안드로이드로 포팅하신 듯 합니다.


제가 가지고 있는 넥서스7 1세대에서도 아주 잘 돌아가고 무엇보다 게임이 재밌네요^^

소스를 열어보시면 배울 만한 것들이 많이 있습니다.

(아주 좋은 소스코드를 공개해 주신 양병규님에게 다시한번 감사드립니다.)


소스코드

아이콘 경로가 절대경로로 잡혀 있어 델마당 자료실의 첨부파일에서 절대경로만 수정하여 올립니다.

▶ 클래스 상속

클래스 상속을 통해 TBoy와 TSnow, TBunker의 공통된 기능을 TCharacter에서 구현되었습니다.

왜 클래스를 사용해야 하는지와 사용하는 방법에 대해 이해하실 수 있을 것 같네요.

▶ 캔버스의 사용

Canvas에 캐릭터 들을 직접 그리는 방식으로 작성하셨습니다.

캔버스 사용법 과 마우스 이벤트를 어떻게 각 케릭터와 연결했는지를 보시면 아이디어를 얻으 실 수 있습니다.

▶ 리소스를 통한 효과음 사용

Sound.pas 파일을 보시면 효과음 파일을 배포관리자를 통해 배포하지 않고 사용할 수 있는 좋은 팁이 있습니다.

Sound.pas 파일의 PlaySound 메소드에는 ResourceID를 통해 등록된 Resource에서 스트림을 가져와 재생하는 코드는 아주 유용한 팁인 것 같습니다.


procedure PlaySound(const ResourceID: String);
var
  ResStream: TResourceStream;
  TempFile, FileName: String;
begin
  if MediaPlayer.State = TMediaState.Playing then Exit;

  FileName := ResourceID + '_tmp.mp3';
  TempFile := TPath.Combine( TPath.GetTempPath, FileName );

  if not FileExists( TempFile ) then
   begin
     ResStream := TResourceStream.Create(HInstance, ResourceID, RT_RCDATA);
     try
       ResStream.SaveToFile( TempFile );
     finally
       ResStream.Free;
     end;
   end;
  MediaPlayer.FileName := TempFile;
  MediaPlayer.Play;
end;


Project > Resources and images.. 메뉴를 통해 위의 화면을 이용 할 수 있습니다.


참고 링크