블랙잭 만들어보기 1

한포도·2024년 3월 8일
0

Python

목록 보기
1/4

저번 학기에 배웠던 파이썬으로 뭘 만들어 볼까 하다가.
인터넷도 안될때 할만한 텍스트 게임을 만들어 보자고 결심했다.

파이썬은 클래스 생성까지는 했었으니 간지나게 클래스를 써보자는 의미였다.

사실 파이썬이 제일 재밌고 직관적이어서 계속 하고싶지만, 언어를 골라서 깊게 습득하는것 보단. 처음 접하는 언어를 빠르게 습득하는것이 더 가치 있는 능력이라고 생각한다.

때문에 파이썬은 코테를 위하거나 AI쪽으로 공부하기 위해서 꾸준히 학습하려고 한다.
언젠간 파이썬이 다 됐음 좋겠음;;

일단 논리 구조를 짜보도록 하자.

먼저 4가지 문양, A부터 K까지의 숫자가 필요하다.
그럼 52장의 서로다른 카드가 필요한 것이다.

카드의 값이 바뀔 필요는 없고 랜덤하게 카드를 뽑기 위해서 기본 설정을 해주자.

이렇게 해서 카드의 벨류와 정보를 리스트로 만들었다.

이제 카드 객체를 만들어 보자.

먼저 배웠던 생성자를 사용해서 카드의 이름을 정해주고.
어떤 카드를 뽑았는지 출력했을때를 위해서 __str__을 사용해 보았다. 이걸 하지 않고 출력했을때는 카드 객체를 출력했었다.
객체를 출력했을때 이 객체의 정보를 출력하기 위해선 str메소드를 사용해야 했다.
해서 영문법 적인 부분을 맞춰주었다.

그리고 중요한 카드 벨류를 체크 하는 부분인데, 정수로 표현된건 괜찮지만 포커카드는 A,J,Q,K 처럼 영어로 된 값이 있다. 블랙잭에서는 각 1,11,11,11 를 의미하기 때문에 이것을 맞춰 주기 위해서 if문으로 벨류를 할당했다.
Ace를 1또는 11의 값으로 사용할수있지만 이건 나중에 완성한뒤 리펙토링 하는것으로 했다.

덱 클래스 생성해보자

먼저 덱(카드 뭉치)는 카드들의 집합이다. 우리가 만든 카드는 아직 정보가 없는 카드 = 프린트 안된 카드 와 같다.
때문에 for를 이용해서 카드를 생성한후에 덱 리스트를 만들어서 추가 시키도록 하겠다.

또 덱을 뽑기 위해 draw 메소드를 만들고

덱에 모든 카드가 생성되었는지 체크 하기 위해 check 메소드를 만들었다.

리스트의 요소를 섞는 방법을 찾는 도중에 random에 shuffle을 알게 되었다.
.shuffle()은 리스트와 같은 객체의 요소의 순서를 무작위로 바꿔준다.
때문에 덱을 생성하고 셔플을 하지않고 생성과 동시에 셔플후 반환 하도록 했다.

52개의 카드가 생성이 잘 되었다.

이제 각자 패를 받았을때의 벨류를 체크 해보자.

먼저 리스트를 인자로 받는다.
for each처럼 i는 리스트의 요소인데 여기서 요소는 Card 객체다. 때문에 i는 Card객체의 메소드인 .value() 를 사용해서 벨류값들을 sum으로, sum을 반환해주자.

이 함수는 사용자의 의사를 묻는 함수다.

  • 게임을 진행하면서 더 진행 할것인가?
  • 카드를 더 받겠는가?

에 대해서 어떻게 처리할지 생각해봤다.

굳이 두 질문을 따로 함수로 만들기 보단 Y|N 을 구분하는 함수로 사용하는게 더 좋겠다고 생각해서 판단을 작성했다.

다음은 실직적인 게임 진행을 작성해보자.

profile
응애 개발맨

0개의 댓글