일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- presignedurl
- SQL
- 파이썬
- Cookie
- redis
- aws
- 코딩테스트
- 코드잇
- 방송대컴퓨터과학과
- 유노코딩
- 엘리스sw트랙
- 꿀단집
- 프로그래머스
- node.js
- TiL
- 중간이들
- 개발자취업
- Python
- 파이썬프로그래밍기초
- 99클럽
- 항해99
- MySQL
- nestjs
- CSS
- 방송대
- Git
- JavaScript
- 코딩테스트준비
- 데이터베이스시스템
- HTML
- Today
- Total
배꼽파지 않도록 잘 개발해요
방송대 파이썬 프로그래밍 기초 - 13강. 실전 프로그래밍 1 본문
1. 게임 개발 준비
소프트웨어 개발 과정
- 대규모 소프트웨어 개발에 자원을 투입하여 초기에 예상한 결과물 구현을 목적
- 소프트웨어 개발 계획 수립부터 폐기까지 전체적인 흐름을 체계화하여 고품질의 소프트웨어 생산을 위한 체계
- 공장에서 제품을 생산하듯 소프트웨어 전체 개발 과정을 하나의 프로세스로 정의
→ 소프트웨어 개발 라이프사이클(SDLC)
소프트웨어 개발 라이프사이클
대규모 소프트웨어 개발에 자원을 투입하여 초기에 예상한 결과물 구현을 목적으로 소프트웨어 전체 개발 과정을 하나의 프로세스로 정의한 것
1) Planning : 비용, 기간, 자원 계획 수립
2) Analysis : SW 기능/비기능 요구 정의 및 자료수집
3) Design : 구조, 데이터, 인터페이스, UI 정의
4) Implementation : 언어 선택, 코딩 규칙 정의, 프로그램 작성
5) Testing & Integration : 예상 결과 유사 검증 및 오류 파악
6) Maintenance : 프로그램 오류 수정, 새로운 요구 추가, 사용환경 변화 반영
프로그램의 진행과정
프로그램의 대다수는 데이터 파일을 처리 및 가공하여 정보 파일을 만들어서 가공됨.
배치(batch) 프로세스 : 일괄적으로 모아놓은 대량의 데이터를 특정시간에 지정한 처리 방법에 따라 처리
컴퓨터 게임 진행 과정
게임 시작 후 가만히 있음 → 사용자가 버튼을 누르면 그 때 캐릭터가 Jump
사용자의 행위에 따라 프로그램 내부에서 함께 반응
즉, 게임은 컴퓨터 프로그램이 대기하고 있다가 이벤트가 들어올 때 그 이벤트에 맞게 구동됨.
이벤트 기반 프로그래밍
EDP(Event Driven Programming)
- 실행의 흐름을 예측하는 프로그래밍 기법이 무의미한 GUI 환경에서 사용함.
- 입력장치, 타이머, 프로그램 등으로부터 발생하는 이벤트 관점에서 생각하는 방식
- 이벤트(event)란 프로그램에 의해 감지되고 처리될 수 있는 동작이나 사건
EDP 프로그램 구동 구조
· 이벤트 루프 : 이벤트 생성 여부 확인 및 전달
· 이벤트 발생 장치 : 이벤트 유형에 따른 이벤트 생성
· 이벤트 큐 : 이벤트 저장 구조
· 이벤트 핸들러 : 이벤트 발생에 따른 실행코드
게임의 진행과정
2. 게임 정의 및 설계
게임 정의
틱택토(Tic Tac Toe)
두명의 플레이어가 3x3 판에 번갈아가며 O와 X를 기록
같은 표시를 가로, 세로, 또는 대각선 상에 일직선으로 놓이도록 하는 게임
틱택토 규칙
1. 한 플레이어가 아직 기록되지 않은 빈 카에 자신의 기호로 표시한다.
2. 다른 플레이어가 아직 기록되지 않은 빈 칸에 자신의 기호로 표시한다.
3. 둘 중 한 플레이어가 가로, 세로 또는 대각선을 자신의 기호만으로 채우면 승리한다.
4. 게임은 한 플레이어가 승리하거나 빈 칸이 남지 않아 비길 때까지 계속된다.
게임 승리 상황
전체 8가지의 승리 상황
틱택토 요구사항
게임 시작 시 무작위로 시작할 플레이어가 선택 (사용자 or 컴퓨터)
플레이어는 사용자와 컴퓨터이고 각각 O와 X 기호를 사용
빈칸의 행, 열 좌표를 입력하여 기호를 표시
- 사용자는 사용자입력, 컴퓨터는 랜덤 선택
승리, 무승부 또는 종료 요청이면 게임이 종료
- 종료 요청은 사용자가 "OO" 입력 시 발생
게임판을 텍스트로 출력하여 게임 진행
틱택토 설계
2차원 리스트를 사용하여 게임판을 생성하고 각각의 칸을 빈칸으로 초기화
- 빈칸에 대한 지정한 기호(*)를 사용
게임판에 빈칸이 남아있는지 확인
- 게임판 전체를 확인하고 True/False 반환
둘 중 한 플레이어가 승리했는지 확인
- 8가지의 승리 상황에 따른 가능성을 확인
- 각각의 행, 열과 두 개의 대각선 방향을 확인
게임판의 현재 상태를 출력
게임을 시작
- 무작위로 선공할 플레이어를 선택
게임 루프를 기동(1/3)
- 게임판의 현재 상태를 출력하고 다음 플레이어가 빈칸을 선택
- 사용자 또는 컴퓨터가 다음 말의 위치를 결정해줄 때까지 계속 대기
게임 루프를 기동(2/3)
- 플레이어가 선택할 빈칸의 위치(행과 열 번호)를 입력받음
- 사용자일 경우 사용자 입력을 통해 행과 열 번호를 입력받음
- 컴퓨터일 경우 무작위로 행과 열 번호를 선택
- 플레이어가 선택한 위치에 기호를 표시하고 게임판을 업데이트
게임 루프를 기동(3/3)
- 현재 플레이어가 승리했는지 확인
- 승리 상황인 경우, 승리한 플레이어에 대한 메시지를 출력하고 게임 루프를 종료
- 게임판에 빈칸이 남아있는지 확인
- 게임판이 가득찬 경우, 무승부 메시지를 출력하고 게임 루프를 종료
- 게임이 종료될 떄까지 게임 루프를 무한 반복
실전 프로그래밍
1. 설계 관점에서 게임에 활용할 메소드 정의
class Tic_Tac_Toe:
# 게임판 생성
# 게임이 실행되자마자 생성되어야 하는 부분
# 클래스에서 객체가 만들어질 때 자동적으로 호출, 초기화
# → 항상 __init__으로 명명
def __init__(self) :
# 게임판 초기화
def creat_board(self) :
# 첫 플레이어 선택
def select_first_player(self) :
# 기호 표시
def mark_spot(self, row, col, player)
# 승리 상태 확인
def is_win(self, player)
# 행 확인
# 열 확인
# 대각선 확인
# 잔여 빈칸 여부 확인
def is_board_full(self) :
# 플레이어 변경
def next_player(self, player) :
# 현재 게임판 상태 츌력
def show_board(self) :
# 게임 루프 시작
def start(self) :
# 새 게임판 생성
# 첫 플레이어 선택
# 게임 루프 시작
while True :
# 다음 플레이어 안내
# 현재 게임판 상태 출력
# 사용자 입력 대기, 컴퓨터일 경우 랜덤 위치 반환
# row, col 입력값이 0, 0인 경우 게임 종료
# 입력된 위치 표시
# 현재 플레이어가 이겼는지 확인
# 게임판 가득참 확인
# 플레이어 변경
# 최종 게임판 출력
# 게임 생성
TTT = Tic_Tac_Toe() :
# 게임 시작
TTT.start() :
무언가를 물을 때 자주 쓰이는 메소드 이름 : is~
→ 결과도 주로 True/False
'방송대 컴퓨터과학과 > 파이썬 프로그래밍 기초' 카테고리의 다른 글
방송대 파이썬 프로그래밍 기초 - 15강. 체크포인트2 (9-14강) (0) | 2023.06.03 |
---|---|
방송대 파이썬 프로그래밍 기초 - 14강. 실전 프로그래밍 2 (0) | 2023.05.23 |
방송대 파이썬 프로그래밍 기초 - 12강. 파일 (1) | 2023.05.22 |
방송대 파이썬 프로그래밍 기초 - 11강. 모듈 (0) | 2023.05.22 |
방송대 파이썬 프로그래밍 기초 - 10강. 객체지향 (1) | 2023.04.22 |