파이게임 타이핑 게임
다음은 파이게임으로 제작된 간단한 타이핑 게임입니다. 화면에 나타나는 알파벳을 빠르게 입력하여 점수를 얻는 게임입니다.
import pygame.freetype
import sys
import random
pygame.init()
화면 = pygame.display.set_mode((500, 400))
pygame.display.set_caption('타이핑 게임')
글꼴 = pygame.freetype.Font(None, 60)
글꼴_작은 = pygame.freetype.Font(None, 30)
게임상태 = 0
x좌표 = [50, 140, 230, 320, 410]
문자들 = []
시간 = 0
점수 = 0
while True:
pygame.time.delay(20)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if 게임상태 == 1:
for 문자 in 문자들:
if ord(문자[0]) == event.key - 32:
문자들.remove(문자)
점수 += 1
elif event.type == pygame.MOUSEBUTTONDOWN:
if 게임상태 == 0:
게임상태 = 1
for i in range(0, 5):
문자들.append([chr(random.randint(65, 80)), x좌표[i], 50])
화면.fill((0, 0, 0))
if 게임상태 == 0:
글꼴.render_to(화면, [180, 250], "시작", fgcolor=(255, 255, 255))
if 게임상태 == 1:
시간 += 1
if 시간 == 100:
시간 = 0
for i in range(0, 5):
문자들.append([chr(random.randint(65, 80)), x좌표[i], 50])
for 문자 in 문자들:
글꼴.render_to(화면, [문자[1], 문자[2]], 문자[0], fgcolor=(255, 255, 255))
for i in range(0, len(문자들)):
문자들[i][2] += 1
if 문자들[i][2] >= 400:
게임상태 = 2
글꼴_작은.render_to(화면, [5, 5], "점수: %d" % 점수, fgcolor=(255, 255, 255))
if 게임상태 == 2:
글꼴.render_to(화면, [100, 100], "게임 오버", fgcolor=(255, 255, 255))
글꼴.render_to(화면, [100, 250], "점수: %d" % 점수, fgcolor=(255, 255, 255))
pygame.display.update()
파이게임 코인 수집 게임
이 게임은 마우스를 이용해 화면 아래의 바를 움직여 떨어지는 코인을 잡는 게임입니다. 시간이 지날수록 코인의 속도가 빨라집니다.
import pygame.freetype
import sys
import random
pygame.init()
화면 = pygame.display.set_mode((600, 400))
pygame.display.set_caption('코인 게임')
게임상태 = 0
카운터 = 0
점수 = 0
속도 = 0
글꼴_큰 = pygame.freetype.Font('C:/windows/fonts/msyh.ttc', 100)
글꼴_작은 = pygame.freetype.Font(None, 30)
코인_이미지 = pygame.image.load('coin.png')
코인_이미지 = pygame.transform.scale(코인_이미지, (30, 30))
코인들 = []
while True:
pygame.time.delay(20)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if 게임상태 == 0:
속도 = 0
게임상태 = 1
화면.fill((255, 255, 255))
if 게임상태 == 0:
글꼴_큰.render_to(화면, [100, 130], '게임 시작')
if 게임상태 == 1:
카운터 += 1
if 카운터 >= 50//(int(속도/30)+1):
카운터 = 0
if 속도 < 200:
속도 += 1
코인들.append([random.randint(50, 520), 50])
if 속도 == 200 and not 코인들:
게임상태 = 2
for 코인 in 코인들:
화면.blit(코인_이미지, [코인[0], 코인[1]])
코인[1] += int(속도/30)+1
x = pygame.mouse.get_pos()[0]
if x < 40:
x = 40
if x > 560:
x = 560
pygame.draw.rect(화면, (60, 150, 250), (x-40, 320, 80, 20))
for 코인 in 코인들:
if 코인[1] >= 300:
if x-70 <= 코인[0] <= x+40:
점수 += 1
코인들.remove(코인)
글꼴_작은.render_to(화면, [30, 30], '점수:%d' % 점수)
if 게임상태 == 2:
글꼴_큰.render_to(화면, [80, 130], '점수:%d' % 점수)
pygame.display.update()
파이게임 플래피 버드 게임
공간을 가로지르는 장애물을 피하며 최대한 오래 생존하는 게임입니다. 스페이스바를 눌러 새를 위로 날려 장애물을 피하세요.
import pygame.freetype
import sys
import random
pygame.init()
화면 = pygame.display.set_mode((500, 400))
pygame.display.set_caption('새 게임')
새_이미지 = pygame.image.load('bird.png')
새_이미지 = pygame.transform.scale(새_이미지, (96, 88))
글꼴_작은 = pygame.freetype.Font(None, 24)
글꼴_큰 = pygame.freetype.Font(None, 80)
새_x, 새_y = 50, 50
장애물1_x, 장애물2_x = 300, 600
장애물1_구멍, 장애물2_구멍 = 100, 150
중력 = 1
점수 = 0
게임상태 = 0
대기시간 = 0
while True:
pygame.time.delay(20)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if 게임상태 == 0 and event.key == 32:
게임상태 = 1
elif 게임상태 == 1 and event.key == 32:
중력 = -3
elif 게임상태 == 2 and event.key == 32 and 대기시간 == 30:
게임상태 = 0
새_x, 새_y = 50, 50
장애물1_x, 장애물2_x = 300, 600
장애물1_구멍, 장애물2_구멍 = 100, 150
중력 = 1
점수 = 0
대기시간 = 0
if 게임상태 == 0:
화면.fill((255, 255, 255))
화면.blit(새_이미지, (새_x, 새_y))
pygame.draw.rect(화면, (50, 200, 100), (장애물1_x, 0, 70, 장애물1_구멍))
pygame.draw.rect(화면, (50, 200, 100), (장애물2_x, 0, 70, 장애물2_구멍))
pygame.draw.rect(화면, (50, 200, 100), (장애물1_x, 장애물1_구멍 + 150, 70, 400 - 장애물1_구멍))
pygame.draw.rect(화면, (50, 200, 100), (장애물2_x, 장애물2_구멍 + 150, 70, 400 - 장애물2_구멍))
글꼴_작은.render_to(화면, [30, 250], "스페이스를 눌러 시작")
if 게임상태 == 1:
장애물1_x -= 2
장애물2_x -= 2
새_y += int(중력)
중력 += 0.2
if 새_y > 340:
게임상태 = 2
if 0 <= 장애물1_x <= 150 and not 장애물1_구멍 <= 새_y <= 장애물1_구멍+50:
게임상태 = 2
if 0 <= 장애물2_x <= 150 and not 장애물2_구멍 <= 새_y <= 장애물2_구멍+50:
게임상태 = 2
if 장애물1_x <= -70:
장애물1_x += 600
장애물1_구멍 = random.randint(50, 200)
점수 += 5
if 장애물2_x <= -70:
장애물2_x += 600
장애물2_구멍 = random.randint(50, 200)
점수 += 5
화면.fill((255, 255, 255))
화면.blit(새_이미지, (새_x, 새_y))
pygame.draw.rect(화면, (50, 200, 100), (장애물1_x, 0, 70, 장애물1_구멍))
pygame.draw.rect(화면, (50, 200, 100), (장애물2_x, 0, 70, 장애물2_구멍))
pygame.draw.rect(화면, (50, 200, 100), (장애물1_x, 장애물1_구멍 + 150, 70, 400 - 장애물1_구멍))
pygame.draw.rect(화면, (50, 200, 100), (장애물2_x, 장애물2_구멍 + 150, 70, 400 - 장애물2_구멍))
if 게임상태 == 2:
화면.fill((255, 255, 255))
글꼴_큰.render_to(화면, [80, 50], "점수:%d" % 점수)
글꼴_작은.render_to(화면, [100, 250], "스페이스를 눌러 다시 시작")
if 대기시간 < 30:
대기시간 += 1
pygame.display.update()
파이게임 뱀 게임
전통적인 뱀 게임입니다. 방향키를 이용해 뱀을 조종하며 먹이를 먹고 길어지는 게임입니다. 자신의 몸에 부딪히면 게임이 끝납니다.
import pygame
import sys
import random
pygame.init()
화면 = pygame.display.set_mode((400, 400))
pygame.display.set_caption('뱀 게임')
방향 = [0, 1]
뱀몸 = []
for i in range(3, 8):
뱀몸.append([4, i])
뱀머리 = [4, 7]
시간 = 0
빈칸 = []
for i in range(20):
for j in range(20):
if not [i, j] in 뱀몸:
빈칸.append([i, j])
먹이 = random.choice(빈칸)
while True:
pygame.time.delay(20)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == ord('a'):
새_방향 = [0, -1]
elif event.key == ord('d'):
새_방향 = [0, 1]
elif event.key == ord('w'):
새_방향 = [-1, 0]
elif event.key == ord('s'):
새_방향 = [1, 0]
else:
continue
if 방향[0] == 새_방향[0] or 방향[1] == 새_방향[1]:
continue
방향 = 새_방향[:]
시간 += 1
if 시간 >= 15:
시간 = 0
꼬리 = [뱀몸[len(뱀몸)-1][0], 뱀몸[len(뱀몸)-1][1]]
뱀머리 = [꼬리[0] + 방향[0], 꼬리[1] + 방향[1]]
if 먹이 == 뱀머리:
빈칸 = []
for i in range(20):
for j in range(20):
if not [i, j] in 뱀몸:
빈칸.append([i, j])
먹이 = random.choice(빈칸)
else:
del 뱀몸[0]
if 뱀머리 in 뱀몸:
pygame.quit()
sys.exit()
if not (0 <= 뱀머리[0] < 20) or not (0 <= 뱀머리[1] < 20):
pygame.quit()
sys.exit()
뱀몸.append(뱀머리)
화면.fill((0, 0, 0))
for 부분 in 뱀몸:
pygame.draw.rect(화면, (200, 200, 200), (20*부분[1], 20*부분[0], 20, 20))
pygame.draw.rect(화면, (100, 170, 255), (20*먹이[1], 20*먹이[0], 20, 20))
pygame.draw.rect(화면, (255, 255, 255), (20 * 뱀머리[1], 20 * 뱀머리[0], 20, 20))
pygame.display.update()