( C/C++ ) 내가 만든 가위바위보 게임 [ 소스코드 ]
2009/정보통신 2008. 5. 2. 20:23 |내가 알고 있는것 만으로 이정도의 프로그램을 만들수 있다는 것이 너무나 신기하고 성취감을 느끼는 요즈음이다
예전부터 프로그램밍을 배워보고 싶었지만 혼자서 조금 깔짝이다 마는 의욕부족으로 하지 않고 있었던 것을 이곳
개발원에서 배우고 있다.
재미있다. 어떤 과목보다도 거기다 이런과제로 주어진 것을 내가 해결할수 있다는 것또한 재미있다.
매번 수업마다 이런 떡밥에 낚여서 조금 더 높은 수준으로 내가 향상될수 있기를 간절히 바라고 또 기대해본다.
아래는 수업 마지막에 "C프로그래밍이 좋아서 미치겠다 그래서 도전해보고 싶다 하는 사람만 만들어보라"고 해서 만들어 본 가위바위보 게임 만들기과제를 스스로의 힘으로 해결해본 소스코드이다.
100% 내 힘으로 해결한건 아니다. 문자값을 입력 받았을때 "0, 1, 2, 3, 중 하나만 입력해주세요."
라는 문자열이 출력되도록 하는데 필요한 지식은 교수님에 도움을 받았다.
이것을 만들고 다른사람들은 어떻게 이 문제를 해결했는지가 궁금해서 동호회나 카페를 돌아다니면서
구경을 하곤 했다. 나처럼 그런분이 있다면 보실수 있길 바라는 마음에 소스코드를 공개해본다.
필요하신분 마음껏 이용하세요. 제가 직접 짠 것이니 문제는 없겠지요 캬하하하하~~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int main()
{
int i,com,user,check;
char comre[5],ttre[20];
printf("1 : 가위, 2 : 바위, 3 : 보, 0 : 프로그램 종료\n\n");
for(i=1;i<=i+1;i++)
{ //for문 괄호 시작
com = 0;
srand((unsigned)time(NULL));
com = rand()%3+1;
if (com==1)
strcpy(comre,"가위");
else if (com==2)
strcpy(comre,"바위");
else
strcpy(comre,"보");
printf("가위!바위!보!");
restart: //1, 2, 3, 0, 이 아닐때 다시 값을 받는곳으로
check=scanf("%d",&user); //문자를 %d로 입력받으면 error이므로 체크값이 0이 됨을 이용.
fflush(stdin);
if(!check)
{
md:
printf("\n0, 1, 2, 3, 중 하나만 입력해주세요.");
goto restart;
}
else if ( user==1 || user==2 || user==3 ||user==0 )
;
else
goto md;
if (user == 0) //그만두고 싶을때 0입력
goto end;
else if ( com==1 && user==2 ) //user 승리 시작
strcpy(ttre,"당신이 이");
else if ( com==2 && user==3 )
strcpy(ttre,"당신이 이");
else if ( com==3 && user==1 )
strcpy(ttre,"당신이 이"); //user 승리 끝
else if ( com==2 && user==1 ) //com 승리 시작
strcpy(ttre,"컴퓨터가 이");
else if ( com==3 && user==2 )
strcpy(ttre,"컴퓨터가 이");
else if ( com==1 && user==3 )
strcpy(ttre,"컴퓨터가 이"); //com 승리 끝
else
strcpy(ttre,"비");
printf("컴퓨터는 %s이고, %s겼습니다.\n\n",comre,ttre);
} //for문 반복 끝
end:
return 0;
}
//진짜 마지막 수정
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int main()
{
int com,user,check,i;
char comre[5],userre[20],uwin[]="당신이 이",cwin[]="컴퓨터가 이",draw[]="비";
printf("0 : 종료, 1 : 가위, 2 : 바위, 3 : 보\n\n");
srand((unsigned)time (NULL));
for (i=1;i<=i+1;i++)
{ //for문 반복 구간 시작
com = rand()%3+1;
if (com == 1)
strcpy(comre,"가위");
else if (com ==2)
strcpy(comre,"바위");
else
strcpy(comre,"보");
restart:
printf("가위~!,바위~!,보~!\n입력 : ");
check=scanf("%d",&user);
fflush(stdin);
if (check==0) //문자값을 입력받을 경우
{
md:
printf("\n0~3까지의 값만 입력해주세요.\n\n");
goto restart;
}
else if (0<=user && user <= 3) //입력을 정확히 했을때
;
else
goto md; // 0~3까지의 숫자를 제외한 다른 값을 입력 받을때
if (user == 0) //그만두고 싶을때 0입력
goto end;
else if ( com==1 && user==2 ) //user 승리 시작
strcpy(userre,uwin);
else if ( com==2 && user==3 )
strcpy(userre,uwin);
else if ( com==3 && user==1 )
strcpy(userre,uwin); //user 승리 끝
else if ( com==2 && user==1 ) //com 승리 시작
strcpy(userre,cwin);
else if ( com==3 && user==2 )
strcpy(userre,cwin);
else if ( com==1 && user==3 )
strcpy(userre,cwin); //com 승리 끝
else
strcpy(userre,draw);
printf("\n컴퓨터는 %s이고, %s겼습니다.\n\n",comre,userre);
}//for문 반복구간 끝
end:
return 0;
}
'2009 > 정보통신' 카테고리의 다른 글
배열을 이용한 큰수&작은수 비교후 찾기 소스코드 (6) | 2008.05.10 |
---|---|
vc++ 에러 : The variable 'max' is being used without being defined. (4) | 2008.05.10 |
정보통신개론_리피터란? (네이버펌) (0) | 2008.04.28 |
for문 이건 이해가 잘 않된다. (5) | 2008.04.28 |
구글검색때 도움되는 연산자와 고급옵션 설명페이지링크 (1) | 2008.04.13 |