5번만에 끝나니 좀 아쉬워, 좀 더 우려먹으려고 했는데.
이번에 추가한 건 흑,백추가(이게 전부 ㅡ,.ㅡ)
1. 돌 5개 확인 함수 변경하기.
예전엔 돌 하나로도 잘 놀았지만 이젠 흑,백이 추가됐으니 인자 하나를 더 전달해 주어야 해요.
int check(x,y)함수를 변경해줍니다.
2.문자열 "흑","백"도 추가, 흑돌,백돌도 추가
3.case ENTER: 부분도 수정
4.마지막 오목소스
이걸로 끝.
부족한 점이나 질문 있으시면 아래 리플로 ㄱㄱ
Trackback Address >> http://zfanta.com/trackback/333
-
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..
-
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()에 단 주석과 약간 다릅니다. 제 주석에 따르면 플레이어가 재경기를 원할 때 재경기를 시켜 줘야 합니다. 게다가 원래 게임과도 약간 달라져 버렸지요. 그.러.나. 그 점은 미뤄 두고, 일단 다른 부분을 시작하도록 하죠. (-_-ㅗ;;) 이번에는 판을 그리는..
-
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..
-
Subject: c언어로 오목을?!
Tracked from 성큼의 자기개발 2010/06/08 23:41 deleteㅇㅇㅇ
오홋! 드디어 최종버전이 출시된 것입니까?
수고하셨습니다. 대단대단...
한번 번외편으로 컴퓨터랑 1:1하는 모드도 만들어보려고 하는 데 엄청 어렵네요. 흐흐흐, 1년 안에는 인공지능까지 만들어야 하는데.....
다 만들고 나니 벌써 개학 ㅇㅅㅇ
자, 가중치를 적용해보는 겁니다. ㅋㅋㅋ
이론이야 쉽지만, 중요한 것은 님의 코드처럼 "실제 만들어진 코드"죠. 수고하셨습니다.
그럼, 전 컨닝... ^^;;;
중복되는 코드가 많아요..
함수로 빼내세요.
그리고 저걸 클래스화 시켜서 OOP로 구현해보시면 좋은 공부가 될 겁니다.
※중복되는 코드가 많으면, 그만큼 코드의 용량이 커지고, 심한 경우 캐시의 용량보다 커지면 캐시 미스로 인한 성능 하락의 요인이 매우 심합니다.
물론 저 오목 루틴 정도야 몇 바이트 안되기 때문에 상관없지만, 나중에 큰 프로그램 만들 때 매우 중요합니다.
그리고 중요한 것.
가독성이 매우 나쁩니다..
※
x+=2;
oldx=x-2;
이거 그냥
oldx = x;
x += 2;
이게 나을 겁니다. 쓸데없는 연산은 안하게 해야죠..
정기님 오랜만에 뵙네요.
고맙습니다.
전에 방명록에 글 써주신 게 백업실수로 다 지워져서 어떡하죠 ㅡ,.ㅜ
이번엔 번외편을 많이 올려야겠어요.(역시......)
2일전 "열혈강의 C++"구입해서 공부하고 있는데 재밌네요. 으흐흐
우와..컴퓨터 언어를 사용할 줄 아시는군요..왠지 호기심이 자주 당깁니다.. 자주 오겠습니다..ㅋㅋ^^
저는 아직 바닥입니다 ㅋㅋ
앞으로 배울 게 너무 많아요 ㅎㅎ
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]이거뿐인데;; 왜 크게 쓰는지 모르겠어요;;
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]으로 선언해야하죠.
써놓고보니 어렵네요ㅇㅅㅇ.
문자열 공부를 좀만 하시면 금방 이해 되실거여요. 제소스는 워낙 지저분하니 ㅜㅜ
거의 1주일 가량... 책이랑 이거랑 계속 보니깐 소스는 거의 대충.. 이해는 가게 됐어요 ㅎㅎ//
감사해용ㅎㅎ// 질문에도 대답 다 해주시고 ㅎㅎ////
나중에 또 모르는거 있으면 질문할께요 ㅎㅎ/
일딴// 문자열좀 책좀 봐야겠고.. ㅎㅎ.... 완료하면 이젠.. 바둑돌 곗수를 세는거를 집어넣어봐야징 ㅎㅎ///
학교에서 4년전에 한번 배우고;; 한번도 안쓰다가... 할려니깐 정말 몰라서 미치느줄 알았어요 ㅋㅋ/
저번주에 첨시작했을때 printf도 먼지 몰라서 쩔쩔매다가 ㅎㅎ/
이거 소스 보면서 책보면서 이런식으로 공부하니깐 어느정도 보면은 이해할수는 있는것 같아요 ㅎㅎ.
감사해용 ㅎㅎㅎ/
앞으로 자주자주 들러주세요 ^^
저기 죄송한데요.... 혹시 바둑알의 색을 바꾸는거 하실수 있는지.. 제가 오델로 게임을 만들어야 하거든요ㅠㅠㅠ
오델로는 이 게임과 구조가 근본적으로 다르니 좀 힘들 것 같습니다.
다만, 오목에서는 case ENTER나 check()에서 막 놓은 돌의 가로/세로/좌상우하/우상좌하 방향을 검사하는데,
오델로로 바꾼다면 이 전체가 같은지가 아니라 움직여 가며 끝과 사이를 비교해야 되겠군요.
다시 말하자면, check() 내에 걸려든 돌의 색을 바꾸는 코드를 넣어야 한다고 생각합니다. 특별한 건 없죠.
트랙백 쏘고 갑니다^^
지금까지 포스트 두 개 만들었어요. 버그 발견되면 알려주세요 :D
board[ ][ ]여기서요,, 빈칸에 숫자를 넣을때 게임판의 가로 세로를 넣는 건가요??? 여기서는 게임판을 바로 출력했잖아요,
근데 게임판 출력하기전에 다른글씨가 출력되고 게임판이 출력될경우에도 그냥 게임판의 가로 세로만 입력하면 되는건가요?>?? 아님 글씨가 적힌 부분의 좌표도 세어서 포함시켜야 하는 건가요????