현재까지 파이썬의 문법을 가볍게 알려 준 것이다.
게임 만들기 (간소화 게임)
-목표 : 1945 게임
1) 적기 : 상단 특정 영역에서 줄 상에 랜덤하게 나온다.
.아래로 내려온다
.특정 상단의 영역에서 램덤하게 생긴다.
2) 내 비행기 : 좌-우(제한),
.나의 컨트롤 : 방뱡 (좌우) , 발사 버튼(스페이스), 스페이스바 눌르고 있으면 계속 총알 발사
3) 액션
적기와 내 총알리 만나면 적기와 총알이 사라짐 (격추한 숫자 증가)
종료 시점 : 적기와 내가 총돌했을 때
4) 기타
파이썬 슛팅 게임 참조하지 말것.
Pygame(pygame.org) 활용 예정 ==> 외부 라이브러리
유니티 : 작은게임(모바일, 배우기 쉽다)
.C#
.국내에서 게임 사례가 많고 안정적이다.
.그래픽의 표현이 쉽지 않음
.VR/AR, 산업용 가벼운 시뮬레이션(부두의 타워크레인 원격 조정용)
언리얼 : 대작용,
.c++, blueprint, verse
.무료
.(자료는 적지만 랜더링 기술이 높아 표현력이 좋다, 프러그인이 많아 졌다. 콘솔게임에 특화)
.건물이나 자동차 디스플레이 화면을 언리얼로 만듦
.그래픽 기본값이 고퀄리티다
-FPS(Frames per sec) : 초당 처리 Frame(이미지)의 갯수 (30~133 Hz)
전체적인 구성
1. 초기화 -> 변수의 구성
2. 게임 화면 설정 -> 고정값
3. 게임 내에서의 설정 -> 변수로 처리
4. 메인 이벤트
4-1. FPS(Frames per Sec) 설정
4-2. 입력(키보드, 마우스)의 감지
4-3. 입력, 시간에 따른 변화
4-4. 전사작업(그리기)
4-5. 업데이트
5. 종료(x버튼을 클릭해서 종료, game over 종료)
< 코딩 화면 >
import pygame
pygame.init()
sx = 400 #스크린의 가로길이(x)
sy = 900 #스크린의 세로길이(x)
size = [sx, sy]
screen = pygame.display.set_mode(size)
title = "pyGameExample"
pygame.display.set_caption(title)
clock = pygame.time.Clock()
color1 = (145, 222, 164)
color2 = (203, 145, 222)
k = 0
heroImg = pygame.image.load(r'C:\pj\pyGame\hero.png')
heroImg = pygame.transform.scale_by(heroImg, 0.2)
system_exit = 0
while system_exit == 0:
# 4-1. FPS(Frames per Sec) 설정
clock.tick(2)
# 4-2. 입력(키보드, 마우스)의 감지
for event in pygame.event.get():
if event.type == pygame.QUIT:
system_exit = 1
# # 4-3. 입력, 시간에 따른 변화
# screen.blit(hero1Img,(100,200))
# 4-4. 전사작업(그리기)
if k % 2 == 0:
screen.fill(color1)
else:
screen.fill(color2)
k += 1
# 4-3. 입력, 시간에 따른 변화
hero_width = heroImg.get_width() #비행기 이미지의 가로 크기값
center_x = (sx/2) - (hero_width / 2) #가로의 중앙의 위치값 계산
screen.blit(heroImg,(center_x, 800)) #비행기의 정위치 표현 코드
# 4-5. 업데이트
pygame.display.flip()
pygame.quit()
위 현재까지의 프로그램의 코드를 설명하면, 'Pygame'을 사용해 창을 띄우고, 배경색을 주기적으로 변경하면서 정중앙 하단에 크기를 조절한 비행기(hero) 이미지를 표시하는 기본 구조입니다. 라인별 상세 분석은 다음과 같습니다.
1. 모듈 임포트 및 초기화
import pygame: Pygame 라이브러리를 불러와 관련 함수 및 객체를 사용할 수 있도록 준비합니다.pygame.init(): Pygame의 내부 모듈들(디스플레이, 사운드 등)을 모두 초기화합니다.2. 게임 화면 및 창 설정
sx = 400: 생성할 게임 창의 가로(X축) 해상도를 400픽셀로 설정합니다.sy = 900: 생성할 게임 창의 세로(Y축) 해상도를 900픽셀로 설정합니다.size = [sx, sy]: 가로와 세로 크기를 리스트로 묶습니다.screen = pygame.display.set_mode(size): 설정한 크기(400x900)로 실제 게임 디스플레이 창(Surface)을 생성하여 screen 변수에 할당합니다.title = "pyGameExample": 창 상단에 표시될 제목 문자열을 정의합니다.pygame.display.set_caption(title): 윈도우 타이틀바의 제목을 "pyGameExample"로 적용합니다.3. 게임 리소스 및 상태 변수 정의
clock = pygame.time.Clock(): 초당 프레임 수(FPS)를 제어하기 위한 시계 객체를 생성합니다.color1 = (145, 222, 164): RGB 값으로 민트/연두 계열 배경색을 정의합니다.color2 = (203, 145, 222): RGB 값으로 연보라 계열 배경색을 정의합니다.k = 0: 프레임마다 배경색을 번갈아 칠하기 위해 사용할 카운트 변수를 초기화합니다.heroImg = pygame.image.load(r'C:\pj\pyGame\hero.png'): 지정된 경로에서 비행기 이미지 파일을 읽어와 Surface 객체로 로드합니다. (r은 백슬래시를 그대로 처리하는 raw string 표기법)heroImg = pygame.transform.scale_by(heroImg, 0.2): 원본 이미지의 가로·세로 크기를 0.2배(20% 크기)로 축소합니다. (원이미지 사이지의 20%로 줄이는 연산을 실행 됩니다)4. 메인 게임 루프
system_exit = 0: 게임 종료 여부를 판단하는 플래그 변수입니다.while system_exit == 0:: 게임이 종료될 때까지 프레임 단위로 반복 실행하는 메인 루프입니다.clock.tick(2): 초당 2프레임(1초에 2번 루프 실행)으로 속도를 제한합니다. (배경이 0.5초마다 깜빡임)for event in pygame.event.get():: OS에서 전달된 사용자 입력(키보드, 마우스, 창 닫기 등) 이벤트들을 순회합니다.if event.type == pygame.QUIT:: 사용자가 창 닫기 버튼(X)을 눌렀는지 감지합니다.system_exit = 1: 종료 조건을 만족시켜 while 반복문을 탈출하도록 만듭니다.if k % 2 == 0:: k가 짝수인지 확인합니다.screen.fill(color1): 짝수일 경우 화면 전체를 color1으로 채웁니다.else:: k가 홀수인 경우입니다.screen.fill(color2): 홀수일 경우 화면 전체를 color2로 채웁니다.k += 1: 매 프레임마다 k를 1씩 증가시켜 다음 프레임에 색상이 전환되도록 합니다.hero_width = heroImg.get_width(): 축소된 비행기 이미지의 실제 가로 픽셀 너비를 구합니다.center_x = (sx/2) - (hero_width / 2): 비행기의 좌측 모서리가 아닌 '이미지 중심'이 화면 가로 중앙(200픽셀)에 위치하도록 X 좌표를 계산합니다.screen.blit(heroImg,(center_x, 800)): 계산된 가로 중앙 좌표와 세로 Y=800 위치에 비행기 이미지를 화면 Surface 위에 그립니다.pygame.display.flip(): 백버퍼에 그려진 전체 화면(배경 및 비행기)을 실제 모니터 창에 반영합니다.5. 프로그램 종료
pygame.quit(): while 문을 빠져나온 후 Pygame 관련 리소스를 정리하고 완전히 종료합니다.