기타 강좌

같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다.
사진과 실행파일과 소스 첨부했습니다.
그림맞추기 실행.PNG
/*필요한 헤더파일을 포함합니다*/
#include <stdio.h>/*나중에 더 필요하면 그때 추가해도되요*/
#include <stdlib.h>
#include <Windows.h>/*W는 대문자입니다*/
#include <time.h>
/*전역변수를 선언합니다.*/
int 카드판[10][10];
int 카드상태[10][10];
POINT 첫번째선택;
POINT 두번째선택;
void 초기화();
void 출력();
void 첫번째입력();
void 두번째입력();
void 둘다맞나체크();
int 게임끝체크();
void 엔딩();
void gotoxy(int x, int y);//그냥 가져와서 붙여넣은 함수
int main()
{
초기화();/*카드판을 랜덤으로 세팅하고 카드상태를 모두 뒷면으로*/
while(1)
{
출력();/*카드상태에 따라서 해당 카드를 출력*/
첫번째입력();/*입력받아서 적절한 좌표인지 검사후 첫번째선택 변수에 저장 해당 좌표의 카드는 임시앞면 상태로 만들기*/
출력();
두번째입력();/*입력받아서 적절한 좌표인지 검사후 (좌표가 카드판의외부인지 첫번째선택과 곂치는지)두번째선택 변수에 저장 해당 좌표의 카드는 임시 앞면 상태로 만들기*/
출력();
Sleep(500);/*0.5초동안 멈춰있기*/
둘다맞나체크();/*첫번째입력과 두번째입력의 좌표에 있는 숫자가 같으면 카드 두개 상태를 앞면으로 바꾸기 아닐경우 둘다 뒷면으로 바꾸기*/
출력();
if(게임끝체크()==1)/*모든 카드의 상태가 앞면이라면 게임끝 엔딩호출*/
{
엔딩();
}
}
}


void 초기화()
{
int 놓을카드;
int x1,y1;
int x2,y2;
int 놓을카드갯수=10 * 10;
int 카드세기;
srand((unsigned)time(NULL));//rand()함수쓰기전에 꼭 써야 제대로된 랜덤이 나와요
ZeroMemory(카드상태,400);
ZeroMemory(카드판,400);
for(카드세기=1;카드세기<=놓을카드갯수;카드세기= 카드세기+2)
{
놓을카드=rand() % 10;//10으로나눈 나머지는 항상 0~9입니다 이해하기 어려우면 0~9의 랜덤한 값을 내놓는 문장이라고 생각면 되요
while(1)
{
x1=rand() % 10;
y1=rand() % 10;
x2=rand() % 10;
y2=rand() % 10;
if(x1 != x2 || y1 != y2)
{
카드판[y1][x1]=놓을카드;
카드판[y2][x2]=놓을카드; 
break;
}
}
}
}

void 출력()
{
int x,y;
system("cls");
for(y=0;y<10;y++)
{
for(x=0;x<10;x++)
{
gotoxy(x*2,y);
if(카드상태[y][x]==0)
{
printf(" ?");
}else
{
printf(" %d",카드판[y][x]); 
}

}
}
}

void 첫번째입력()
{
while(1)
{
gotoxy(0,15);
printf("처음 뒤집을 x입력: ");
scanf("%d",&첫번째선택.x);
printf("처음 뒤집을 y입력: ");
scanf("%d",&첫번째선택.y);  
if(첫번째선택.x<0 || 첫번째선택.y<0 || 첫번째선택.x >=10 || 첫번째선택.y >=10)
{
printf("입력값이 범위를 벗어났습니다");
}
else if(카드상태[첫번째선택.y][첫번째선택.x]!=0)
{
printf("뒷면인 카드를 선택해주세요");
}
else
{
카드상태[첫번째선택.y][첫번째선택.x]=2;//상태가 0이면 뒷면 1이면 앞면 2면 임시로뒤집은 앞면이라고정해요
break; 
}
}

void 두번째입력()
{
while(1)
{
gotoxy(0,15);
printf("두번째 뒤집을 x입력: ");
scanf("%d",&두번째선택.x);
printf("두번째 뒤집을 y입력: ");
scanf("%d",&두번째선택.y);  
if(두번째선택.x<0 || 두번째선택.y<0 || 두번째선택.x >=10 || 두번째선택.y >=10)
{
printf("입력값이 범위를 벗어났습니다");
}
else if(카드상태[두번째선택.y][두번째선택.x]!=0)
{
printf("뒷면인 카드를 선택해주세요");
}
else if(카드상태[두번째선택.y][두번째선택.x] == 0)
{
카드상태[두번째선택.y][두번째선택.x]=2;//상태가 0이면 뒷면 1이면 앞면 2면 임시로뒤집은 앞면이라고정해요
break; 
}
}



void 둘다맞나체크()
{
if(카드판[첫번째선택.y][첫번째선택.x] == 카드판[두번째선택.y][두번째선택.x])
{
카드상태[첫번째선택.y][첫번째선택.x] = 1;//1은 앞면 2는 임시로뒤집은앞면
카드상태[두번째선택.y][두번째선택.x] = 1;
else
{
카드상태[첫번째선택.y][첫번째선택.x] = 0;//0은 뒷면 1은 앞면 2는 임시로뒤집은앞면
카드상태[두번째선택.y][두번째선택.x] = 0;

}
}

//게임 끝 체크 리턴타입을 int로 바꿧습니다.
//메인도 살짝 바꾸고 엔딩함수도 추가합니다.
int 게임끝체크()
{
int y,x;
for(y=0;y<10;y++)
{
for(x=0;x<10;x++)
{
if(카드상태[y][x] != 1)
{
return 0; 
}
}
}
return 1;//여기까지 왔다면 모든 카드상태가 1이라고 볼수있음

}

void 엔딩()
{
gotoxy(0,0);
printf("클리어!\n");
Sleep(1000);
printf("제작 정체불명(김태윤)\n");
Sleep(1000);
printf("플레이해주셔서감사합니다\n");
Sleep(1000);
printf("잠시후 다시시작됩니다\n");
Sleep(2000);

}

void gotoxy(int x, int y)
{
     COORD Cur;
     Cur.X=x;
     Cur.Y=y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}

Who's 정체불명

profile

두팔과 의지가 있는데 무엇을 못 하겠는가!

< http://mpnp.tistory.com >

Comment '3'
  • profile
    에돌이 2012.01.21 11:33

    아닛! 이럴 수가, 엄청나게 달리셨군요, 이틀만에 열글이나 쓰시다니. 덕분에 프로그래밍 소모임이 활성화 될 수 있는 촉진되가 될 수 있을것 같습니다. 감사합니다.

  • profile
    정체불명 2012.01.21 13:17

    흐익 관심 감사합니다 

    그런데 인기가 매우 없군요;;

  • ?
    overmind 2013.07.18 03:10 Files첨부 (1)

    저기요... 제가 실수로 뒤집힌 카드를 써서

     

    캡처.PNG

    이렇게 됬거든요? 그러고 방향키 /\(위) 누르니까 ?표로 가려진 숫자가 나오는 듯해요. 누를때마다 3 4 8 0 2 처럼 계속 숫자가 바뀌는데요?

                                                              |


List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 886
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 757
기타 번외 2편 : 게임 엔진 서론 1 코르뉴 2011.06.17 2780
시네마4D [예제/프로젝트] 구름 애니메이션 아방스 2011.05.25 2621
시네마4D [나무 의자 만들기] Model A Wooden Chair In Cinema4D 1 file 아방스 2011.04.18 3404
시네마4D 시네마4D R12 버전 한글 도움말 파일 아방스 2011.04.16 3362
에프터 이펙트 After Effects CS5.5 / 기능 아방스 2011.04.16 2668
에프터 이펙트 붓 칠해지는 느낌의 자막 1 file 아방스 2011.02.27 3340
기타 악축파일 압축해제 방법 설명 4 아방스 2011.01.21 2052
기타 카일 쿠퍼의 강의 입니다. Kyle Cooper: The Film Inside the Film (lecture) 아방스 2011.01.17 2415
기타 이런 옷은.. 처음이야 ! 패션 이미지들 3 file 꼴뚜기무침 2010.11.25 2551
플러그인 [플러그인] Optical Flares 1.2.132 버전 패치 2 아방스 2010.11.22 8479
시네마4D [플러그인] HDRI Light Kit Pro version 1.5 file 아방스 2010.11.22 3256
기타 아이디어를 얻고싶다면 ! 나열하고 선택해라 3 file 꼴뚜기무침 2010.11.13 2435
기타 동영상에서 원하는 부분만 잘리서 편집하기 아방스 2010.11.05 1986
기타 포토스케이프 - 사진 색감 보정하기 아방스 2010.11.04 2782
기타 동영상 용량 100메가 이하로 줄이기 아방스 2010.11.04 2294
기타 유튜브 동영상 다운로드 하기 6 아방스 2010.11.03 2499
기타 프로그래밍 scheme 빨간 공을 움직이다가 특정 좌표에 가면 파랗게 만들어 보자. file 정체불명 2010.10.06 2648
기타 프로그래밍 스킴 7줄로 윈도우창에 그림을 출력하고 움직여보자. file 정체불명 2010.10.04 2477
기타 프로그래밍 스킴 Scheme 4 "3두개 7두개로 24를 만들려면?" 프로그래밍으로 풀기 2 정체불명 2010.10.03 2479
기타 프로그래밍 스킴 Scheme 3 "3두개 7두개로 24를 만들려면?" 프로그래밍으로 풀기 1 정체불명 2010.10.03 2606
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19