Skip to content

Instantly share code, notes, and snippets.

@HelloWorld017
Last active November 28, 2017 14:07
Show Gist options
  • Save HelloWorld017/1cc849f099ec8be475eb91d6f97014fb to your computer and use it in GitHub Desktop.
Save HelloWorld017/1cc849f099ec8be475eb91d6f97014fb to your computer and use it in GitHub Desktop.
빛나리 36호 파이썬 배운 것을 정리해보자!

파이썬 정리

  • 모르는 것이 있으면 언제나 질문 가능

주석

# 이 이후로는 처리하지 않음

조건문

if 조건:
	# 조건일 때 할 일
elif 다른 조건:
	# 조건은 아니고 다른조건일 때 할 일
else:
	# 조건도 아니고 다른조건도 아닐 때 할 일

while 반복

while 조건:
	# 조건을 만족시킬 때까지 계속 함

for 반복

for 변수명 in range(반복할 횟수):
	print(변수명) #0, 1, 2, 3, 4, ... 반복할 횟수 - 1

	# 안의 내용을 반복할 횟수번 반복함

리스트 안에 있는 모든 값을 순환하고 싶다면 이렇게 하면 된다.

리스트 = [1, 3, 5, 7, 9]
for 변수명 in 리스트:
	print(변수명) #1, 3, 5, 7, 9를 차례로 출력

	# 리스트 안의 내용을 반복함

함수정의

def 함수이름(값1, 값2, 등등...):
	print(값1, 값2)

	return 반환할  # 값을 반환할 일이 있을 경우

함수호출

함수이름(값1, 값2, 등등...)

클래스 정의

class 클래스이름(object):
	def __init__(self):
		# 객체를 찍어낼 때 실행됨
		self. = 1 # 객체의 속성을 설정하면 기본값처럼 쓸 수 있음

	def 메소드이름(self, 값1, 값2, 등등...):
		# 메소드 내용
		print(self.) # 객체의 속성 가져오기
		return 반환할  # 값을 반환할 일이 있을 경우

클래스로 객체 찍어내기

객체 = 클래스이름()

객체 속성 바꾸기

객체. = 30

객체 메소드 호출하기

객체.메소드이름(값1, 값2, 등등...)

게임 개발 시작해보기

파이썬을 모른다면

https://www.codecademy.com/ko/tracks/python-ko

혹시나 리스트를 쓸 만한 게임이면 리스트를 배울 것! (여러 오브젝트 관리 등)
파일 입출력할 거 있으면 파일 입출력도 배우기!

다 배우지 않고 필요한 부분은 찾아서 쓰는 것도 괜찮음

pygame 설치

32비트는 여기에서, 64비트는 여기에서 받을 수 있다.

명령프롬프트 (win+R -> cmd -> 엔터) 열고 python -m pip install --upgrade pip 친 후 엔터 이후 pip3 install "[다운받은 파일 경로]" 치고 엔터

(예시: pip3 install "C:\Users\Khinenw\Downloads\pygame-1.9.3-cp35-cp35m-win_amd64.whl")

pyCharm에서 간단한 거 만들어보기

추후에 추가 할 예정 미리 밑에 게임 코드를 살펴 보면 편할 것이다.

# 게임 개발 예제 코드
# 플레이어 1은 D 키를 누르면 앞으로 감.
# 플레이어 2는 오른쪽 키를 누르면 앞으로 감.
# 먼저 끝에 닿는 사람이 승리
# 이 코드에서 NanumSquareR.ttf 라는 폰트를 사용했기 때문에 없을 경우 오류가 뜰 수 있음.
# http://cloud.khinenw.tk/index.php/s/m6xOCTNrkmPQ2F1에 zip 파일을 올려뒀으니 이걸 다운받아서 pyCharm으로 실행해보면 오류가 안 뜰 것임.
import sys
import pygame
from pygame.locals import *
# pygame을 초기화함
pygame.init()
# 전체화면으로 실행할 경우:
# 설명: 1280, 720은 해상도
# DOUBLEBUF 는 버퍼를 이용하여 화면의 깜빡임을 없애는 것을 뜻함 (https://namu.wiki/w/더블%20버퍼링)
# FULLSCREEN은 전체화면을 뜻함
# HWSURFACE는 전체화면에서만 사용가능하고, 하드웨어 가속으로 속도를 더 빠르게 하는 것을 뜻함
# screen = pygame.display.set_mode((1280, 720), FULLSCREEN | DOUBLEBUF | HWSURFACE)
# 전체화면에서는 화면에 글자를 띄울 필요가 없음
# =====================================================================
# 창모드로 실행할 경우:
screen = pygame.display.set_mode((1280, 720), DOUBLEBUF)
pygame.display.set_caption('Hello World!') # 화면 상단 창 프레임에 뜨는 제목
# FPS 맞추기
# FPS (초당 프레임 수)
FPS = 30 # 1초에 30번 화면을 그림
# FPS를 맞춰줄 시계 생성하기
clock = pygame.time.Clock()
# 글자 쓰기 함수를 구현해보자
def write_text(x, y, text):
# 글자 색 지정
# R, G, B 가 255, 255, 255 : 흰색
color = (255, 255, 255)
# 폰트 지정
# 현재 폴더의 NanumSquareR.ttf 폰트, 글자 크기: 32
font = pygame.font.Font('NanumSquareR.ttf', 32)
# 텍스트 생성
# text: 쓸 글자, True: 부드럽게 나오게 만들기, color: 색상
textSurface = font.render(text, True, color)
# 텍스트의 크기와 위치 가져오기
textRect = textSurface.get_rect()
# 텍스트 출력 위치의 중심을 x, y로 설정하기
textRect.center = (x, y)
# 화면에 글자를 출력하기 (텍스트, 텍스트 크기와 위치)
screen.blit(textSurface, textRect)
# 플레이어를 정의해보자
class Player:
def __init__(self):
# 화면 제일 왼쪽 중간에서 생성됨
self.x = 0
self.y = 360
def move(self, x, y):
# x와 y만큼 이동
self.x = self.x + x
self.y = self.y + y
# 두 개의 플레이어를 만들기 (2인 플레이)
# 각 플레이어 별로 Y 좌표를 다르게 해둠
player1 = Player()
player1.y = 300
player2 = Player()
player2.y = 420
# 아래의 내용을 계속 반복함 (게임의 실제 구현과 진행)
while True:
# 화면을 background 색으로 지워버림
# (0, 0, 0) = R: 0, G: 0, B: 0 = 검은색
background = (0, 0, 0)
screen.fill(background)
for event in pygame.event.get():
# 이벤트 (마우스 입력, 키보드 입력 등) 를 처리함
if event.type == QUIT:
# 게임을 종료하는 이벤트 (윈도우의 닫기 버튼)
# pygame을 끄고
pygame.quit()
# 윈도우를 닫는다
sys.exit()
if event.type == KEYDOWN:
# 키보드 이벤트, 키가 눌리기 시작했을 때
if event.key == K_d:
# 키보드의 D를 누르면
# 플레이어 1을 X축 방향으로 10만큼 움직이기
player1.move(10, 0)
if event.key == K_RIGHT:
# 키보드의 오른쪽 방향키를 누르면
# 플레이어 2를 X축 방향으로 10만큼 움직이기
player2.move(10, 0)
# 나머지 구현은 숙제로 한번 해보는 것을 추천함
# ===========================================
# 여기서부터는 승리 조건을 설정함
# 이 외에도 다른 게임의 진행이나 게임의 규칙 등을 처리함
if player1.x >= 1280:
# 플레이어 1이 먼저 제일 왼쪽까지 이동하면
write_text(640, 320, "플레이어 1 승리!")
elif player2.x >= 1280:
# 플레이어 2가 먼저 제일 왼쪽까지 이동하면
write_text(640, 320, "플레이어 2 승리!")
# ===========================================
# 여기에서는 실제로 게임 내용을 화면에 그림
# player1 위치에 반지름이 20인 원을 그림
# (0, 0, 255): 색깔, R=0, G=0, B=255 : 파란색
# (player1.x, player1.y): 원의 중심 좌표 (x, y)
# 20: 반지름 크기 20
pygame.draw.circle(screen, (0, 0, 255), (player1.x, player1.y), 20)
# 똑같이 player2 위치에 빨간 원을 그림
pygame.draw.circle(screen, (255, 0, 0), (player2.x, player2.y), 20)
# 그린 것을 토대로 화면을 업데이트 해주기
pygame.display.flip()
# FPS를 맞춤
clock.tick(FPS)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment