반응형 C#9 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. 이전 1 2 3 다음 반응형