반응형
오목게임을 개발하기 위한 준비사항을 알아보고 개발할 게임에 대한 기본 구상을 해 보겠습니다. 그리고, 개발에 필요한 C#의 기본 문법과 기능을 간략하게 알아보겠습니다.
준비사항
게임을 개발하기 위한 개발환경에 대해 알아봅니다.
Visual Studio Community 2022
- C# 개발을 위한 통합개발환경(IDE)으로 개발, 디버그 및 실행을 모두 할 수 있는 환경입니다.
- Visual Studio IDE는 코드를 편집하고 디버그를 편리하게 하면 쉬운 빌드를 통해 프로그램을 손쉽게 개발할 수 있는 툴입니다.
- C#이외에도 다양한 언어를 지원하며 Community 버전은 무료로 사용 가능합니다.
- https://visualstudio.microsoft.com/ko/free-developer-offers/ 에서 무료로 다운로드하여 설치할 수 있습니다.
개발 언어
개발에 필요한 지식을 간략하게 정리해 보겠습니다.
- C# : C# Form 어플리케이션의 구조, 기본 문법 등
오목게임 구상
개발할 오목게임에 대한 기본적인 구조와 구현방안을 정리해 보겠습니다.
화면
- 오목판 : 사각형 그리는 함수를 이용하여 아래와 같은 15*15 사이즈의 오목판을 그립니다. 19*19 사이즈도 선택할 수 기능을 만들어서 사이즈 변경에 따라 프로그램 코드를 어떻게 구현하는지 공부해 보겠습니다.
- 오목돌 : 원 그리는 함수를 이용하여 아래와 같이 백돌과 흑돌을 그립니다.
- 기능 버튼
- 시작(재시작) : 시작 버튼을 게임을 시작할 수 있도록 화면 및 내부 게임정보를 초기화합니다.
- 착수 : 착수는 오목판의 착수위치를 마우스로 클릭하면 흑돌과 백돌이 번갈아가면서 놓입니다.
- 무르기 : 마지막에 착수한 돌을 취소합니다.
기본 기능
- 사람 vs 사람 대국 : 흑백을 번갈아 가면서 다른 사람과 대국할 수 있도록 합니다.
- 사람 vs 컴퓨터 대국 : 컴퓨터와 대국할 수 있도록 합니다.
기타 구현 기능
- 오목 여부 체크 : 매 착수 시마다 오목 여부를 체크하여 승부를 판단합니다.
- 흑 금수 체크 : 흑돌의 경우 33, 44, 장목을 둘 수 없기 때문에 흑에 대해 금수 체크기능을 적용합니다.
반응형
C#의 주요 사용 기능
오목게임 개발에 사용할 Javascript의 주요 기능에 대해 알아봅니다.
기본 문법 위주로 제작할 예정이며, Javascript의 기본 문법은 주로 웹사이트 검색을 이용하여 참조할 예정입니다.
Javascript에 대한 개념 및 기본 문법 등은 다른 웹사이트나 유튜브 강의 등을 이용하면 됩니다.
리스트
- 오목의 착수정보를 관리하는 용도로 사용합니다.
- 리스트는 배열과 달리 동적으로 크기 조절이 되는 구조이기 때문에 항목의 수를 신경쓸 필요가 없습니다.
- 항목 추가, 삭제, 검색 등 다양한 기능을 제공하기 때문에 유용하게 사용할 수 있습니다.
- 또한, 단순한 문자나 숫자 이외에도 구조체 객체나 클래스 객체를 요소로 관리할 수 있기 때문에 자료관리에 있어서 매우 편리하고 유용한 기능입니다.
//기본 형태
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int>();
list.Add(2);
list.Add(3);
list.Add(5);
list.Add(7);
}
}
...
//착수정보List
List<CPoint> mainList = new List<CPoint>();
- 주요 함수 : 다양한 함수가 있지만 여기에서는 주요한 함수 위주만 정리합니다.
함수명 | 설명 | |
List.Add | 요소를 List의 마지막에 추가하는 함수 | |
List.Clear | List의 전체 요소를 제거하는 함수 | |
List.Contains | List내에 특정 요소를 포함하고 있는지 검색해서 True/False를 리턴하는 함수 | |
List.Exists | List내에 특정 값과 동일한 값이 있는지 검색해서 True/False를 리턴하는 함수 | |
List.Equals | 동일한 객체인지를 판단하는 함수 | |
List.Find | 특정 조건에 해당하는 요소를 검색할 수 있는 함수 | |
List.FindAll | 특정 조건에 해당하는 모든 요소를 검색할 수 있는 함수 | |
List.ForEach | 리스트의 전체 요소를 순차적으로 처리할 수 있게 해주는 함수 | |
List.Insert | 리스트의 중간에 요소를 추가할 수 있는 함수 | |
List.Remove | 조건에 맞는 리스트의 요소를 제거할 수 있는 함수 | |
List.RemoveAll | 조건에 맞는 리스트의 모든 요소를 제거할 수 있는 함수 | |
List.Sort | 특정 조건에 맞게 정렬할 수 있는 함수 | |
List.ToArray | 리스트를 배열로 변환해주는 함수 |
배열
- 오목판에 해당하는 2차원 배열을 생성하여 흑백의 착수정보를 관리한다.
- 포인트별 착수 우선순위를 판단하기 위해 포인트별 점수를 관리하는 2차원 배열을 활용한다.
//오목판 배열(15*15 or 19*19)
char[,] mainBoard;
mainBoard = new char[this.boardSize + 1, this.boardSize + 1];
클래스/객체
- 객체지향개념을 적용하여 개발하기 위해 class 구조를 사용합니다.
- 객체지향언어인 C#의 객체지향구조를 이해하기 위해 기본적인 class 문법으로 구현합니다.
//클래스 선언
internal class COmok
{
Graphics g;
int boardSize;
//착수정보List
List<CPoint> mainList = new List<CPoint>();
//오목판 배열(15*15 or 19*19)
char[,] mainBoard;
readonly string[][] omokPattern = new string[2][]
{
new string[] { "EBBBBBE", "EBBBBBW", "EBBBBBX", "WBBBBBE", "WBBBBBW", "WBBBBBX", "XBBBBBE", "XBBBBBW", "XBBBBBX" },
new string[] { "WWWWW" }
};
public COmok(Graphics graphics, int boardSize)
{
this.g = graphics;
this.boardSize = boardSize;
mainBoard = new char[this.boardSize + 1, this.boardSize + 1];
}
}
//객체 생성
omok = new COmok(g, 15);
반복문
- 반복적인 처리를 위해 for문, while문 등을 활용하며, 기본적인 for반복문/while문과 forEach구문을 주로 사용합니다.
//while문 기본 구조
while (조건식) {
// 반복 실행될 코드
}
//do while문 기본 구조
do {
// 반복 실행될 코드
} while (조건식);
//for문 기본 구조
for(초기식; 조건식; 증감식) {
// 반복해서 실행될 코드
}
//foreach문 기본 구조
foreach (변수 in 배열 혹은 컬렉션) {
// 실행될 코드
}
3항 연산자
- 조건문(if)을 간단하게 한 줄로 표현할 수 있는 3항 연산자를 사용합니다.
//기본 구조
object tmp = {조건} ? {참(true)일 경우 return값} : {거짓(false)일 경우 return값}
size = boardSize == 15 ? 15 : 12;
반응형
'개발노트 > 오목게임_C#' 카테고리의 다른 글
C# 오목 게임 개발 #6 (0) | 2023.01.30 |
---|---|
C# 오목 게임 개발 #5 (0) | 2023.01.30 |
C# 오목 게임 개발 #4 (0) | 2023.01.30 |
C# 오목 게임 개발 #3 (0) | 2023.01.30 |
C# 오목 게임 개발 #1 (0) | 2023.01.30 |
댓글