티스토리 뷰
반응형
모든 강의 자료 : www.codingnow.co.kr/
파이썬 pygame을 사용하여 간단한 게임 만들기 프로젝트를 진행중입니다.
게임을 만들어 보면서 지루 할 수 있는 프로그래밍을 재미있게 공부합니다.
이번에는 주사위 던지기 게임입니다.
여기서는 기본적으로 조건문과 반복문, 함수를 사용하게 되며
class 를 사용하여 중복되는 코드를 간결화 및 재사용 법을 공부할 수 있습니다.
또한 프로그래밍의 흐름을 파악하고 연습 할 수 있습니다.
자세한 설명은 첨부된 동영상을 참고해주세요!!
이미지 출처 : https://pixabay.com/
import pygame
from pygame.locals import *
import random
pygame.init()
pygame.display.set_caption("codingnow.co.kr")
###################################################################################
def eventProcess():
global isClick, isActive
for event in pygame.event.get():
if (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE)\
or event.type == QUIT:
isActive = False
if (event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE):
if isClick == 0:
isClick = 1
###################################################################################
def clickProcess():
global isClick, diceCurr, yCurr
if isClick == 1: # space bar & 위로 던질때
yCurr -= 1
if yCurr <= ThrowEndY:
isClick = 2
elif isClick == 2: # 떨어질때
yCurr += 1
if yCurr >= ThrowStartY: # 바닥에 내려왔을때
isClick = 0
else: # 완료 및 아무것도 안할때
setText()
yCurr = ThrowStartY
dices[diceCurr].rotate(angle=0)
if isClick: # 던져지고 있을때
diceCurr = random.randint(0, len(dices)-1)
dices[diceCurr].y = yCurr
dices[diceCurr].rotate()
dices[diceCurr].draw()
###################################################################################
def setText():
mFont = pygame.font.SysFont("arial", 40)
mtext = mFont.render(f'Press the space', True, 'white')
tRec = mtext.get_rect()
tRec.centerx = SCREEN_WIDTH/2
tRec.centery = tRec.height + 40
screen.blit(mtext, tRec)
###################################################################################
class Dice():
def __init__(self, idx, y):
self.image = pygame.image.load(f"{idx}.png")
self.image = pygame.transform.scale(self.image, (80, 80))
self.x = SCREEN_WIDTH/2-(self.image.get_width()/2)
self.y = y
self.angle = 0
self.rotated_image = pygame.transform.rotate(self.image, self.angle)
def rotate(self, angle=None):
if angle != None:
self.angle = 0
else:
self.angle = random.randint(0, 360)
self.rotated_image = pygame.transform.rotate(self.image, self.angle)
def draw(self):
screen.blit(self.rotated_image, (self.x, self.y))
###################################################################################
isClick = False
isActive = True
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 400
ThrowStartY = SCREEN_HEIGHT - 150
ThrowEndY = 100
yCurr = SCREEN_HEIGHT/2
diceCurr = 0
clock = pygame.time.Clock()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
bg = pygame.image.load('bg.png')
bg = pygame.transform.scale(bg, (SCREEN_WIDTH, SCREEN_HEIGHT))
dices = [Dice(i, ThrowStartY) for i in range(1, 6+1)]
while(isActive):
screen.fill((255, 255, 255))
screen.blit(bg, (10, 0))
eventProcess()
clickProcess()
pygame.display.update()
clock.tick(200)
반응형
'파이썬 강의' 카테고리의 다른 글
파이썬 기초 활용편 #게임만들기 프로젝트 5탄 #화살쏘기 (멧돼지잡기)게임 (0) | 2021.03.04 |
---|---|
파이썬 기초 활용편 #게임만들기 프로젝트 4탄 #추억의 DDR 게임 (0) | 2021.02.26 |
파이썬 기초 활용편 #게임만들기 프로젝트 2탄 #가위바위보 (0) | 2021.02.17 |
파이썬 기초 활용편 pygame을 사용하여 삼각형별과 다이아몬드별 출력하기 (0) | 2021.02.15 |
파이썬 기초 활용 :: 유성피하기 게임 만들기 #우주선에서 미사일발사 추가하기 (0) | 2021.01.29 |