기타 강좌

같은 그림맞추기 오타정정과 약간 수정한 최종 버전입니다.
사진과 실행파일과 소스 첨부했습니다.
그림맞추기 실행.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언어 C# - 시스템 정보 받기 2 file 코르뉴 2010.07.11 2831
C언어 [C언어] scanf()함수에 대해 [Dark].Angel 2009.01.14 2830
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Red Download Button file 아방스 2011.12.07 2829
기타 [파이썬] while문 제어구조 알아보기)7( 1 - 하늘 - 2009.09.08 2806
플래시 플래시 MX 활용법! 1 은색바람 2011.09.09 2796
기타 포토스케이프 - 사진 색감 보정하기 아방스 2010.11.04 2782
기타 번외 2편 : 게임 엔진 서론 1 코르뉴 2011.06.17 2780
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [변수의 종류] 2 -Zennys- 2009.06.13 2767
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [그외 입출력 함수] -Zennys- 2009.06.13 2764
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Light to Dark Web Buttons file 아방스 2011.12.07 2759
기타 [꿈꾸는소년의 스토리강좌]RPG의 형식과 스토리 관계(2):액션RPG 12 file 꿈꾸는소년 2008.03.12 2754
웹디자인 관련 웹 디자인 무료 버튼 템플릿! - Download The Source Files Button file 아방스 2011.12.07 2752
C언어 [ - Zennys - ] 제니스의 C언어 강좌 [변수의 정의] 2 -Zennys- 2009.06.13 2752
C언어 [-구름-] 배열로 스택구현하기 3 [SST]구름 2009.06.13 2747
기타 [C++] 랜덤 자라 2008.01.29 2740
기타 [파이썬] 파이썬을 배우자 )1( 6 - 하늘 - 2009.09.05 2730
기타 게임 엔진, 그것이 궁금하다. 7 아방스 2008.03.22 2718
C언어 c언어로 같은그림 찾기 만들기 -기획편 1 정체불명 2012.01.18 2707
C언어 파일읽어서 배열에 넣고 다시배열에서 읽어서 화면에 출력 정체불명 2012.01.21 2701
웹디자인 관련 테이블은 이제 그만 쉬어야 할 때. 3 아방스 2007.11.07 2688
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19