[code] 05. ๋ชจ๋“ˆ,ํŒจํ‚ค์ง€

์ˆ˜์ • ๋ชฉ๋ก

1. (1์ชฝ) ๋ชจ๋“ˆ ๋งŒ๋“ค๊ณ  ์ž„ํฌํŠธํ•˜๊ธฐ ์ฝ”๋“œ

def deposit(balance, money) :
print(fโ€œ์ž”์•ก {balance}์›์— {money}์›์„ ์ž…๊ธˆํ•จ.โ€)
print(fโ€œ์ด ์ž”์•ก์€ {balance+money}์›์ž„.โ€)
return balance + money

def say_hi() :
print(โ€œHiโ€)

2. (4์ชฝ) weather_list ๋ฆฌ์ŠคํŠธ

weather_list = ['windy', 'snowy', 'snowy', 'sunny', 'sunny', 'cloudy', 'rainy']

3. (7์ชฝ) main.py ์ฝ”๋“œ

import sys

import weather_data as wd
import daily
import weekly

# mode ์ž…๋ ฅ ์•ˆ๋‚ด ๋ฌธ๊ตฌ ์ถœ๋ ฅ

print("""
Input 't' to get only daily weather.
Input 'f' to get weekly weather.
""")
print("")

mode = input ("Input t or f :")


if mode == 't' :
print("Today's weather : ", daily.today_weather())
elif mode == 'f' :
afterday = int(input("How many days from today would you like to know the weather for(0~6)?: "))
if afterday <= 5 :
print("weather at the day : ", weekly.forecast_2(afterday)[0])
print("weather at the next day : ", weekly.forecast_2(afterday)[1])
elif afterday == 6 :
print(weekly.forecast_2(afterday))


4. (8์ชฝ) weekly.py ์ž„ํฌํŠธํ•˜๊ธฐ ์ฝ”๋“œ

import daily
import weekly
from weekly import forecast_2
from weekly import sunnydays

(์ค‘๋žต)

mode = input (โ€œInput the mode โ€˜tโ€™ or โ€˜fโ€™ or โ€˜sโ€™. :โ€)

if mode == โ€˜tโ€™ :
print(โ€œTodayโ€™s weather: โ€, daily.today_weather())
elif mode == โ€˜fโ€™ :
afterday = int(input(โ€œHow many days later do you want to get: :โ€))
if afterday <= 5 :
print(fโ€œweather after {afterday} days later:โ€, weekly.forecast_2(afterday)[0])
elif afterday == 6 :
print(fโ€œweather after {afterday} days later:โ€, weekly.forecast_2(afterday)[1])
elif mode == โ€˜sโ€™ :
date = int(input(โ€œInput todayโ€™s date (ex. 19):โ€))
print(โ€œSunny days :โ€, weekly.sunnydays(date))




5. (14์ชฝ) ๊ฒŒ์ž„ ์ œ์ž‘ ์ฝ”๋“œ
(ํด๋ฆญ) ๊นƒํ—ˆ๋ธŒ ๋ฐ”๋กœ ๊ฐ€๊ธฐ

import pygame
import time
import random

# ์ดˆ๊ธฐํ™”
pygame.init()

# ํ™”๋ฉด ์„ค์ •
width, height = 800, 600
game_display = pygame.display.set_mode((width, height)) # ์Šคํฌ๋ฆฐ ๊ฐ€๋กœ,์„ธ๋กœ ๊ธธ์ด
pygame.display.set_caption("๋ฑ€ ๊ฒŒ์ž„") # ๊ฒŒ์ž„์ œ๋ชฉ

# ์ƒ‰๊น” ์ •์˜
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)

# ๊ฒŒ์ž„ํฐํŠธ
font = pygame.font.SysFont(None, 25)

# ๋ฑ€ ์ดˆ๊ธฐ ์œ„์น˜ ๋ฐ ํฌ๊ธฐ ์„ค์ •
snake_block = 10 # ๋ฑ€ ๋ชธํ†ต ํ•œ ์นธ ์ •์‚ฌ๊ฐํ˜• ๊ธธ์ด
snake_speed = 10 # ๋ฑ€ ์†๋„

# ๋ฑ€ ๋ชธํ†ต ๊ทธ๋ฆฌ๊ธฐ ํ•จ์ˆ˜
def our_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(game_display, white, [x[0], x[1], snake_block, snake_block])

# ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ์˜ต์…˜ ์ •ํ•˜๊ธฐ ํ•จ์ˆ˜
def message(msg, color):
mesg = font.render(msg, True, color)
game_display.blit(mesg, [width / 6, height / 3])

def game_loop():
game_over = False
game_close = False

# x1, y1 : ์ตœ์ดˆ ๋ฑ€๋จธ๋ฆฌ ์ขŒํ‘œ
x1 = width / 2
y1 = height / 2

# ๋ฑ€์˜ ์ดˆ๊ธฐ ๋ฐฉํ–ฅ์€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
x1_change = 0
y1_change = 0

# ๋ฑ€ ๋ชธํ†ต ๋ฆฌ์ŠคํŠธ
snake_list = []
length_of_snake = 1

# ๋จน์ด ์ตœ์ดˆ ์œ„์น˜ ๋žœ๋ค์„ธํŒ…
foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0

# ๊ฒŒ์ž„ ์‹คํ–‰ ๋ฃจํ”„
while not game_over:
# ๊ฒŒ์ž„์ข…๋ฃŒ์‹œ ๋ฉ”์‹œ์ง€
while game_close:
game_display.fill(black)
message("Game Over! Press C to Restart or Q to Quit", red)
pygame.display.update()

# ๊ฒŒ์ž„์ข…๋ฃŒ ๋˜๋Š” ์žฌ์‹œ์ž‘ ์ œ์–ด
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
game_loop()

# ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and x1_change == 0:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT and x1_change == 0:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP and y1_change == 0:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN and y1_change == 0:
y1_change = snake_block
x1_change = 0

# ๋ฑ€์ด ํ™”๋ฉด ๋ฐ–์œผ๋กœ ํƒˆ์ถœํ•˜๋ฉด ๊ฒŒ์ž„ ์ข…๋ฃŒ
if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
game_close = True

# ๋ฑ€ ์œ„์น˜ ์ดˆ๊ธฐํ™”
x1 += x1_change
y1 += y1_change

# ํ™”๋ฉด ๊นŒ๋งฃ๊ฒŒ
game_display.fill(black)

# ๋จน์ด ๊ทธ๋ฆฌ๊ธฐ
pygame.draw.rect(game_display, red, [foodx, foody, snake_block, snake_block])

# ๋ฑ€ ๋จธ๋ฆฌ ์ขŒํ‘œ๋ฅผ ๋ชธํ†ต์— ์ถ”๊ฐ€ --- (1)
snake_head = [x1, y1]
snake_list.append(snake_head)

# ๋ฑ€๋จธ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋‹ˆ ๋ฑ€๊ผฌ๋ฆฌ ์ž๋ฅด๊ธฐ ---(2) // (1),(2)๋ฅผ ํ†ตํ•ด ๋ฑ€ ๋ชธํ†ต์ด ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๋จ.
if len(snake_list) > length_of_snake:
del snake_list[0]

# ๋ฑ€ ๋จธ๋ฆฌ๊ฐ€ ๋ชธํ†ต์— ๋‹ฟ์œผ๋ฉด ๊ฒŒ์ž„์ข…๋ฃŒ


# ๋ฑ€ ๋ชธํ†ต ๊ทธ๋ฆฌ๊ธฐ
our_snake(snake_block, snake_list)

# ์ ์ˆ˜ ๋ฉ”์‹œ์ง€ ์†ก์ถœ



# ํ™”๋ฉด ์—…๋ฐ์ดํŠธ
pygame.display.update()

# ๋จน์ด ๋จน์œผ๋ฉด ๋ชธํ†ต ๊ธธ์ด 1 ์˜ฌ๋ฆฌ๊ธฐ


# ์†๋„์ œ์–ด
pygame.time.Clock().tick(snake_speed)

# ๊ฒŒ์ž„์ข…๋ฃŒ
pygame.quit()
quit()

# ๊ฒŒ์ž„ ์‹œ์ž‘
game_loop()