Skip to content

NJ0428/SpinBall

Repository files navigation

SpinBall 🎯 (Evolved)

Python과 Pygame으로 만든 숫자 블록 브레이커 게임입니다. 전통적인 아카노이드와 달리, 한 번에 여러 개의 공을 발사하여 숫자가 적힌 블록들을 파괴하는 퍼즐-캐주얼 게임입니다.

주요 특징

  • 🎯 마우스 조준 시스템: 마우스로 발사 각도를 정밀하게 조정
  • 🏀 다중 공 발사: 라운드가 진행될수록 더 많은 공을 발사
  • 🔢 숫자 블록: 각 블록에 표시된 숫자만큼 맞아야 파괴됨
  • 🎨 체력 기반 색상: 블록 체력에 따라 색상이 변화 (빨강→주황→노랑→초록→파랑)
  • 📈 무한 라운드: 계속해서 도전할 수 있는 라운드 시스템
  • 물리 시뮬레이션: 현실적인 공의 움직임과 충돌
  • 🏆 랭킹 시스템: SQLite 데이터베이스를 사용하여 상위 10명의 점수를 기록하고 보여주는 랭킹 보드
  • 🌐 다국어 지원: 한국어와 영어를 지원하며, 설정 메뉴에서 변경 가능
  • ⚙️ 설정 메뉴: 공 속도, 사운드, 난이도, 언어 등 다양한 게임 옵션 조정
  • 네온 스타일 UI: 상점과 주요 화면에 적용된 세련된 네온 디자인

설치 및 실행

1. 의존성 설치

pip install -r requirements.txt

2. 게임 실행

python main.py

조작법

  • 마우스 움직임: 발사 각도 조정 (15도~165도)
  • 마우스 클릭: 공 발사 (모든 공이 떨어진 후에만 가능)
  • R 키: 게임 재시작 (게임 오버 시)
  • ESC 키: 타이틀 화면으로 돌아가기

게임 규칙

  1. 블록 파괴: 블록에 표시된 숫자만큼 공이 맞아야 블록이 사라집니다
  2. 라운드 진행: 모든 공이 바닥에 떨어지면 다음 라운드로 진행
  3. 블록 이동: 매 라운드마다 기존 블록들이 한 줄씩 아래로 내려옵니다
  4. 공 개수 증가: 라운드가 지날수록 발사할 수 있는 공의 개수가 증가
  5. 게임 오버: 블록이 발사 영역(바닥)에 닿으면 게임 종료
  6. 점수: 블록을 파괴할 때마다 10점 획득

상점 및 아이템 시스템

  • 라운드 종료 후 상점이 등장하며, 점수(크레딧)로 아이템을 구매할 수 있습니다.
  • 구매한 아이템은 해당 라운드에서 1, 2, 3번 키로 사용할 수 있습니다.
  • 아이템 종류:
    • 파워볼: 벽돌을 2배로 깸 (1번 키)
    • 스피드볼: 공 속도 2배 (2번 키)
    • 매그넘볼: 공이 1개 남았을 때 모든 블록 제거 (3번 키)
    • 블록 삭제: 모든 블록 즉시 삭제 (구매 즉시 발동)
  • 아이템 효과는 한 라운드 동안만 적용됩니다.

파일 구조

  • main.py: 게임 실행 파일 및 메인 루프
  • game_objects.py: 게임 오브젝트 클래스 (Ball, Block, Game)
  • shop.py: 인게임 상점 UI 및 로직 관리
  • database.py: SQLite를 사용한 점수 랭킹 데이터베이스 관리
  • language.py: 다국어 텍스트 지원
  • constants.py: 게임 설정 상수 (화면 크기, 색상, 아이템 정보 등)
  • requirements.txt: 필요한 라이브러리 목록
  • achievements.json: 도전과제 데이터
  • stats.json: 플레이어 통계 데이터
  • images/: 게임 아이콘 등 이미지 애셋

무한히 계속되는 도전을 즐기세요! 🚀

About

This is a brick-breaking game that I developed and programmed in Python.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages