제목에서 보다시피 MingGW를 설치하는 과정이다.MinGW는 마이크로소프트 윈도로 포팅한 GNU 소프트웨어 도구 모음이다. mingw32로도 알려져 있다.이라고 한다 http://www.mingw.org/ 이 사이트에 들어가 Downloads버튼을 클릭한다클릭하면 다음화면이 나오는데 Installer폴더로 들어간다.mingw-get-setup.exe파일을 다운받는다.실행 하면 다음과 같은 창이 나오는데 Install 클릭만약 MinGW가 설치될 경로를 바꾸고 싶다면 Change버튼을 눌러 설치할 경로를 바꾼다. 여기서 다 설치가 끝날때 까지 기다린후 아래의 Contineu버튼을 클릭한다.이런 화면이 뜨는데 각 옵션에서 체크박스를 클릭 하고 Mark for Installation을 클릭하면 옵션을 체크 ..
이 포스트 에서는 저번 포스팅에 이어서 확장 윈도우 생성시(CreateWindowEX) 사용되는 매크로에 대해 적을 것이다.저번 포스팅 에서는 CreateWindow에서 사용하는 매크로 에서 알아 보았는데 일반적인 윈도우 스타일은 CreateWindow의 3번째 인자값으로 들어가나 CreateWindowEX에서는 일반 윈도우 스타일은 4번째의 인자값으로 들어가고 첫번째 인자에 확장 윈도우 스타일의 인자값이 들어가므로 주의 해야한다.#define WS_EX_DLGMODALFRAME : 이중 경계선을 가진 윈도우를 생성한다.#define WS_EX_NOPARENTNOTIFY : 윈도우가 생성되거나 파괴 될때 부모 윈도우에게 WM_PARENTNOTIFY 메시지를 보내지 않는다.#define WS_EX_TOPM..
이 포스팅 에서는 윈도우를 생성할때(CreateWindow) 인자값으로 사용되는 매크로에 대해 적어 놓았다. #define WS_OVERLAPPED : 기본적인 윈도우#define WS_POPUP : 팝업 윈도우를 만든다 WS_CHILD와 함께 쓰일수 없다. #define WS_CHILD : 자식 윈도우를 만든다 WS_POPUP와 함께 쓰일수 없다. #define WS_MINIMIZE : 윈도우를 최소화 한 상태에서 생성한다.#define WS_MAXIMIZE : 윈도우를 최대화 한 상태에서 생성한다.#define WS_VISIBLE : 윈도우를 만드는 동시에 화면에 출력한다.#define WS_DISABLED : 입력을 받지 않는다.#define WS_CLIPSIBLINGS : 자식끼리 겹친 영역은 그..
이 포스팅에서는 WNDCLASS구조체의 style멤버에 들어가는 매크로에 대해 적을 것이다. 1. CS_VREDRAW : 윈도우의 이동이나 크기 조절시 클라이언트의 세로의 크기가 변경되면 다시 그림.2. CS_HREDRAW : 윈도우의 이동이나 크기 조절시 클라이언트의 가로의 크기가 변경 되면 다시 그림.3. CS_DBLCLKS : 해당 클래스의 윈도우 내부에서 사용자가 더블 클릭하면 더블 클릭 메시지를 윈도우 프로시저로 보냄.4. CS_OWNDC : 클래스 내부의 각 윈도우들이 고유의 DC가 할당됨.5. CS_CLASSDE : 클래스 내부의 각 윈도우들은 하나의 DC를 공유함, 멀티 쓰레딩시 단 하나의 쓰레드만 DC에 접근함6. CS_PARENTDC : 부모 윈도우에 자식 윈도우를 클리핑한 사각형을 만..
1학년 겨울방학 팀프로젝트가 시작한지 32일남짓 되었고 실제로 프로그래밍,그래픽 작업.. 등등이 시작한지는 19일 되었다.솔직히 간단한 클리커 게임이라서 팀프로젝트만 한다면 7일 내에 끝내버릴수도 있었느나... 의지부족과 다른 공부 병행으로 딱 팀프로젝트 시간에만하고 주말에 조금 하는 정도로 만족을 하였다.타이틀 화면이다. 타이틀 화면에 아무것도 없으면 허전해서.. 구별을 위해 넣은 몬스터로 등장할 슬라임 사진을 이래저래 해서 넣었다.인 게임 화면이다.단순히 사진만 올려놓은거 같지만... 실제로는 공격도 되고 스테이지도 넘어가고 게임 일시 정지도 되고... 돌연변이 몬스터도 나오고 패턴도 진행되고.. 등등 중요 기능들은 다 구현된 상태이다(!!!) 앞으로 할 일은 디테일한부분(그림자라던가... 등등등....
학교 내부에서 약 20시간 정도의 시간내에 게임하나를 완성하는 공모전을 하였다.1학기에도 참가를 했지만 그때는 실력이 워낙 부족해서 실패를 했지만 이번에는 이를 갈고 열심히 프로그래밍을 해서 10시간 가량이 남았을때 세세한 부분을 제외하고 모든 로직을 짜고 UI라던가 그래픽이 그려준 리소스들을 적용하고 큰 버그도 딱히 없었어서 사소한 버그만 수정하면 끝이였는데 그때 하필 그래픽친구 1명이 멘탈이 나가서 리소스가 나오지 않아 제출하기 전까지 게임을 완성하지 못한게 조금 아쉽다.확실한건 1학기에 비해 코딩속도라던가 실력이 확실히 늘어난 느낌은 들지만.아직도 알고리즘과 수학 부분엔 많이 취약한 것은 확실한거 같다.이 사진이 (완성하지 못한)공모전때 만들던 게임이다. 거의 모든 기능이 잘 작동한다 그래픽 리소스..
이번에는 구조체에 대하여 알아 보겠습니다. 보통 C++에서의 구조체는 class 와의 별반 차이 없는 차이라고 해봤자 기본 접근 지시자가 private이냐 public이라는 차이점 밖에 없습니다. C#또한 그렇…지 않습니다! C#에서는 구조체 또한 기본 접근 지시자가 private로 되어 있습니다. (지못미) 그러면 C#에서는 구조체와 클래스의 차이점은 무엇 일까요? 클래스와 구조체의 차이점은 클래스는 힙 (Heap)영역 에서 참조(Reference) 타입 이고, 구조체는 스택(Stack)영역에 생성되는 값(Value) 타입 입니다. 따라서 구조체가 클래스보다 메모리 소모가 덜 하다고 합니다. 두번째로 매개변수가 없는(..!!) 생성자와 소멸자를 선언 할 수 없습니다. 게다가 상속을 지원하지도 않습니다(..
확장 메소드는 기존의 클래스의 기능을 "확장"시켜주는 메소드(함수) 라 고 볼 수 있습니다. 보통 자바 좀 하신 분이라던가 이것저것 C#으로 만지작 거리신 분이라면 보셨을텐데 이렇게 그냥 일반적인 배열인데 뒤에 메소드처럼 사용하여서 사진처럼 배열의 길이 라던가 그 변수의 타입을 가져 올 수 있습니다. 위 코드의 실행 결과는 보다시피 배열의 길이와 타입이 출력 되었습니다. 이제 한번 직접 확장메소드를 만들어 보겠습니다. 첫번째로 확장메소드가 포함된 클래스의 접근 지시자를 public으로 해야 내부 함수에 접근 할 수 있고 static으로 해야 클래스를 생성 하지 않아도 접근 할 수 있게 합니다 함수 또한 마찬가지 입니다. 만드는 방법은 아래와 같습니다(빨간줄 으ㅓㅓ) 확장메소드 끝
6/24일날 서울 숭실대학교에 선배분들께서 논문 발표를 하신다고 하셔 연구회의 특권을 빌려 다녀 왔었다. 아쉽게 사진 찍는걸 별로 좋아하지 않아서 사진은 없었다. 차비+숙박비가 약 5~7만원 든거 같았는데 숭실대 주변에 여관이 있어서 다행히 하루는 묵을 수가 있었다. 솔직히 평을 얘기 하자면 첫 초청강연하신 카이스트 교수님의 강연은 많이 흥미롭고 재미도 있으셨지만 다른 분들은 이야기가 심히 지루했다(…) 그리고 선배님들의 논문 발표는 다음날인 25일 발표하지만 나는 시간과 돈이 없어서 바로 집으로 내려갔다. 그래도 다행히 발표하는 모든 논문이 들어 있는 논문 책을 받았기에 선배님의 논문을 읽을 수 있었다. 그리고 값에 비해 얻은게 적다는 기분이 많이 들긴 하지만 나중에 나도 논문을 써서 참가 해보도록 노..
이번엔는 get,set 에 대해 알아 보겟습니다 클래스 내부에서 변수를 만들 때 public으로 하면 변수가 막 바뀔까 봐 문제되고 private로 하면 바꿀 때 귀찮아 지는 경우가 있는데 이럴 때 get,set을 이용하면 됩니다 쓰는 방법은 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 31 32 33 34 35 36using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { ..