터미널의 체스판 만들기

LinuxBeginner
지금 연습하기

소개

이 프로젝트에서는 Bash 스크립팅을 사용하여 체스판을 만드는 방법을 배웁니다. 이 프로젝트를 완료하면 중첩 루프, 색상 출력 및 셸 스크립팅 사용 경험을 쌓게 될 것입니다.

🎯 목표

이 프로젝트에서 배우게 될 내용:

  • 체스판 제작을 위한 환경 설정 방법
  • 사용자에게 체스판 크기를 요청하는 방법
  • 중첩 루프를 사용하여 검은색과 흰색 칸이 번갈아 나타나는 체스판을 출력하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다.

  • Bash 스크립팅을 사용하여 시각적인 체스판 생성
  • 중첩 루프를 활용하여 격자 형태의 구조 생성
  • 출력의 시각적 매력을 높이기 위해 색상 출력 구현
  • 사용자 입력을 요청하고 해당 입력을 사용하여 원하는 출력 생성
이것은 학습 및 실습에 도움이 되는 단계별 지침을 제공하는 가이드형 실습 (Guided Lab) 입니다. 각 단계를 완료하고 실습 경험을 얻으려면 지침을 주의 깊게 따르십시오. 과거 데이터에 따르면 이 실습은 초급 수준이며 완료율은 91%입니다. 학습자들로부터 96%의 긍정적인 평가를 받았습니다.

환경 설정

이 단계에서는 체스판 제작을 위한 환경을 설정합니다.

  1. 텍스트 편집기를 열고 chessBoard.sh라는 새 파일을 만듭니다.
  2. 파일 맨 처음에 다음 shebang 줄을 추가합니다.
#!/bin/bash

이 줄은 시스템에 스크립트 실행을 위해 Bash 셸을 사용하도록 지시합니다.

✨ 솔루션 확인 및 연습

사용자에게 보드 크기 요청하기

이 단계에서는 사용자에게 체스판 크기를 입력하도록 요청합니다.

  1. 다음 코드를 스크립트에 추가합니다.
echo -e "\e[44m[Input]\e[0m Enter the size of the chess board: "
read value

이 코드는 사용자에게 체스판 크기를 입력하라는 프롬프트를 표시하고 사용자의 입력을 value 변수에 저장합니다.

✨ 솔루션 확인 및 연습

체스판 출력하기

이 단계에서는 중첩 루프를 사용하여 체스판을 출력합니다.

  1. 다음 코드를 스크립트에 추가합니다.
echo -e "\n\n\e[42m[OUTPUT]\e[0m REQUESTED CHESS-BOARD \e[42m[OUTPUT]\e[0m"

for ((row = 1; row <= value; row++)); do
  for ((col = 1; col <= value; col++)); do
    sumOfRowAndCol=$(($(($row + $col)) % 2))
    if [ $sumOfRowAndCol -eq 0 ]; then
      echo -e -n "\033[47m" " "
    else
      echo -e -n "\033[40m" " "
    fi
  done
  echo -ne "\033[0m" " "
  echo
done

echo -n -e "\033[0m"

이 코드는 중첩 루프를 사용하여 체스판의 행과 열을 반복합니다. 각 칸에 대해 행과 열 인덱스의 합을 계산하고, 이 값을 사용하여 칸이 검은색이어야 할지 흰색이어야 할지를 결정합니다. echo 명령어는 각 칸에 적절한 색상을 출력하고, 각 행이 끝난 후 색상을 재설정하는 데 사용됩니다.

✨ 솔루션 확인 및 연습

스크립트 실행하기

이 단계에서는 스크립트를 실행하여 체스판을 생성합니다.

  1. chessBoard.sh 파일을 저장합니다.
  2. 터미널을 열고 스크립트를 저장한 디렉터리로 이동합니다.
  3. 다음 명령을 실행하여 스크립트를 실행 가능하게 만듭니다.
chmod +x chessBoard.sh
  1. 다음 명령을 실행하여 스크립트를 실행합니다.
./chessBoard.sh

스크립트가 체스판 크기를 묻는 프롬프트를 표시한 다음 터미널에 체스판을 출력합니다.

축하합니다! Bash 스크립팅을 사용하여 체스판을 성공적으로 만들었습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 실습을 연습하여 기술을 향상시킬 수 있습니다.