python 프로그램 비교분석
Prompt
당신은 파이썬 게임 개발 전문가입니다. pygame 라이브러리를 사용하여 단 하나의 파이썬 파일(single file)로 실행 가능한 최고 퀄리티의 '블록 블러스트(Block Blast)' 게임 코드를 작성해 주세요. 외부 이미지나 오디오 에셋을 전혀 사용하지 않고 오직 코드로만(도형 그리기 등) 모든 그래픽을 렌더링해야 합니다. 복사 후 붙여넣기만 하면 즉시 완벽하게 실행되어야 합니다. 다음의 세부 요구사항을 반드시 반영해 주세요: 게임 기본 규칙 및 로직 보드 크기: 8x8 그리드. 블록 제공: 화면 하단에 각기 다른 모양의 테트로미노(Tetromino) 블록 3개가 무작위로 생성되어 대기합니다. 조작: 마우스로 블록을 드래그 앤 드롭하여 보드의 빈 공간에 배치합니다. 점수 획득: 가로 또는 세로 줄이 꽉 차면 해당 줄의 블록이 사라지며 점수가 오릅니다. 한 번에 여러 줄을 없애면 콤보 보너스 점수가 부여됩니다. 블록 리필: 하단에 대기 중인 3개의 블록을 모두 사용해야만 새로운 블록 3개가 다시 생성됩니다. 게임 오버: 현재 하단에 남은 어떤 블록도 보드에 놓을 공간이 없다면 'Game Over' 텍스트와 함께 최종 점수를 화면에 띄우고 게임을 멈춥니다. 다시 시작(Restart) 버튼을 누르면 초기화됩니다. 고퀄리티 UI 및 UX 색상 테마: 다크 모드 스타일의 배경과 채도가 높은 파스텔톤 플랫 디자인 색상으로 블록을 렌더링하여 모던한 느낌을 줍니다. 드래그 보정: 블록을 클릭하여 드래그할 때, 마우스 포인터가 블록의 중앙 영역을 잡도록 오프셋을 자연스럽게 조정합니다. 고스트(미리보기) 효과: 드래그 중인 블록이 보드 위로 올라갔을 때, 현재 마우스 위치를 기준으로 놓일 자리를 계산하여 반투명한 색상으로 미리 보여줍니다. (게임의 퀄리티를 위해 매우 중요합니다) 원위치 복귀: 보드 밖이나 이미 블록이 있는 등 놓을 수 없는 위치에 드롭하면, 블록이 원래 있던 하단 대기열 위치로 자연스럽게 돌아가야 합니다. 코드 아키텍처 (OOP) 유지보수와 가독성을 위해 객체 지향 프로그래밍을 적용하세요. Game, Board, Block 등의 클래스로 역할을 명확히 분리해야 합니다. 각 함수와 클래스의 핵심 로직(특히 드래그 앤 드롭 충돌 판정과 줄 삭제 판정 부분)에 상세한 주석을 달아주세요. 프레임 제한(FPS 60)을 두어 게임이 과도한 리소스를 차지하지 않도록 최적화하세요.
Response not available