기타 강좌

같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다.
사진과 실행파일과 소스 첨부했습니다.
그림맞추기 실행.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언어 알았습니다..그럼 게시물은 다 삭제해버리겠습니다.. 8 제니스 2009.06.16 2278
기타 캐릭터고르는 이벤트 만들기 1 file ☆고진수 2011.08.25 2263
기타 [VB6 강좌] 1~5강 강의평가 2 독도2005 2009.05.05 2256
C언어 같은 그림맞추기 구현 체크와 엔딩 정체불명 2012.01.19 2251
어도비 프리미어 [ 프리미어 프로] 영상 소리가 한쪽에서만 나올경우 대처방법 아방스 2017.08.01 2247
C언어 정체불명 강의노트 개발툴의 설치 2 정체불명 2009.05.16 2246
XpressEngine 2011.11.05 XE Camp - XE 소개 및 오픈소스 참여 방법 3 아방스 2011.11.06 2244
기타 컴퓨터에 설치된 코덱 확인방법 아방스 2010.05.31 2232
C언어 C 프로그래밍 기초 1 아방스 2009.01.12 2228
css display 속성 아방스 2011.09.17 2217
기타 [꿈꾸는소년의 스토리강좌]RPG의 형식과 스토리 관계(4):ORPG 3 file 꿈꾸는소년 2008.03.27 2208
XpressEngine 2011.11.05 XE Camp - XE 개발팀에 직접 물어보세요 아방스 2011.11.08 2202
기타 JHL's STUDY_캐릭터의 중심 "콘티" file J H L 2010.04.02 2197
기타 시나리오 작법 서론 종합 4 wigen 2010.09.26 2178
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [변수의 선언] -Zennys- 2009.06.13 2175
C언어 같은 그림 맞추기 구현 - 출력,입력 정체불명 2012.01.19 2171
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Clean E-Commerce Web Buttons file 아방스 2011.12.07 2166
C언어 시작의반 6 file 정체불명 2009.05.01 2166
기타 - 하늘 -의 리눅스 book! [ <3>리눅스의 기초!] 1 file - 하늘 - 2009.08.03 2161
C언어 [C언어] 주석에 대해 [Dark].Angel 2009.01.14 2151
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19