비디오: [프로세싱] 파리 에펠탑 코딩그림_사각형 그리기(Drawing the Eiffel Tower on Processing code) 2024
루비에서는 ASCII 아트를 사용하여 화면에 직사각형을 만들 수 있습니다. 패턴으로 채워진 종이에 직사각형을 그리려면 어떻게해야할까요? 먼저 사각형의 외곽선을 그릴 수 있습니다. 그러면 내부를 채색 할 수 있습니다.
하지만 루비에있는 프로그램의 경우, 한 번에 한 줄씩 위에서 아래로 모양을 그리는 것이 좋습니다. 어떻게 그 방법을 설명 하시겠습니까? 이렇게:
-
첫 번째 줄의 바깥 쪽 (또는 가장자리) 패턴을 사용하여 사각형의 꼭대기를 그립니다.
-
직사각형의 측면과 내부를 구성하는 각 선에 대해 왼쪽 모서리, 중간 모퉁이 및 오른쪽 모서리를 그립니다.
사각형의 아래쪽을 그릴 때까지이 단계를 반복하십시오.
-
꼭지점을 그린 직사각형의 아래쪽을 그립니다.
직사각형을 위에서 아래로 한 줄씩 그리는 알고리즘입니다.
알고리즘 은 작업 또는 계산을 수행하기 위해 수행하는 일련의 단계입니다. 이 경우 시퀀스를 위에서 아래로 한 줄씩 스캔하여 사각형을 그립니다.
알고리즘의 Ruby 버전은 영어 버전과 매우 유사합니다:
-
상황을 더 쉽게 볼 수 있도록 두 가지 변수를 설정하십시오.
height = shape_size width = shape_size
-
그리기 할 그림의 높이와 너비 모두로 도형 크기에 대한 사용자의 선택을 사용합니다. 각 행에 대해 코드를 반복하는 루프를 설정하십시오 (즉, 높이 번 실행하려면 드로잉 코드가 필요합니다.):
1. 최대 (높이) 할 | 행 | # 드로잉 코드는 여기에 있습니다.
루프는 코드를 몇 번이나 반복 할 수있는 강력한 방법입니다 (또는 무한 반복 횟수). 루비는 루프를 프로그래밍하는 몇 가지 방법이 있습니다. upto 방법은 시작 번호에서 최종 번호까지 계산하는 쉬운 방법입니다. 직사각형의 경우 첫 번째 행은 1부터 시작하여 높이로 표시된 숫자에 도달하면 계산을 마칩니다.
-
알고리즘이 작동하려면 프로그램에서 인쇄 할 행을 확인해야합니다. 첫 번째 행, 중간 행 및 마지막 행의 세 가지 경우가 있습니다. 루프 중간에 첫 번째 행의 경우에 다음을 추가하십시오.
row == 1 puts outside_letter * width end
행 변수가 1이면 프로그램은 puts를 사용하여 outside_letter 너비와 동일한 횟수.
조건이 true 또는 false인지 확인하려는 경우 if 문을 사용합니다.루비의 == 기호는 질문에 "왼쪽에있는 것은 == 기호의 오른쪽에있는 것과 같습니까? "그렇다면 Ruby는 다른 조건이나 끝 키워드까지 코드 행을 실행합니다.
-
다음으로이 행이 마지막 행인지 확인하기 위해 추가하십시오. elsif 키워드는 다른 조건 테스트를 시작하고 이전 종료 키워드 바로 앞에 배치합니다. 그건 그렇고 철자법 실수는 아닙니다. Ruby에는 "else if"라는 재미있는 방법이 있습니다! 모든 것은 다음과 같이 보일 것입니다:
만약 row == 1이면 outer_letter를 넣습니다. width elsif row == height puts outer_letter * width end
-
마지막으로 중간에있는 모든 행의 표시를 처리해야합니다. Ruby의 else 키워드를 사용하여 하나의 마지막 조건을 추가하십시오. 이 코드는 end 키워드 바로 앞에 있습니다. 여기에 루비 블록 전체가 있습니다:
행 == 1 인 경우 outer_letter * 너비 elsif 행 == 높이 puts outer_letter * 너비 else 중간 = inside_letter * (너비 -2) "# {outside_letter} # {middle} # { outside_letter} "end
중간 케이스는 복잡해 보입니다. 뭐하는거야? 알고리즘에 따르면 왼쪽과 오른쪽 모서리와 모든 것을 중간에 그려야합니다.
중간 변수는 직사각형의 중심을 나타내는 문자열을 계산합니다. 왼쪽 모서리 문자와 오른쪽 모서리 문자 중 하나를 제거하면 중간의 최종 너비는 전체 너비에서 2 문자를 뺀 것입니다.
마지막 puts 문은 문자열 처리를 사용하여 결합 된 행을 만듭니다.
-
프로그램을 실행하고 오류가 있는지 확인하십시오. 여기에 보이는 것과 비슷한 것을 얻을 수 있습니까? Fixnum과 String 비교가 실패했다는 오류가 발생하면 Ruby가 shape_size 내부의 값을 숫자로 사용하는 데 어려움을 겪었습니다.
루비는 숫자에 문자열을 사용하는 방법을 모릅니다.숫자를 입력하면 왜 문제가됩니까? 자, 입력에서 읽음을 얻지 만 입력 한 모든 문자를 문자열로 읽습니다. 루비가 문자열을 숫자로 변환하는 것을 도와야합니다.
-
to_i 메서드를 사용하도록 높이 및 너비 변수를 설정하는 두 줄을 변경합니다. 즉,이 변수의 내용을 정수 (숫자)로 변환합니다.
height = shape_size. to_i width = shape_size. to_i
코드를 다시 실행하십시오. 성공!
세계에서 가장 흥미로운 직사각형입니까?