델파이 프로그래머 분들  안녕하세요  !

 

이번 세션에서는 우리가 지난 3번 세션에서 다운받은 프로젝트 기반으로  다음 작업을 하고자 합니다.

             A  바둑판 배경색(황금색) 을 입히기

    B.  바둑판의 가로 세로 19개의 선을 긋기

    C.  바둑판의 포석점을 그리기

 

    1.  바둑판 배경색(황금색) 을 입히기를 작업을 하기 위해서 FormCreate 이벤트에서  ResetBoard 로

        선언된 프로시져를 호출합니다.       

procedure TMainForm.FormCreate(Sender: TObject);
begin
      ResetBoard;
end;   

   

     2.  이 ResetBoard 프로시져에서는 새 게임 버튼을 클릭하면 언제든 호출하기 위해서 별도로 선언하였습니다.

       

procedure TMainForm.ResetBoard;
var
 I, J : SmallInt;
begin
 //  바둑판을 노란색으로 체우는 과정

  for I := 0 to 19  do
    for J := 0 to 19 do
      begin
        TTTBoard.Canvas.Draw(18 * I, 18 * J, img_board.Picture.Graphic);
      end;

end;

 

여기서  TTTBoard 라로 명명된  Image 컴포넌트의  Canvas.Draw 를 통해 각각의 넓이18 x 높이18

의 위치에  img_board 컴포넌트의 Picture 를 사용하여 바둑판을 그림니다.

  

    3 물론  procedure  TMainForm.ResetBoard; 호출하기위해선  Class 안에 다음처럼 선언을 해주셔야 하겠죠!

  TMainForm = class(TForm)

    ...

  private
    procedure ResetBoard;

   ...     

 

그리고 이제 실행 해보시면 다음의 결과를 보십니다.

badukGold.png

 

     

    4 이제  바둑판 위에 가로 세로 19개의 선을 긋기 위해서 ResetBoard 프로시쳐 안에 다음을 추가합니다.

procedure TMainForm.ResetBoard;
begin

    ...

 //바둑판에 가로 세로 19개씩의 라인을 그리는 과정

  for I :=  1 to 20  do
    begin
      TTTBoard.Canvas.Pen.Width := 1;                            // 선의 굵기
      TTTBoard.Canvas.Pen.Color := clBlack;                      // 선의 색깔
      TTTBoard.Canvas.MoveTo(18, 18 * I);                       // 가로선의 시작점 지정
      TTTBoard.Canvas.LineTo(TTTBoard.Width-18, 18 * I);   // 가로선 긋기 , TTTBoard.Width 은 18x20개=360 입니다
      TTTBoard.Canvas.MoveTo(18 * I, 18);                      // 세로선의 시작점 지정
      TTTBoard.Canvas.LineTo(18 * I, TTTBoard.Width-18);   //세로선 긋기
    end;
end;

    

   여기서 실행하면 다음의 상태가 됩니다.

 

badukGoldLine.png

 

    

    5  이제 마지막으로  바둑판의 포석점을 그리기 위해서 ResetBoard 프로시쳐 안에 다음을 추가합니다.

         여기서 Canvas.Ellipse 이벤트를 사용하는데  4픽셀 크기의 8개의 포석점을 놓았습니다.

 

procedure TMainForm.ResetBoard;
begin

    ...

    //바둑판에 점을 그리는 과정

    TTTBoard.Canvas.Ellipse((18*4)-2 ,(18*4)-2,(18*4)+2,(18*4)+2);
    TTTBoard.Canvas.Ellipse((18*10)-2 ,(18*4)-2,(18*10)+2,(18*4)+2);
    TTTBoard.Canvas.Ellipse((18*16)-2 ,(18*4)-2,(18*16)+2,(18*4)+2);

    TTTBoard.Canvas.Ellipse((18*4)-2 ,(18*10)-2,(18*4)+2,(18*10)+2);
    TTTBoard.Canvas.Ellipse((18*10)-2 ,(18*10)-2,(18*10)+2,(18*10)+2);
    TTTBoard.Canvas.Ellipse((18*16)-2 ,(18*10)-2,(18*16)+2,(18*10)+2);

    TTTBoard.Canvas.Ellipse((18*4)-2 ,(18*16)-2,(18*4)+2,(18*16)+2);
    TTTBoard.Canvas.Ellipse((18*10)-2 ,(18*16)-2,(18*10)+2,(18*16)+2);
    TTTBoard.Canvas.Ellipse((18*16)-2 ,(18*16)-2,(18*16)+2,(18*16)+2);

end;

 

 

그럼 실행해보시면 이제 바둑판이 완성되었죠!   다음 세션에서는 바둑알을 놓아보도록 하겠습니다.

그럼 좋은 하루보내십시요.

 

ps. 오늘 세션 내용은 첨부파일 main.pas. 에서 확인 해보실수 있습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14455
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13091
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15598
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21120
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22363
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18005
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38287
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173798
374 [고객사례-설치도구, 델파이] RAD&Installer 관리자 2017.10.31 540
373 이 달의 기술자료 - 2017년 11월 file 험프리 2017.10.30 524
372 안면인식(Face Detection) 라이브러리(안드로이드, iOS) 험프리 2017.10.30 2408
371 TTS(Text-to-Speech) 라이브러리(윈도우, 맥OS, iOS, 안드로이드) [2] 험프리 2017.10.30 1320
370 [고객사례-생산성도구, 델파이] Change-Pro for Excel - 엑셀 변경항목 분석 프로그램 관리자 2017.10.27 653
369 RAD스튜디오 로드맵 - 2017년 9월 관리자 2017.10.23 573
368 이 달의 기술자료 - 2017년 10월 file 험프리 2017.09.26 549
367 [FMX] TListView 더보기 버튼 구현하기 험프리 2017.09.20 928
366 [FMX] 폼의 높이를 애니메이션으로 변경하기, 툴바를 끌어 폼 이동하기 험프리 2017.09.12 522
365 [업데이트][핫픽스][10.2.1] 상속된 VCL 폼의 디스플레이 배율 미적용 버그 해소 file 험프리 2017.09.11 461
364 이 달의 기술자료 - 2017년 09월 file 험프리 2017.09.01 536
363 [오픈소스] VerySimple.Lua file 험프리 2017.09.01 499
362 [오픈소스] Python for Delphi(P4D) [5] file 험프리 2017.09.01 1975
361 [FMX] 파이어몽키 메시징 시스템을 이용해 프로세스 내에서 메시지를 등록하고 구독하는 방법 file 험프리 2017.09.01 257
360 [VCL] 화면의 특정영역을 확대하는 “돋보기” 기능 구현방법 소개 file 험프리 2017.09.01 920
359 [FMX] 안드로이드 패키지 버전 구하기 튜토리얼 file 험프리 2017.09.01 939
358 [고객사례-원격연동, 모바일, 윈도우] Alpemix - 모바일과 PC 원격 연동 프로그램 관리자 2017.08.24 737
357 [발표자료] 현대화 vs. 소멸, 여러분의 프로젝트는 어디로 가고 있나요? 관리자 2017.08.17 329
356 [업데이트][10.2 도쿄][릴리즈 1] 10.2 도쿄 - 릴리즈 1이 출시되었습니다. 험프리 2017.08.09 1545
355 안드로이드에서 Firebase SDK 용 Google 로그인 사용하기 험프리 2017.08.04 609