기타 강좌

같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다.
사진과 실행파일과 소스 첨부했습니다.
그림맞추기 실행.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
C언어 같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다. 3 file 정체불명 2012.01.19 2917
C언어 같은 그림맞추기 구현 체크와 엔딩 정체불명 2012.01.19 2251
C언어 같은 그림 찾기를 구현 1 정체불명 2012.01.19 2604
C언어 같은 그림 맞추기 구현 - 출력,입력 정체불명 2012.01.19 2171
Vegas Pro 같은 공간에 같은 인물 등장 하도록 편집 2 file 아방스 2012.11.06 2941
플러그인 [플러그인] Optical Flares 1.2.132 버전 패치 2 아방스 2010.11.22 8478
시네마4D [플러그인] HDRI Light Kit Pro version 1.5 file 아방스 2010.11.22 3256
어도비 프리미어 [프리미어프로] 음성변조 효과 적용 하기 아방스 2017.01.01 583
어도비 프리미어 [프리미어프로] 시계 애니메이션 만들기 file 아방스 2017.01.08 3382
어도비 프리미어 [프리미어프로] 사진으로 영상만들어 유튜버 되어보자 아방스 2017.02.05 89
어도비 프리미어 [프리미어프로] 매드무비 제작 팁 스킬창 확대해 보여주기 아방스 2017.02.05 166
어도비 프리미어 [프리미어프로] 레이아웃 초기화 및 저장,삭제 방법 아방스 2017.02.05 583
어도비 프리미어 [프리미어프로cc2017] 자동으로 길이 조절 되는 자막 바 file 아방스 2017.08.01 5013
어도비 프리미어 [프리미어프로cc2017.1] 제목 메뉴와 자막 템플릿이 사라졌어요! 아방스 2017.08.01 987
어도비 프리미어 [프리미어프로cc2017.1] 자막바 길이자동 조절 ver. 2 file 아방스 2017.08.01 472
어도비 프리미어 [프리미어프로cc2017.1] 애니메이션 자막 템플릿 만들어보기 아방스 2017.08.01 458
어도비 프리미어 [프리미어cc2017] 프록시 편집에 대해서 아방스 2017.08.01 789
어도비 프리미어 [프리미어CC 신기능] 마스크 추적 사용법 알아보기 아방스 2017.08.01 326
어도비 프리미어 [프리미어cc 2015 강좌] pip 효과 만들기 아방스 2016.12.19 202
어도비 프리미어 [프리미어 프로] 영상 회전시키기 (거꾸로 촬영된경우) 아방스 2017.08.01 1835
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19