[python 게임] 파이썬 똥피하기 게임에 대해서 알아보자!!

파이썬으로 쪼금 복잡한 루트의 게임을 알아보았는데, 그 이름은 바로 똥피하기게임입니다. 어느정도 중하수이상수준은 된다고 생각되어집니다~ㅎㅎ

요번 내용의 게임은 깃허브링크를 올릴것이며, 소스는 그쪽에서 보면 될 것같습니다!!

-파썬 똥피하기 게임소스(index.py)

import sys
from random import randrange

import pygame
from pygame import mixer

from src.Ddong import Ddong
from src.User import User

pygame.init()
mixer.init()

WHITE = (255, 255, 255)
WINDOW_TITLE = “똥피하기”
DISPLAY_WIDTH = 400
DISPLAY_HEIGHT = 650
USER_IMAGE_WIDTH = 20
USER_IMAGE_HEIGHT = 40

# init
pygame.display.set_caption(WINDOW_TITLE)
clock = pygame.time.Clock()
game_font = pygame.font.SysFont(“arial”, 30, True, False)
ddong_image = pygame.image.load(“resources/images/ddong.png”)
user_image = pygame.image.load(“resources/images/user.png”)
sound_bgm = pygame.mixer.Sound(“resources/audio/bgm_server.mp3”)
sound_poop = pygame.mixer.Sound(‘resources/audio/poop.wav’)

#
display = pygame.display.set_mode((DISPLAY_WIDTH, DISPLAY_HEIGHT))
sound_bgm.set_volume(0.2)
sound_poop.set_volume(0.1)
sound_bgm.play()


def create_ddong(x, y, image, sound):
ddong = Ddong(x, y)
ddong.set_image(image)
ddong.set_sound(sound)
return ddong


#
time_elapsed_since_last_action = 0
ddong_create_event = pygame.USEREVENT + 1
pygame.time.set_timer(ddong_create_event, 100)


def get_game_options():
obstacles = []
user = User(DISPLAY_WIDTH / 2 – USER_IMAGE_WIDTH / 2, DISPLAY_HEIGHT – USER_IMAGE_HEIGHT, user_image, 0)
is_running_game = True

return dict({‘obstacles’: obstacles, ‘user’: user, ‘is_running_game’: is_running_game})


options = get_game_options()
obstacles = options[‘obstacles’]
user = options[‘user’]
user.set_screen(display)
is_running_game = options[‘is_running_game’]
avoid_score = 0

while True:

if is_running_game is False:
end_text = game_font.render(“Dead!Press SpaceBar”, True, (0, 0, 0))
display.blit(end_text,
[DISPLAY_WIDTH / 2 – end_text.get_width() / 2, DISPLAY_HEIGHT / 2 – end_text.get_height() / 2])
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
options = get_game_options()
obstacles = options[‘obstacles’]
user = options[‘user’]
user.set_screen(display)
is_running_game = options[‘is_running_game’]
avoid_score = 0

pygame.display.update()
continue

delta_time = clock.tick(60)
score_text = game_font.render(str(avoid_score), True, (0, 0, 0))
user.set_delta_time(delta_time)
user.update()
display.fill([255, 255, 255])
display.blit(score_text, [0, 0])
display.blit(user.image, (user.x, user.y))

for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()

if event.type == ddong_create_event:
position_x = randrange(DISPLAY_WIDTH – ddong_image.get_width())
_ddong = create_ddong(position_x, 0, ddong_image, sound_poop)
obstacles.append(_ddong)

if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
user.on_key_down(event.key)

if event.key == pygame.K_RIGHT:
user.x += delta_time * 1
user.on_key_down(event.key)

if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
user.on_key_up(event.key)

for obstacle in obstacles:
if obstacle is not None:
display.blit(obstacle.image, obstacle.get_position())
obstacle.fall(delta_time)
if obstacle.is_dead:
obstacles.remove(obstacle)
avoid_score += 1

is_collision = user.check_collision(obstacles)
if is_collision is True:
is_running_game = False

pygame.display.update()

이정도 코딩과 게임실력이면 심화과정의 게임개발을 해도된다고 생각합니다. 자 이제 심화적인 활동을 시작해보면 될 것 같습니다~

다음 포스팅 글에는 안드로이드로 할 수 있는 게임&개발을 알아보겠습니다~!!

-깃허브 링크

https://github.com/koojongin/avoid-the-poop

1 thought on “[python 게임] 파이썬 똥피하기 게임에 대해서 알아보자!!”

Leave a Comment