기타 강좌

같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다.
사진과 실행파일과 소스 첨부했습니다.
그림맞추기 실행.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 917
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 809
C언어 c언어로 구구단 프로그래밍 하는 영상 1 정체불명 2014.11.02 746
C언어 C# 병렬처리! 스레드 사용하기 1 file 꿈달 2012.11.08 4134
C언어 소코반 실행파일+소스+스크린샷 file 정체불명 2012.01.25 3528
C언어 func.h함수소개 정체불명 2012.01.25 2357
C언어 푸쉬푸쉬 func.h파일 file 정체불명 2012.01.25 2869
C언어 푸쉬푸쉬 data structure.h 의 내용 file 정체불명 2012.01.25 2601
C언어 소코반 리팩토링 푸쉬푸쉬 file 정체불명 2012.01.25 2576
C언어 소코반(푸쉬푸쉬) 구조 정체불명 2012.01.21 2869
C언어 파일읽어서 배열에 넣고 다시배열에서 읽어서 화면에 출력 정체불명 2012.01.21 2705
C언어 소코반 따라만들기 준비 파일읽어배열에담기 정체불명 2012.01.21 2992
C언어 소코반 따라하기 준비 1 파일에서 읽어와서 출력 정체불명 2012.01.21 2860
C언어 한글자씩 출력하기 file 정체불명 2012.01.21 3732
C언어 사각형 테두리 그리기를 연습해봐요 3 file 정체불명 2012.01.21 5705
C언어 같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다. 3 file 정체불명 2012.01.19 2919
C언어 같은 그림맞추기 구현 체크와 엔딩 정체불명 2012.01.19 2255
C언어 같은 그림 맞추기 구현 - 출력,입력 정체불명 2012.01.19 2171
C언어 같은그림찾기 구현 2 초기화 정체불명 2012.01.19 2407
C언어 같은 그림 찾기를 구현 1 정체불명 2012.01.19 2608
C언어 c언어로 같은그림 찾기 만들기 -기획편 1 정체불명 2012.01.18 2718
C언어 정체불명의 프로그래밍 입문 중간체크 file 정체불명 2012.01.18 1617
Board Pagination Prev 1 2 3 4 5 Next
/ 5