'소스'에 해당되는 글 2건

  1. 2008/02/14   C언어로 오목만들기 5 마지막. (15)
  2. 2008/02/07   요일맞히는 프로그램, 제라의 공식 이용 (7)
오랜만에 오목포스팅 드디어 끝이다.
5번만에 끝나니 좀 아쉬워, 좀 더 우려먹으려고 했는데.

이번에 추가한 건   흑,백추가(이게 전부  ㅡ,.ㅡ)

1. 돌 5개 확인 함수 변경하기.
예전엔 돌 하나로도 잘 놀았지만 이젠 흑,백이 추가됐으니 인자 하나를 더 전달해 주어야 해요.
int check(x,y)함수를 변경해줍니다.

2.문자열 "흑","백"도 추가, 흑돌,백돌도 추가

3.case ENTER: 부분도 수정

4.마지막 오목소스
사용자 삽입 이미지

이걸로 끝.
부족한 점이나 질문 있으시면 아래 리플로 ㄱㄱ

이 글이 유익하다면 (굽신굽신) ->

Trackback Address >> http://zfanta.com/trackback/333 관련글 쓰기

  1. Subject: 환타 오목 게임 재구성. (1)

    Tracked from There Ain't Just Unlogical - #pragma pack (the UNique subroutine) 2009/06/07 21:15  delete

    지환태 님의 미니홈피에서 가져온 오목 게임입니다. 상당히 끌려서 말입니다-_-; 도와드리지 않고는 못 배기겠더군요.(?) 일단 아래는 원본. 접었습니다. 짜증을 감수하고 보시려면 클릭. /* http://zfanta.com/entry/C언어로-오목만들기-5-마지막 * 이 오픈 소스 코드의 저작권은 지환태 님에게 있습니다. */ #include <stdio.h> #include <windows.h> #define UP 72 #define DOWN 80..

  2. Subject: 환타 오목 게임 재구성. (2)

    Tracked from There Ain't Just Unlogical - #pragma pack (the UNique subroutine) 2009/06/07 21:15  delete

    지난번 글에서는 move() 함수는 'move'답게 만들고 다른 함수가 move()를 반복하여 한 판을 조정하여, main()에서는 판을 반복하게 했습니다. 물론 제가 five_in_a_row()에 단 주석과 약간 다릅니다. 제 주석에 따르면 플레이어가 재경기를 원할 때 재경기를 시켜 줘야 합니다. 게다가 원래 게임과도 약간 달라져 버렸지요. 그.러.나. 그 점은 미뤄 두고, 일단 다른 부분을 시작하도록 하죠. (-_-ㅗ;;) 이번에는 판을 그리는..

  3. Subject: 와 오목을 C언어로?!

    Tracked from 성큼의 자기개발 2010/06/08 23:34  delete

    오랜만에 오목포스팅 드디어 끝이다. 5번만에 끝나니 좀 아쉬워, 좀 더 우려먹으려고 했는데. 이번에 추가한 건 흑,백추가(이게 전부 ㅡ,.ㅡ) 1. 돌 5개 확인 함수 변경하기. 예전엔 돌 하나로도 잘 놀았지만 이젠 흑,백이 추가됐으니 인자 하나를 더 전달해 주어야 해요. int check(x,y)함수를 변경해줍니다. view plaincopy to clipboardprint? 01.int check(x,y,turn) 02.{ 03. int px,p..

  4. Subject: c언어로 오목을?!

    Tracked from 성큼의 자기개발 2010/06/08 23:41  delete

    ㅇㅇㅇ

  1. Favicon of http://bluenlive.net BlogIcon bluenlive 2008/02/14 16:09  address  modify / delete  reply

    오홋! 드디어 최종버전이 출시된 것입니까?
    수고하셨습니다. 대단대단...

    •  address  modify / delete 2008/02/14 16:19 Favicon of http://zfanta.com BlogIcon 환타

      한번 번외편으로 컴퓨터랑 1:1하는 모드도 만들어보려고 하는 데 엄청 어렵네요. 흐흐흐, 1년 안에는 인공지능까지 만들어야 하는데.....
      다 만들고 나니 벌써 개학 ㅇㅅㅇ

    •  address  modify / delete 2008/02/14 16:25 Favicon of http://bluenlive.net BlogIcon bluenlive

      자, 가중치를 적용해보는 겁니다. ㅋㅋㅋ
      이론이야 쉽지만, 중요한 것은 님의 코드처럼 "실제 만들어진 코드"죠. 수고하셨습니다.
      그럼, 전 컨닝... ^^;;;

  2. Favicon of http://jkherald.com BlogIcon 정기 2008/02/14 23:30  address  modify / delete  reply

    중복되는 코드가 많아요..
    함수로 빼내세요.

    그리고 저걸 클래스화 시켜서 OOP로 구현해보시면 좋은 공부가 될 겁니다.

    ※중복되는 코드가 많으면, 그만큼 코드의 용량이 커지고, 심한 경우 캐시의 용량보다 커지면 캐시 미스로 인한 성능 하락의 요인이 매우 심합니다.
    물론 저 오목 루틴 정도야 몇 바이트 안되기 때문에 상관없지만, 나중에 큰 프로그램 만들 때 매우 중요합니다.

    그리고 중요한 것.

    가독성이 매우 나쁩니다..


    x+=2;
    oldx=x-2;

    이거 그냥
    oldx = x;
    x += 2;

    이게 나을 겁니다. 쓸데없는 연산은 안하게 해야죠..

    •  address  modify / delete 2008/02/15 12:32 Favicon of http://zfanta.com BlogIcon 환타

      정기님 오랜만에 뵙네요.
      고맙습니다.
      전에 방명록에 글 써주신 게 백업실수로 다 지워져서 어떡하죠 ㅡ,.ㅜ
      이번엔 번외편을 많이 올려야겠어요.(역시......)
      2일전 "열혈강의 C++"구입해서 공부하고 있는데 재밌네요. 으흐흐

  3. Favicon of http://www.ideakeyword.com BlogIcon Mr.번뜩맨 2008/02/19 08:38  address  modify / delete  reply

    우와..컴퓨터 언어를 사용할 줄 아시는군요..왠지 호기심이 자주 당깁니다.. 자주 오겠습니다..ㅋㅋ^^

  4. 학생 2008/03/10 18:29  address  modify / delete  reply

    int board[38][19]; 여기서 왜 x값이 2배인지를 잘모르겠어요;;;
    그리고 승패의 확인하는 함수int check 여기에서도 x가 모두 2배씩인지 잘모르겠어요';
    ////
    그리고 char who[3][3] , char stone[3][3] 이거 두개가 모두 3x3배열인지두요;; 그냥 [3]배열로 쓰면 안돼는건가용? 궁금궁금~ ㅎㅎ;char a[39][39] 이것두 비슷하게 ;;; 왜그런지;;;쓰는건 a[0]a[1]a[2]이거뿐인데;; 왜 크게 쓰는지 모르겠어요;;

    •  address  modify / delete 2008/03/10 18:37 Favicon of http://zfanta.com BlogIcon  환타

      x값이 2배인 이유는 ┌,└,├,⊙ 등 문자들이 a,b,c,1,2,3같은 문자들보다 가로길이가 2배 더 깁니다.
      그래서 커서를 이동할 때 가로 2칸씩 옮겨가면서 위 문자들을 출력해야 깨짐없이 나온답니다. ㅎㅎ

      char who[3][3]
      문자열은 배열에 하나씩 저장됩니다.
      만약 cat을 저장하려면 char a[0]=c, char a[1]=a, char a[2]=t, char a[3]=\0 이렇게 됩니다.
      널문자까지 4개의 배열을 선언해야하죠. 한글은 영어와 달리 한 글자에 2바이트니까 널문자까지 배열을 3개 선언해야합니다. 그리고 "","흑",'백" 이렇게 3개가 있으니 [3][3]으로 선언해야하죠.
      써놓고보니 어렵네요ㅇㅅㅇ.
      문자열 공부를 좀만 하시면 금방 이해 되실거여요. 제소스는 워낙 지저분하니 ㅜㅜ

  5. 학생 2008/03/10 18:50  address  modify / delete  reply

    거의 1주일 가량... 책이랑 이거랑 계속 보니깐 소스는 거의 대충.. 이해는 가게 됐어요 ㅎㅎ//
    감사해용ㅎㅎ// 질문에도 대답 다 해주시고 ㅎㅎ////
    나중에 또 모르는거 있으면 질문할께요 ㅎㅎ/
    일딴// 문자열좀 책좀 봐야겠고.. ㅎㅎ.... 완료하면 이젠.. 바둑돌 곗수를 세는거를 집어넣어봐야징 ㅎㅎ///
    학교에서 4년전에 한번 배우고;; 한번도 안쓰다가... 할려니깐 정말 몰라서 미치느줄 알았어요 ㅋㅋ/
    저번주에 첨시작했을때 printf도 먼지 몰라서 쩔쩔매다가 ㅎㅎ/
    이거 소스 보면서 책보면서 이런식으로 공부하니깐 어느정도 보면은 이해할수는 있는것 같아요 ㅎㅎ.
    감사해용 ㅎㅎㅎ/

  6. ㅠ왕초보.. 2009/06/06 18:23  address  modify / delete  reply

    저기 죄송한데요.... 혹시 바둑알의 색을 바꾸는거 하실수 있는지.. 제가 오델로 게임을 만들어야 하거든요ㅠㅠㅠ

    •  address  modify / delete 2009/06/07 21:26 Favicon of http://un-i.tistory.com BlogIcon Un-i-que

      오델로는 이 게임과 구조가 근본적으로 다르니 좀 힘들 것 같습니다.
      다만, 오목에서는 case ENTER나 check()에서 막 놓은 돌의 가로/세로/좌상우하/우상좌하 방향을 검사하는데,
      오델로로 바꾼다면 이 전체가 같은지가 아니라 움직여 가며 끝과 사이를 비교해야 되겠군요.

      다시 말하자면, check() 내에 걸려든 돌의 색을 바꾸는 코드를 넣어야 한다고 생각합니다. 특별한 건 없죠.

  7. Favicon of http://un-i.tistory.com BlogIcon Un-i-que 2009/06/07 21:16  address  modify / delete  reply

    트랙백 쏘고 갑니다^^

    지금까지 포스트 두 개 만들었어요. 버그 발견되면 알려주세요 :D

  8. 왕초보ㅠ 2009/06/19 11:12  address  modify / delete  reply

    board[ ][ ]여기서요,, 빈칸에 숫자를 넣을때 게임판의 가로 세로를 넣는 건가요??? 여기서는 게임판을 바로 출력했잖아요,
    근데 게임판 출력하기전에 다른글씨가 출력되고 게임판이 출력될경우에도 그냥 게임판의 가로 세로만 입력하면 되는건가요?>?? 아님 글씨가 적힌 부분의 좌표도 세어서 포함시켜야 하는 건가요????

오랜만에 프로그래밍 포스팅이니
오늘은 특별히 소스부터
#include <stdio.h>
#include <stdlib.h>

int calc(int,int,int,int);

int main()
{
	int a,b,c,d;
	int year;
	char buf[5],buf2[3];
	char *day[7]={"일","월","화","수","목","금","토"};

	printf("날짜: ");
	scanf("%4d%2d%2d",&year,&c,&d);
	printf("%d년 %d월 %d일",year,c,d);
	if(c<=2)
	{
		year-=1;
		c+=12;
	}

	a=year/100;
	b=year%100;

	printf("\n%s요일\n",day[calc(a,b,c,d)]);
	printf("%d %d %d %d",a,b,c,d);
	system("PAUSE");
	return 0;
}

int calc(a,b,c,d)
{
	return ((21*a/4)+(5*b/4)+(26*(c+1)/10)+d-1)%7;
}
아 내가 봐도...

제라의 공식은
((21*a/4)+(5*b/4)+(26*(c+1)/10)+d-1)%7;

a는 연도의 앞 두자리 b는 연도의 뒤 2자리.
c는 월, d는 일.

예를 들어 2007년 07월 07일은
a=20,b=7,c=7,d=7;
참쉽죠?

그리고 하나 더해야될 게 있어요.
c(월)가 1이나 2일경우 연도는 -1을 하고 1은 13,  2는 14로 바꿔줘야해요

예를들면
2007년 01월 01일은
a=20,b=6,c=13,d=1;
참쉽죠?

위 공식을 사용해 나온 값에 따라 요일을 정합니다.
0=일요일
1=월요일
2=화요일
3=수요일
4=목요일
5=금요일
6=토요일

이제 위에 있는 소스를 보시면 다 이해가 가실거에요.
사용자 삽입 이미지


ps.이걸로 달력도 출력하는건가?

이 글이 유익하다면 (굽신굽신) ->

Trackback Address >> http://zfanta.com/trackback/323 관련글 쓰기

  1. 모아 2008/02/08 02:14  address  modify / delete  reply

    char *day[7]={"일","월","화","수","목","금","토"};
    이부분은 char* day[] = {"일","월","화","수","목","금","토"};
    으로 바꾸시는게 더 좋아요~ 결과는 똑같지만, 나중에 명박요일 이런게 추가되면, 앞의 7을 바꾸지 않아도 되니깐요 ^^

  2. Favicon of http://eileenme.tistory.com BlogIcon eileenme 2008/02/15 11:08  address  modify / delete  reply

    안녕하세요,환타님~
    제 블로그에 댓글 남기셨길래 놀러왔답니다.
    뭔지 모르지만 포스트가 어마,,;; 워낙에 웹서핑만 겨우 하는지라...
    좋은 글 보러 또 들릴께요~ 가끔 저의 보잘것없는 블로그도 방문해 주심
    감사 할꺼에요^^; 즐거운 하루 되세요!

  3. Favicon of http://bluenlive.net BlogIcon bluenlive 2008/02/15 17:57  address  modify / delete  reply

    이야! 신기하다...
    잘 봤습니다.

    예전에 이거 계산한다고 삽질했던 기억이 있는데...
    (1950년 정도부터 시작해서 윤년이 아니면 1 더하고, 윤년이면 2 더하는 클래식한(?) 방법...)

    •  address  modify / delete 2008/02/15 18:03 Favicon of http://zfanta.com BlogIcon 환타

      클래식한 방법이 가장 좋죠 ㅎㅎ
      위 공식을 사용해서 저도 달력 출력하는 프로그램 만들어볼 생각이에요.
      제라의 공식이 먹히는 그레고리력(1582년 10월 15일)부터 쭈욱~~~

  4. 2인자 2010/02/18 03:01  address  modify / delete  reply

    http://navercast.naver.com/science/math/2047
    우연히 서핑하다 보고 댓글 남깁니다.
    요일 구하는 여러 공식이 있나보군요..