[8퍼즐]주석부탁드립니다.
분홍색진주
#include stdio.h
#include conio.h
#include stdlib.h
#include time.h
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3
int board[9];
int nbnumber;
void init(); //배열 board[i]에 순차적으로 1~9까지의 값을 기입후.board[8]=0nbnumber=8을 입력..
void mix(); //랜덤 함수와 타임 함수 를 사용하여 중복적이지 않게...값이 시간별로.섞이게 구성.
void getkey();
void change(int dir); //dir의 값에 따라 프린트할 값의 변화.
void drawboard(); //화면을 깨끗하게.. 지운후.값을 출력합니다.
bool check(); //배열 board[0]~board[8]까지의 값을 검사.
int main()
{
init();
mix();
drawboard();
while(1)
{
getkey();
drawboard();
if(check())
{
printf(COMPLETE\n);
break;
}
}
getch();
return 0;
}
void init()
{
int i;
for(i=0;i9;i++)
{
board[i]=i+1;
}
board[8]=0;
nbnumber=8;
}
void drawboard()
{
int i;
system(cls);
for(i=0;i9;i++)
{
if(board[i])
printf(%d ,board[i]);
else printf( );
if((i+1)%3==0)
printf(\n);
}
}
void getkey()
{
int ch;
do
{
ch=getch();
if(!ch)
ch=getch();
}
while(!(ch==72 || ch==80 || ch==75 || ch==77));
switch(ch)
{
case 72:change(UP);
break;
case 80:change(DOWN);
break;
case 75:change(LEFT);
break;
case 77:change(RIGHT);
break;
}
}
void change(int dir)
{
int ca,cb,t;
ca=cb=t=0;
if(dir==DOWN && nbnumber=3)
{
ca=nbnumber;
cb=ca-3;
nbnumber=cb;
}
else if(dir==UP && nbnumber =5)
{
ca=nbnumber;
cb=ca+3;
nbnumber=cb;
}
else if(dir==LEFT && nbnumber%32)
{
ca=nbnumber;
cb=ca+1;
nbnumber=cb;
}
else if(dir==RIGHT && nbnumber%30)
{
ca=nbnumber;
cb=ca-1;
nbnumber=cb;
}
t=board[ca];
board[ca]=board[cb];
board[cb]=t;
}
bool check()
{
int i;
bool f=1;//f의 값에 참을 기입..0이외의 숫자는 참으로 인식.
for(i=0;i8;i++)
{
if(board[i]!=i+1)//배열 board[(i)~(8*i-1)]번까지의 값과 (i+1)~(8*i+1)같은값이 아니면 f의 값은 0을 false라는 의미
f=0;
}
return f;
}
void mix()
{
int i;
srand((unsigned)time(NULL));
for(i=0;i2000;i++)
{
change(rand()%4);
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2654716 | c언어 고수님들 답좀적어주세요 급합니다 ㅠㅠ | 한말글 | 2024-05-13 |
2654688 | c언어 ㅠㅠ 너 무 어려 워요 ㅠ 도와주세요!! | 별빛 | 2024-05-13 |
2654659 | 구구단 소스 궁금한 점 도움 부탁드립니다! (2) | 미련곰팅이 | 2024-05-12 |
2654633 | 오류가 무었인가요..? (2) | 단순랩퍼 | 2024-05-12 |
2654603 | 어디가 잘못된지를 모르겠습니다. 한 번 봐주세요...ㅠ (2) | 글고운 | 2024-05-12 |
2654574 | 소스 추가좀 부탁드립니다. (등수 출력) | 크리미걸 | 2024-05-12 |
2654550 | 피보나치수열. (3) | 중독적 | 2024-05-11 |
2654521 | c초보 빙고관련게임... | 달콤이 | 2024-05-11 |
2654491 | 10진수를 2진수로 바꾸는법 (8) | 아잉 | 2024-05-11 |
2654412 | 빅오를 구하고 싶어요~ | 애기 | 2024-05-10 |
2654381 | 혼자 연구하는 c/c++ 질문 | 아잉 | 2024-05-10 |
2654352 | 행렬크기를 scanf로 입력받을수도 있나요..? | VanilLa | 2024-05-10 |
2654293 | 첫시작값과 끝값의 사이에 존재하는 정수들의 합을 구하는 것 (5) | 해긴 | 2024-05-09 |
2654185 | 64bit 환경에서 자료형의 크기가 좀궁그해요(완료) 더궁금한게 생겻어요(추가) (2) | 빈길 | 2024-05-08 |
2654152 | 확장자 exe로 변경 (1) | 한 | 2024-05-08 |
2654128 | c언어 간단하게 자판기만들려는데 ㅜㅜ | 유1혹 | 2024-05-08 |
2654074 | 배열에 들어있는값을 포인터에 옮기고 싶어요.. | 소라 | 2024-05-07 |
2654043 | 이차원 배열에 있는 값들 더하기.. | 선아 | 2024-05-07 |
2654011 | c언어 대문자소문자, 소문자대문자 변형하기, | 샤르 | 2024-05-07 |
2653985 | 실수 자료형 표현범위있잖아요 (1) | 패틱 | 2024-05-06 |