파일처리
아래와 같이 파일 열기와 파일 닫기를 할 수있다.
읽기 모드 종류 = w : 새로 쓰기 모드 / a : 이어쓰기 모드 / r : 읽기 모드
# 파일열기
파일객체 = open("파일명","읽기모드")
# 파일 닫기
파일객체.close()
파일은 항상 open과 close를 동시에 써야하는데 open과 close 사이에 많은 코드가 들어가면 close 구문을 빼먹기 쉽다.
이러한 상황을 예방하기 위해서 with 구문을 함께 쓰는것을 추천한다.
아래 코드와 같이 with구문을 조합하면 close 구문을 따로 작성하지 않아도 된다.
with open(file="파일명", mode="r") as data :
data.read()
쓰기
모드 변경으로 쓰기 또한 가능하다.
with open(file="파일명", mode="w") as data :
data.write("asdf")
위에서 알아본 개념으로 21일차에 만들었던 스네이크 게임을 high 스코어를 추가하여 수정해보았다.
from turtle import Turtle
class ScoreBoard(Turtle):
def __init__(self):
super().__init__()
self.score = 0
with open("data.txt") as data :
self.high_score = int(data.read())
self.hideturtle()
self.goto(0,280)
self.pencolor("white")
def increase_score(self):
"""스코어 상승"""
self.score += 1
self.update_scoreboard()
def update_scoreboard(self):
"""스코어보드 업데이트"""
self.clear()
self.write(f"score : {self.score} High Score : {self.high_score}", align="center",font=('Arial', 10, 'normal'))
def reset_scoreboard(self):
"""스코어보드 리셋"""
if self.score > self.high_score :
self.high_score = self.score
with open("data.txt",mode="w") as data :
data.write(f"{self.high_score}")
self.score = 0
self.update_scoreboard()
import turtle
import time
from turtle import Screen
from snake import Snake
from food import Food
from scoreboard import ScoreBoard
screen = Screen()
screen.setup(width=600, height=600)
screen.bgcolor("black")
screen.title("My Snake Game")
screen.tracer(0)
turtle.hideturtle()
turtle.speed(1)
snake = Snake()
food = Food()
scoreboard = ScoreBoard()
screen.listen()
screen.onkey(fun=snake.move_up, key="Up")
screen.onkey(fun=snake.move_down, key="Down")
screen.onkey(fun=snake.move_left, key="Left")
screen.onkey(fun=snake.move_right, key="Right")
game_is_on = True
while game_is_on :
screen.update()
time.sleep(0.1) # 0.1초마다 while 구문 반복
scoreboard.update_scoreboard() # 스코어보드 업데이트
snake.move_snake() # 스네이크 이동
# 먹이와 충돌
if snake.head.distance(food) < 15 :
food.refresh() # 먹이 재생성
scoreboard.update_scoreboard() # 스코어 보드 업데이트
scoreboard.increase_score() # 스코어보드 증가
snake.extend() # 몸통 증가
# 벽과 충돌
if snake.head.xcor() > 280 or snake.head.xcor() < -280 or snake.head.ycor() > 280 or snake.head.ycor() < -280 :
scoreboard.reset_scoreboard() # 스코어보드 리셋
snake.reset_snake() # 스네이크 리셋
# 꼬리와 충돌
for segment in snake.all_segment[1:] :
if snake.head.distance(segment) < 10 :
scoreboard.reset_scoreboard() # 스코어보드 리셋
snake.reset_snake() # 스네이크 리셋
screen.exitonclick()
파일의 경로
절대경로란?
최초의 시작점으로 경유한 경로를 전부 기입.
상대경로란?
현재 진행하고있는 장소에서 상대적으로 접근하는 경로.
예시 >