반응형 전체 글40 오목게임 분석 및 기본 설계 오목게임을 프로그램으로 개발하기 위한 분석 및 기본적인 기능설계를 진행합니다. 이 단계에서는 개발언어에 상관없이 개발할 오목게임을 분석하고 화면 및 기본 기능에 대한 설계를 진행합니다. 개요 오목판과 오목알을 사용해 흑백이 번갈아 한 수씩 두어 가로, 세로, 대각선 중 한 방향으로 같은 색 돌을 다섯 개 먼저 늘어놓으면 승리하는 추상전략게임(나무위키) 화면 설계 개발할 오목게임에 대한 화면을 개략적으로 그려 봅니다. 게임영역, 설정영역과 기능버튼 등을 Wireframe으로 그려보고 개발 과정에서 조금씩 수정하면서 진행합니다. 오목판 : 오목판 격자가 그려지고 오목돌이 놓이게 되는 게임영역 게임설정 오목판 사이즈 15*15 (디폴트) 19*19 상대선수 : 사람 대 사람, 사람 대 컴퓨터가 둘 수 있도록 .. 2023. 2. 3. [로스팅노트] 브라질 카라멜라도 Pulped Natural 생두명 : 브라질 카라멜라도 가공방식 : Pulped Natural * 재배고도 : 1030 ~ 1310 m 특징 : 마카다미아의 고소함과 달콤 쌉살 한 후미 Cupping Notes Caramel Honey Macadamia Bittersweet Good balance Clean Finish 추천 드립 : 중간 정도의 굵기의 분쇄로 부드럽게 내림 로스터기 : 보카보카250 로스팅 프로파일 투입량 : 170g 배출량 : 150g 단계 예열 : 200도까지 진행. 약 3분 소요 생두 투입 보카보카250 기준으로 최대 화력(12단계)으로 유지 1차 파핑 : 약 8분 20초 경에 시작 1차 파핑 본격적으로 진행 : 약 9분 30초 배출 : 약 10분 30초 쿨링 * 펄프드 내추럴 (Pulped Natural).. 2023. 2. 3. C# 오목 게임 개발 #9 이번 회차에서는 지금까지 구현한 내용에 일부 부가기능을 추가하고 보완하는 작업을 진행하겠습니다. 착수 순서 표시하기 오목돌에 착수순서대로 번호를 표시하는 코드를 작성해 보겠습니다. 순서 표시여부를 DrawStone 멤버함수의 인자로 전달하여 필요에 따라 on/off 하도록 합니다. private void DrawStone(Graphics g, int x, int y, char color, int order, bool orderFlag, int type) { Point point = GetScreenPosition(new Point(x, y)); if (type == (int)DrawType.OmokStone) { StringFormat sf = new StringFormat(); sf.LineAlignm.. 2023. 1. 30. C# 오목 게임 개발 #8 이번 회차에서는 오목여부를 판단하는 방법에 대해 구현해 보겠습니다. 오목을 판단하기 위해 오목판의 착수정보를 추출하고 패턴을 확인하는 로직은 오목판단뿐만 아니라 이후에 각 포인트의 우선순위를 분석하는데 이용하게 됩니다. 오목여부 판단 오목여부 판단은 오목판의 착수정보를 추출하여 패턴을 확인하는 방법으로 진행합니다. 오목판 착수정보 추출 최종 착수점을 기준으로 가로, 세로, 좌대각선, 우대각선 각각에 대해 검색 후 착수된 모든 정보를 추출합니다. 착수정보는 흑돌, 백돌, 공백, 오목판 외부 정보를 모두 구분하여 수집합니다. 각 포인트 정보는 다음의 알파벳으로 구분합니다. B: 흑돌 W: 백돌 S: 공백 X: 오목판 외부 추출함수는 COmok클래스의 멤버함수로 구현하며 4개의 방향에 대해 동일한 로직이므로 .. 2023. 1. 30. C# 오목 게임 개발 #7 이번 회차에는 정확한 착수여부를 체크하는 코드와 새게임, 무르기 처리 기능을 구현해 보겠습니다. 추가적으로, 착수 시에 사운드 재생하는 코드를 같이 작성해 보겠습니다. COmok 클래스 멤버함수 추가 (COmok.cs) 정확한 착수인지를 체크하기 위한 COmok 클래스의 멤버함수를 구현합니다. 착수점에 이미 돌이 있는지 여부 체크 함수 착수점(마우스 클릭점)에 기존에 이미 돌이 있는지를 확인하는 멤버함수입니다. 착수정보List(mainList)에서 착수점(x,y)으로 검색하여 존재하는지 여부로 판단합니다. public bool IsOccupied(int x, int y) { foreach (var item in mainList) { if (item.X == x && item.Y == y) return t.. 2023. 1. 30. C# 오목 게임 개발 #6 이번 회차에서는 오목판 위에 실제 오목돌을 그리는 클램스 멤버함수 및 호출 부분을 구현해 보겠습니다. 오목판의 특정 위치를 마우스로 좌클릭하면 흑돌부터 순서대로 그려지도록 합니다. COmok 클래스 멤버함수 추가 (COmok.cs) 오목돌을 그리기 위한 COmok 클래스의 멤버함수를 구현합니다. 오목돌 그리는 방법 먼저 오목돌을 그리는 방법에 대해 정리한 후에 실제 코드를 작성합니다. 오목돌은 마우스 클릭 이벤트 발생시점에 해당 위치에 직접 그려주는 방법도 있지만, 여기에서는 아래와 같이 오목돌 착수정보를 관리하는 배열에 추가(push) 한 후에 착수정보배열을 기준으로 전체 오목돌을 다시 그려주는 방법으로 구현해 보겠습니다. 오목위치 구하기 panel상의 마우스 클릭 위치 좌표를 오목판 사이즈(15*15.. 2023. 1. 30. C# 오목 게임 개발 #5 이번 회차에서는 오목게임의 근간이 되는 오목클래스를 디자인하고 우선 오목판을 그려봅니다. 오목클래스는 개발이 완료될 때까지 단계적으로 구현해야 할 중요한 영역입니다. 객체지향의 핵심이 되는 클래스/객체 개념은 별도로 꼭 학습해 보시길 권장합니다. 오목클래스(COmok) 정의 오목클래스는 오목게임의 중요한 로직을 담고 있는 핵심클래스가 됩니다. 단계적으로 진행하면서 계속 개발하고 보완해 나갈 예정입니다. 오목클래스는 COmok.cs라는 별도의 파일에 작성합니다. namespace Omok { internal class COmok { ... } } 멤버변수 오목의 여러 속성들을 멤버변수로 정의합니다. 주요 상수 정의 게임환경변수 정의 오목판정보 배열 정의 Graphics g; int boardMargin =.. 2023. 1. 30. C# 오목 게임 개발 #4 본격적으로 오목 게임 개발을 시작해 보겠습니다. 오목게임 흐름(Flow) 먼저 오목게임이 어떤 순서로 처리되는지 전체적인 Flow를 도식화해서 정리해 봅니다. 전체 게임 흐름 시작버튼 클릭 이벤트 처리 사람 착수 클릭 이벤트 처리 전체 게임 흐름 게임 설정 : 게임에 필요한 변수 선언 및 초기값 할당 등의 설정을 처리합니다. 이벤트 설정 : 게임에서 발생할 수 있는 이벤트를 생성하고 이벤트 발생 시 처리할 콜백함수 내용을 구현합니다. 이벤트 대기 : 이벤트 발생을 대기합니다. 이벤트 처리 : 발생한 이벤트에 대한 콜백함수의 내용을 처리합니다. 시작버튼 클릭 이벤트 오목객체 생성 : 오목게임을 시작하기 위해 오목클래스에 대한 객체를 생성하고 게임을 시작합니다. 컴퓨터 착수 처리 : 흑 선수가 컴퓨터인 경우.. 2023. 1. 30. 이전 1 2 3 4 5 다음 반응형