스터디/Python

6. 실습 - 게임구현

elenalee 2024. 5. 4. 14:25

1. 소프트웨어 개발 

- 대규모 소프트웨어 개발에 자원을 투입하여 초기에 예상한 결과물 구현

- 개발계획부터 폐기까지 전체적인 흐름을 체계화하여 고품질의 소프트웨어 생산을 위한 체계

 

1)개발과정 

① SDLC(Software Development LifeCycle):  소프트웨어 개발 라이프사이클

    소프트웨어 개발과정을 하나의 프로세스로 정의 

   - 계획(Planning) : 비용, 기간, 자원, 계획 수립

   - 분석(Analysis) : SW기능/비기능, 요구정의 및 자료수집 

   - 설계 (Design) : 구조, 데이터, 인터페이스, UI정의

   - 구현 (Implementation) : 언어선택, 코딩규칙정의, 프로그램 작성 

   - 테스트 (Test & Integration) : 요구반영, 예상결과 유사검증 , 오류파악 

   - 유지보수 (Maintenance) : 프로그램 오류수정, 새로운 요구추가, 사용환경변화 반영

 

② 프로그램 진행과정 (데이터 파일을 처리/가공후 정보 파일생성)

    배치 프로세스 : 일괄적으로 모아놓은 대량의 데이터를 특정시간에 지정한 처리방법에 따라 처리

    이벤트 : 프로그램에 의해 감지되고 처리될수 있는 동작이나 사건 

 

이벤트 기반 프로그래밍 (EDP: Event Driven Programming

   -  실행의 흐름을 예측하는 프로그래밍 기법이 GUI환경에서 사용

   - 입력장치, 타이머, 프로그램 등으로부터 발생한 이벤트 관점에서 생각하는 방법 

   - 구동 구조

      이벤트 생성 ( 이벤트 발생장치에 의해 유형이 서로 다른 이벤트 생성)

      ⇨  저장 (이벤트 큐) 이벤트 루프 (핸들러에 이벤트 생성 여부 확인 및 전달) 

      ⇨  실행 ( 이벤트 핸들러 )

     예) 게임 실행 과정 ( 사용자가 게임 종료시 게임루프 종료 )

           게임초기화 게임루프 ( 이벤트 검사 이벤트 처리 (이벤트 핸들러) 게임 업데이트(데이터 갱신)

                                                 화면생성 화면 업데이트 )

 

 

2) Tic Tac Toe

- 2명의 player가 3x3판에 번갈아가며 O와 X를 기록하여 가로,세로,대각선 완성

 

① 규칙설정

- 각 플레이어는 기록되지 않은 빈칸에 자신의 기호표시

- 한 플레이어가 가로, 세로, 대각선을 자신의 기호로 채워 완성하면 승리

- 게임은 한 플레이어가 승리하거나 빈 칸이 남지 않아 비길때까지 지속됨 

 

② 요구사항 : 개발시간, 관련 비용 

 - 게임 세부사항 

 - 게임 시작시 무작위로 시작할 플레이어 선택

 - 플레이어 기호표시 : 사용자와 컴퓨터로 각각 O, X사용 

 - 플레이어 입력방법 : 입력할 빈칸의 행, 열 좌표를 입력하여 표시 (사용자 직접 입력, 컴퓨터 랜덤 선택)

 - 게임종료 - 승리, 무승부 또는 종료요청 ( 사용자가 "00"입력 )

 - 게임 표시방법 : 게임판을 텍스트로 출력

 

③ 설계

 - 2차원 리스트를 사용하여 게임판을 생성, 빈칸으로 초기화 - 빈칸에 대한 지정한 기호(*)사용 

 - 게임판에 빈칸이 있는지 확인 - 게임판 전체를 확인하여 True/False 반환

 - 플레이어 승리확인 - 8가지 승리상황에 대한 가능성 확인 (3개의 각 행/열+2개의 대각선)

 - 게임판의 현재 상태출력 

 - 게임 시작 - 게임을 시작할 플레이어를 무작위로 선택

    게임루프가동

  - 게임판 현재상태 출력후 다음 플레이어가 빈칸 선택 

  - 플레이어가 선택할 빈칸의 위치(행과 열번호)입력 - 사용자는 입력, 컴퓨터는 무작위 행/열번호 선택 

  - 플레이어가 선택한 위치에 기호표시, 게임판 업데이트

  - 플레이어 승리 확인 (승리 상황인 경우, 관련 메시지 출력 후 게임루프 종료)

  - 게임판의 빈칸 학인 (게임판이 가득찬 경우, 무승부 메시지 출력 후 게임루프 종료)

  - 게임 종료시 다시 게임루프 반복

 

 

 

3) 2차원 리스트 

List

 순서화된 값의 집합체를 저장할수 있는 데이터 타입 

- 단일 식별자로 연속되는 저장공간 접근 수단제공

- 2차원 리스트는 두개의 접근 연산자를 사용하여 개별적인 값에 접근  

   리스트이름 [행위치][열위치]

 

① 2차원 리스트 구문형식 

- 리스트 내부에 리스트가 정의, 2차원 리스트 생성시 원소가 결정된 상황 

 

 

예) 도시간 거리를 이용한 2차원 리스트 생성 

 

② 2차원 리스트 순회 

- 각 차원을 순차적으로 순회화기 위해 2개의 반복구조가 중첩 

- 전체 리스트 구조 (Distance) 생성

   외부 for문을 통해 행을 만들고 내부 for문으로 1차원 리스트에 컬럼의 값을 추가한 후, 

   전체 구조(Distance)에 추가하여 2차원으로 구성  

- 순회 : 중복 for문을 사용하여 행 별로 열의 값을 차례로 방문히여 처리가능  

 

예) random함수를 이용한 2차원 리스트 생성과 순회 

 

 

'스터디 > Python' 카테고리의 다른 글

5. 모듈과 파일  (0) 2024.05.03
4. 함수와 객체  (0) 2024.05.02
3. 구조와 제어  (0) 2024.04.21
2. 파이썬 Basic  (0) 2024.04.20
1. 정보 및 컴퓨터 구성  (0) 2024.04.20