지난주에 개인과제로 진행했었던 가위바위보게임을 웹으로 구현하는 것이 이번 과제이다.
내가 주로 맡은 부분은 데이터베이스를 만들고 웹에서 실행한 가위바위보의 전적을 데이터베이스에 입력하는 것이다.
강의의 내용을 최대한 떠올려보면서 진행을 했다.
# 데이터베이스 생성코드입니다.
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///' + os.path.join(basedir, 'database.db')
db = SQLAlchemy(app)
stats = {'win':0, 'lose':0, 'draw':0} # 통계 저장용 딕셔너리
# 데이터베이스 생성
class Score(db.Model):
matches = db.Column(db.Integer, primary_key=True) # 게임횟수 저장용
win = db.Column(db.Integer, nullable=False) # 승리 저장용
lose = db.Column(db.Integer, nullable=False) # 패배 저장용
draw = db.Column(db.Integer, nullable=False) #무승부 저장용
가장먼저한 것은 데이터베이스를 만드는 것이었다. 게임횟수(matches)를 primary_key로 두었고 승, 무, 패를 각각 열로 만들어주었다.
그리고 통계값을 딕셔너리 형태로 저장을 해서 추후에 메인페이지에 출력할 수 있도록 했다.
game_result = result()
if game_result == '승!':
stats['win'] += 1
elif game_result == '패배!':
stats['lose'] += 1
elif game_result == '무승부!':
stats['draw'] += 1
가위바위보 게임 결과에 따라서 stats딕셔너리에 값이 업데이트 된다.
다만 이 부분은 함수가 재시작되면 초기화되기 때문에 나중에 데이터베이스에서 직접 값을 가져올 수 있도록 수정할 생각이다.
# DB 입력부분입니다.
score = Score(win = stats['win'], lose = stats['lose'], draw = stats['draw'])
db.session.add(score)
db.session.commit()
# 여기까지 입력부분!
그리고 지금까지의 전적은 합산해서 데이터베이스에 차례대로 입력하게 된다.
# 데이터베이스 삭제 함수(전적초기화 용도)
def delete_all_scores():
try:
# 모든 Score 레코드 삭제
db.session.query(Score).delete()
db.session.commit()
except Exception:
db.session.rollback()
# delete_all_scores() # 데이터 베이스 초기화가 필요할때 활성화하고 게임을 1회 실행하세요.
데이터베이스 삭제 함수도 만들어두었는데 지금은 디버깅용 코드이다. 나중에 메인페이지의 버튼을 눌러서 모든 전적을 초기화할 수 있는 기능을 추가하면 좋을것같다.
구현 방법 자체는 생각외로 어렵지는 않았지만 처음 해보는 작업이었기때문에 아이디어를 떠올리는 것이 쉽지않았다.
부족한부분은 내일 계속해서 수정할 생각이다.
'내일배움캠프' 카테고리의 다른 글
WIL - 이번주를 돌아보며... (0) | 2024.07.07 |
---|---|
팀 프로젝트 - 가위바위보게임 2 (0) | 2024.07.07 |
웹개발 4주차 과제 - 멜론 차트 스크래핑하기 (0) | 2024.07.04 |
파이썬 팀과제 - 클래스 사용해보기! (0) | 2024.07.03 |
웹개발 복습 (0) | 2024.06.30 |