- 게임 화면 세팅
import pygame
import sys
from time import sleep
BLACK = (0, 0, 0)
padwidth = 480
padheight = 640
def initgame():
global gamepad, clock
pygame.init()
gamepad = pygame.display.set_mode((padwidth, padheight)) #1-게임화면설정
pygame.display.set_caption('BUNNY & FRIENDS.py') #1-게임 이름
clock = pygame.time.Clock()
def rungame():
global gamepad, clock
ongame = False
while not ongame:
for event in pygame.event.get():
if event.type in [pygame.quit]: #1-게임 프로그램 종료
pygame.quit()
sys.exit()
gamepad.fill(BLACK)
pygame.display.update()
clock.tick(60) #1-게임화면의 초당 프레임수를 60으로 설정
pygame.quit() #1-pygame종료
initgame()
rungame()
- 배경화면 드로잉
import pygame
import sys
from time import sleep
#BLACK = (0, 0, 0)
padwidth = 480
padheight = 640
def drawobject(obj, x, y): #1-게임에 등장하는 객체를 드로잉
global gamepad
gamepad.blit(obj, (x, y))
def initgame():
global gamepad, clock, background
pygame.init()
gamepad = pygame.display.set_mode((padwidth, padheight)) #1-게임화면설정
pygame.display.set_caption('BUNNY & FRIENDS.py') #1-게임 이름
background = pygame.image.load('background.png') #2-배경 그림
clock = pygame.time.Clock()
def rungame():
global gamepad, clock, background
ongame = False
while not ongame:
for event in pygame.event.get():
if event.type in [pygame.quit]: #1-게임 프로그램 종료
pygame.quit()
sys.exit()
drawobject(background, 0, 0) #2-배경 화면 그리기
pygame.display.update()
clock.tick(60) #1-게임화면의 초당 프레임수를 60으로 설정
pygame.quit() #1-pygame종료
initgame()
rungame()
- 캐릭터 드로잉
import pygame
import sys
from time import sleep
#BLACK = (0, 0, 0)
padwidth = 480
padheight = 640
def drawobject(obj, x, y): #1-게임에 등장하는 객체를 드로잉
global gamepad
gamepad.blit(obj, (x, y))
def initgame():
global gamepad, clock, background, bunny
pygame.init()
gamepad = pygame.display.set_mode((padwidth, padheight)) #1-게임화면설정
pygame.display.set_caption('BUNNY & FRIENDS.py') #1-게임 이름
background = pygame.image.load('background.png') #2-배경 그림
bunny = pygame.image.load('ab05.png') #3-주인공 그림
clock = pygame.time.Clock()
def rungame():
global gamepad, clock, background, bunny
#3-주인공 크기
bunnysize = bunny.get_rect().size
bunnywidth = bunnysize[0]
bunnyheight = bunnysize[1]
#3-주인공 초기 위치(x,y)
x = padwidth * 0.45
y = padheight * 0.9
bunnyX = 0
ongame = False
while not ongame:
for event in pygame.event.get():
if event.type in [pygame.quit]: #1-게임 프로그램 종료
pygame.quit()
sys.exit()
drawobject(background, 0, 0) #2-배경 화면 그리기
drawobject(bunny, x, y) #3-주인공을 게임 화면의 (x,y)좌표에 그리기
pygame.display.update()
clock.tick(60) #1-게임화면의 초당 프레임수를 60으로 설정
pygame.quit() #1-pygame종료
initgame()
rungame()
- 캐릭터 이동
import pygame
import sys
from time import sleep
#BLACK = (0, 0, 0)
padwidth = 480
padheight = 640
def drawobject(obj, x, y): #1-게임에 등장하는 객체를 드로잉
global gamepad
gamepad.blit(obj, (x, y))
def initgame():
global gamepad, clock, background, bunny
pygame.init()
gamepad = pygame.display.set_mode((padwidth, padheight)) #1-게임화면설정
pygame.display.set_caption('BUNNY & FRIENDS.py') #1-게임 이름
background = pygame.image.load('background.png') #2-배경 그림
bunny = pygame.image.load('ab05.png') #3-주인공 그림
clock = pygame.time.Clock()
def rungame():
global gamepad, clock, background, bunny
#3-주인공 크기
bunnysize = bunny.get_rect().size
bunnywidth = bunnysize[0]
bunnyheight = bunnysize[1]
#3-주인공 초기 위치(x,y)
x = padwidth * 0.45
y = padheight * 0.9
bunnyX = 0
ongame = False
while not ongame:
for event in pygame.event.get():
if event.type in [pygame.quit]: #1-게임 프로그램 종료
pygame.quit()
sys.exit()
if event.type in [pygame.KEYDOWN]: #4-주인공 왼쪽으로 이동
if event.key == pygame.K_LEFT:
bunnyX -= 5
elif event.key == pygame.K_RIGHT: #4-주인공 오른쪽으로 이동
bunnyX += 5
if event.type in [pygame.KEYUP]: #4-방향키를 떼면 주인공 멈춤
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
bunnyX = 0
drawobject(background, 0, 0) #2-배경 화면 그리기
drawobject(bunny, x, y) #3-주인공을 게임 화면의 (x,y)좌표에 그리기
x += bunnyX #4-주인공 위치 재조정;키보드로부터 변경된 위치를 x좌표 위치로 발현시켜줌
if x < 0: # x가 0보다 작을 경우(=게임 왼쪽끝까지 가는 경우 밖으로 빠지지 않게 고정
x = 0
elif x > padwidth - bunnywidth: # x가 0보다 클 경우(=게임 오른쪽끝까지 가는 경우 밖으로 빠지지 않게 고정
x = padwidth - bunnywidth
pygame.display.update()
clock.tick(60) #1-게임화면의 초당 프레임수를 60으로 설정
pygame.quit() #1-pygame종료
initgame()
rungame()
- 아이템 드롭
import pygame
import sys
import random
from time import sleep
#BLACK = (0, 0, 0)
padwidth = 480
padheight = 640
itemsimage = ['item01.png', 'item02.png', 'item03.png', 'item04.png', 'item05.png'] #5-아이템 이미지
def drawobject(obj, x, y): #1-게임에 등장하는 객체를 드로잉
global gamepad
gamepad.blit(obj, (x, y))
def initgame():
global gamepad, clock, background, bunny, items
pygame.init()
gamepad = pygame.display.set_mode((padwidth, padheight)) #1-게임화면설정
pygame.display.set_caption('BUNNY & FRIENDS.py') #1-게임 이름
background = pygame.image.load('background.png') #2-배경 그림
bunny = pygame.image.load('ab05.png') #3-주인공 그림
clock = pygame.time.Clock()
def rungame():
global gamepad, clock, background, bunny, items
#3-주인공 크기
bunnysize = bunny.get_rect().size
bunnywidth = bunnysize[0]
bunnyheight = bunnysize[1]
#3-주인공 초기 위치(x,y)
x = padwidth * 0.45
y = padheight * 0.9
bunnyX = 0
#5-아이템 랜덤 생성
items = pygame.image.load(random.choice(itemsimage)) # 근데 크기가 다르기때문에 실제 크기를 가지고 폭과 너비를 가져옴
itemssize = items.get_rect().size # 아이템크기
itemswidth = itemssize[0]
itemsheight = itemssize[1]
#5-아이템 초기 위치 설정
itemsX = random.randrange(0, padwidth - itemswidth)
itemsY = 0 # y는 꼭대기에서 떨어지니까 0
itemsspeed = 3.5
ongame = False
while not ongame:
for event in pygame.event.get():
if event.type in [pygame.quit]: #1-게임 프로그램 종료
pygame.quit()
sys.exit()
if event.type in [pygame.KEYDOWN]: #4-주인공 왼쪽으로 이동
if event.key == pygame.K_LEFT:
bunnyX -= 5
elif event.key == pygame.K_RIGHT: #4-주인공 오른쪽으로 이동
bunnyX += 5
if event.type in [pygame.KEYUP]: #4-방향키를 떼면 주인공 멈춤
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
bunnyX = 0
drawobject(background, 0, 0) #2-배경 화면 그리기
drawobject(bunny, x, y) #3-주인공을 게임 화면의 (x,y)좌표에 그리기
drawobject(items, itemsX, itemsY) #5-아이템 그리기
#4-주인공 위치 재조정
x += bunnyX #키보드로부터 변경된 위치를 x좌표 위치로 발현시켜줌
if x < 0: # x가 0보다 작을 경우(=게임 왼쪽끝까지 가는 경우 밖으로 빠지지 않게 고정
x = 0
elif x > padwidth - bunnywidth: # x가 0보다 클 경우(=게임 오른쪽끝까지 가는 경우 밖으로 빠지지 않게 고정
x = padwidth - bunnywidth
#5-아이템이 아래로 내려감
itemsY += itemsspeed
#5-아이템이 바닥으로 떨어진 경우
if itemsY > padheight: #5-스피드5로 적용했던걸 rockY에 적용
#5-새로운 아이템 랜덤 생성
items = pygame.image.load(random.choice(itemsimage))
itemssize = items.get_rect().size
itemswidth = itemssize[0]
itemsheight = itemssize[1]
#5-아이템 바닥에 떨어지고, 새아이템 위치 재!!설정(위에 초기설정과 동일하지만 필요한 작업)
itemsX = random.randrange(0, padwidth - itemswidth)
itemsY = 0
pygame.display.update()
clock.tick(60) #1-게임화면의 초당 프레임수를 60으로 설정
pygame.quit() #1-pygame종료
initgame()
rungame()
- 객체별 충돌 인지
인지시, crash라고 출력.
- 충돌 후 아이템 재로딩, 카운트 기능
import pygame
import sys
import random
from time import sleep
# BLACK = (0, 0, 0)
padwidth = 480
padheight = 640
itemsimage = ['item01.png', 'item02.png', 'item03.png', 'item04.png', 'item05.png'] # 5-아이템 이미지
def writecount(count):
global gamepad
font = pygame.font.Font('PoorStory-Regular.ttf', 20)
text = font.render('경험치:' + str(count), True, (255, 255, 255))
gamepad.blit(text, (15, 10)) # 맨 왼쪽 위에
def writeFcount(count):
global gamepad
font = pygame.font.Font('PoorStory-Regular.ttf', 20)
text = font.render('피로도:' + str(count), True, (255, 255, 255))
gamepad.blit(text, (360, 10)) # 맨 왼쪽 위에
def crash():
global gamepad
writecount()
def drawobject(obj, x, y): # 1-게임에 등장하는 객체를 드로잉
global gamepad
gamepad.blit(obj, (x, y))
def initgame():
global gamepad, clock, background, bunny, items
pygame.init()
gamepad = pygame.display.set_mode((padwidth, padheight)) # 1-게임화면설정
pygame.display.set_caption('BUNNY & FRIENDS.py') # 1-게임 이름
background = pygame.image.load('background.png') # 2-배경 그림
bunny = pygame.image.load('ab05.png') # 3-주인공 그림
clock = pygame.time.Clock()
def rungame():
global gamepad, clock, background, bunny, items, crash
# 전투기 미사일에 운석이 맞을 경우 True
score = False
itemcount = 0
friendcount = 0
# 3-주인공 크기
bunnysize = bunny.get_rect().size
bunnywidth = bunnysize[0]
bunnyheight = bunnysize[1]
# 3-주인공 초기 위치(x,y)
x = padwidth * 0.45
y = padheight * 0.9
bunnyX = 0
# 5-아이템 랜덤 생성
items = pygame.image.load(random.choice(itemsimage)) # 근데 크기가 다르기때문에 실제 크기를 가지고 폭과 너비를 가져옴
itemssize = items.get_rect().size # 아이템크기
itemswidth = itemssize[0]
itemsheight = itemssize[1]
# 5-아이템 초기 위치 설정
itemsX = random.randrange(0, padwidth - itemswidth)
itemsY = 0 # y는 꼭대기에서 떨어지니까 0
itemsspeed = 3.5
isdraw = True
ongame = False
while not ongame:
for event in pygame.event.get():
if event.type in [pygame.quit]: # 1-게임 프로그램 종료
pygame.quit()
sys.exit()
if event.type in [pygame.KEYDOWN]: # 4-주인공 왼쪽으로 이동
if event.key == pygame.K_LEFT:
bunnyX -= 5
elif event.key == pygame.K_RIGHT: # 4-주인공 오른쪽으로 이동
bunnyX += 5
if event.type in [pygame.KEYUP]: # 4-방향키를 떼면 주인공 멈춤
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
bunnyX = 0
drawobject(background, 0, 0) # 2-배경 화면 그리기
drawobject(bunny, x, y) # 3-주인공을 게임 화면의 (x,y)좌표에 그리기
if isdraw:
drawobject(items, itemsX, itemsY) # 5-아이템 그리기
# 4-주인공 위치 재조정
x += bunnyX # 키보드로부터 변경된 위치를 x좌표 위치로 발현시켜줌
if x < 0: # x가 0보다 작을 경우(=게임 왼쪽끝까지 가는 경우 밖으로 빠지지 않게 고정
x = 0
elif x > padwidth - bunnywidth: # x가 0보다 클 경우(=게임 오른쪽끝까지 가는 경우 밖으로 빠지지 않게 고정
x = padwidth - bunnywidth
# 6-충돌인지
if isdraw == True and y < itemsY + itemsheight:
if (itemsX > x and itemsX < x + bunnywidth) or \
(itemsX + itemswidth > x and itemsX + itemswidth < x + bunnywidth):
print('crash')
isdraw = False
score = True
itemcount += 1 # 맞았으니까 카운트
friendcount += 2 # 맞았으니까 카운트
# 5-아이템이 아래로 내려감
itemsY += itemsspeed
print(itemsX, itemsY)
writecount(itemcount)
writeFcount(friendcount)
# 5-아이템이 바닥으로 떨어진
if itemsY > padheight: # 5-스피드5로 적용했던걸 rockY에 적용
# 5-새로운 아이템 랜덤 생성
items = pygame.image.load(random.choice(itemsimage))
itemssize = items.get_rect().size
itemswidth = itemssize[0]
itemsheight = itemssize[1]
# 5-아이템 바닥에 떨어지고, 새아이템 위치 재!!설정(위에 초기설정과 동일하지만 필요한 작업)
itemsX = random.randrange(0, padwidth - itemswidth)
itemsY = 0
pygame.display.update()
clock.tick(60) # 1-게임화면의 초당 프레임수를 60으로 설정
pygame.quit() # 1-pygame종료
initgame()
rungame()
반응형
'PROJECTS' 카테고리의 다른 글
바닐라코드로 인스타 UI클론 해보장 🤍 Html 만들기 | 괜히 뼈대라고 부르는게 아니더라 (0) | 2022.04.29 |
---|---|
프로젝트 발제 | 인스타그램 데스크탑 UI클론 | 4월28일 - 5월2일 | 화이팅 ! (0) | 2022.04.28 |
미완성 | 지금까지의 결과와 시행착오👾 | 파이썬게임 | 프로젝트 (0) | 2022.04.27 |
프로젝트 기획 | 파이썬 게임 | 28시간 안에 잠도 자고 밥도 먹고 가능하겠죠..🫠 (3) | 2022.04.25 |
Team Project 1 | 피드백 | 4월20일 - 4월22일 (0) | 2022.04.25 |