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

 

이번 세션에서는 우리가 지난 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 15411
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13959
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16495
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22047
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23266
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18920
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39244
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174694
23 윈도우 & 리눅스에 RAD서버 손쉽게 배포하기 관리자 2021.04.12 503
22 RAD 서버 : 웹 속성을 폴더에 매핑하기 file 김원경 2020.03.17 1537
21 Swagger / YAML 및 RESTful API의 자체 문서화 김원경 2020.03.11 1599
20 RAD 서버에 Swagger UI 임베이딩 김원경 2020.03.09 531
19 TEMSDataSetResource 컴포넌트를 사용하여 RAD 서버의 마스터-디테일 데이터 구현하기 file 김원경 2020.03.06 407
18 RAD서버 도커(Docker) 기술 가이드 관리자 2020.02.26 423
17 RAD 서버 완벽 가이드 - 200페이지 분량의 전자책 file 험프리 2020.02.07 749
16 RAD서버에서 데이터를 JSON으로 어떻게 오픈할 수 있을까요? (JSONValue와 JSONWriter 활용하기) 관리자 2020.01.21 318
15 RAD서버 활용하기 (엠바카데로 아카데미 코스) 관리자 2020.01.06 283
14 [RAD서버] JSON 처리 단순화 컴포넌트 활용 - TEMSDataSetResource 험프리 2019.09.27 752
13 [10.3 리오][업데이트 2] 새로운 RAD서버 관리 콘솔 관리자 2019.08.28 558
12 리눅스에 RAD서버 배포하기 관리자 2019.07.11 459
11 기존 시스템을 웹(Web)으로 확장하기 위해 고려해야 할 두 가지 포인트 관리자 2018.06.11 1383
10 델파이/C++빌더 개발자를 위한 웹 개발 with ExtJS! 관리자 2018.06.04 954
9 RAD서버 솔루션 시리즈: 필드 서비스 애플리케이션 관리자 2018.06.01 623
8 Ext JS 활용과 앞으로의 방향 관리자 2018.05.24 1277
7 센차 ExtJS 웹 클라이언트 + RAD서버 10.2.3 관리자 2018.04.24 1437
6 [10.2 도쿄][릴리즈3] RAD서버에서 센차 Ext JS 지원 확장 관리자 2018.03.30 508
5 [발표자료] 2018022 마이크로서비스 아키텍처 구현과 활용 with RAD서버 file 관리자 2018.02.23 428
4 RAD서버로 개발은 확장하면서도 비용을 절감하는 방법 (RAD서버 라이선스 유형별 정리) file 관리자 2017.06.20 1633