Python 예외 처리 (연오센세 블로그)


​​

  • except ( 예외1, 예외2, …) : 여러 예외를 일괄 처리

  • raise 예외 : 예외 발생시키기

  • assert 검증식, 처리문 : 식 검증하고 예외 처리 / 특정 예외를 처리할 수 없다.

  • 예외 유형 정의 : Exception 클래스를 상속하여 예외 클래스 만들기 / BaseException을 직접 상속하지 않는다.

  • finally : 중복 코드를 방지하기 위해 exept 코드 블럭이 끝난 후, 맨 마지막으로 실행되어야할 코드를 위치시킨다.


​ ​

django MTV 패턴, Django 프로젝트 구성, Django 앱 디자인 기본


​​

Django MTV 패턴

  • MTV 패턴을 좀 흥미롭게 소개할 수 없을까 고민하다가 좋은 영상을 발견했다.

  • 블로그만으로는 자료 신빙성이 없어서 Django를 활용한 쉽고 빠른 웹 개발, Two scoops of django 책 위주로 공부

  • 앞으로 배워야할 내용을 맛보는 단계라 설명해야할 것, 설명하고 싶은 것이 많았다.

  • 12시쯤 도서관에 왔는데 6시 30분이 되서 끝났다. 두번째부터는 좀 더 빨리 준비할 수 있을 거라 생각한다.


​ ​

kaggle : SQL/BigQuery


  • With 임시테이블명 As ( 쿼리 ) : 임시테이블 생성

  • 털로 이해하는 SQL JOIN : 오랜만에 수염짤을 보고 Join을 다시 복습했다.

궁금한 것 : 이 아저씨는 대체 누구일까 / 저 4장 중 뭐가 원본일까.

pygame Baccarat : 칩 재생성

어제 계속 고민했던 문제

  • 칩 객체는 분명 잘 생성되는데, 화면 상에서 나타나지 않는 게 문제였다.

  • 어제의 코드를 다시 생각해봤는데, 칩 이미지를 로드할 때 위치를 지정해줄 때 인자가 잘못 전달되었다는 것을 깨달았다.


잘못된 코드

new_chip = Chips(self.game, self.chip_price)
chip_name = [c_name for c_name in PLAY_CHIPS if PLAY_CHIPS[c_name] == self.chip_price][0] 
new_chip.make(('image/'+chip_name+'.png'), (self.rect.x, self.rect.y))


새로운 칩을 만드는 부분의 코드이다. 원본 칩 객체가 베팅되었을 때 새로운 칩이 생성되는데,

여기서 make의 두번째 인자가 칩 이미지가 나타날 위치이다. self.rect.x와 self.rect.y 는 원본 칩 객체의 위치 정보이다. new_chip은 원본 객체의 위치를 그대로 따라가기 때문에 생성이 되었어도 마치 화면에 출력되지 않은 것처럼 보였던 것이다.

아래 동영상을 보면 분명 칩은 하나인데 베팅할 때마다 베팅 금액이 배로 올라간다. 왜냐, 베팅할 때마다 같은 위치에 계속 칩을 생성하기 때문이다.


수정된 코드

new_chip = Chips(self.game, self.chip_price)
chip_name = [c_name for c_name in PLAY_CHIPS if PLAY_CHIPS[c_name] == self.chip_price][0] 
new_chip.make(('image/'+chip_name+'.png'), self.location)


원본 칩 객체가 생성될 때 전달된 location 정보는 원본 칩 객체의 움직임에 따라 변하지 않도록 self.location이라는 곳에 따로 저장했다. 이에 따라 new_chip은 렌더링 될 때, 원본 칩 객체가 처음 생성된 그 자리에 생성된다.



baccarat 의 To do 리스트가 이제 얼마남지 않았다. 이제 디자인이랑 리팩토링, 그리고 배포만 하면 된다.

요 며칠간 해결한 것

  • 칩 생성하기 (o): Sprites.py -> Chips -> update() -> mouserbuttonup (베팅할 때) -> 칩 생성 -> baccarat.py 의 이미지 파일, location 이용

  • 이전 게임 내용 저장 (o) -> pickle

  • 다시 시작할 때 Betting Money 초기화 / User profile 업데이트 (o)