반응형
<C언어로 가위바위보 프로그램 만들기>
가위 바위 보 게임을 만들어 보자.
사용자로부터 가위 바위 보 중에서 하나를 입력받는다. 그리고 컴퓨터는 난수 생성을 통해서 가위 바위 보 중에서 하나를 선택하게 한다.
이 둘을 비교해서 승자와 패자를 가려주는 프로그램을 작성해보자. 단, 프로그램의 진행은 사용자가 질때까지 계속되어야하고, 마지막에 가서는 게임의 결과(a승 b무)까지 출력해 주도록 하자.
1 바위 2 가위 3 보 의 가정하에
컴퓨터가 1~3까지 난수를 생성하기위해 3으로나눈나머지의수 012가 나오도록한뒤, +1을 해주어 1,2,3중 하나의 난수가 발생한다.
이후 내가 입력한 숫자와 컴퓨터의 숫자를 합하여 짝수인경우와 홀수인경우를 보면
무승부인경우를 제외하여
짝수인경우는 1-3 3-1 바위와 보의 경우로 큰수가 이기게된다.
홀수인경우는 2-1, 2-3, 1-2,3-2의 경우로 작은수가 이기게된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int num; int com; int comwin=0; int win=0; int zim=0; while(comwin==0) { printf("바위1, 가위2, 보3 :"); scanf("%d",&num); srand((int)time(NULL)); com=rand()%4; com=com+1; if(com==num) { printf("비겼습니다.\n"); } else if((com+num)%2==0) { if(com>num) { printf("컴퓨터가 %d,당신이 %d 컴퓨터가 이겼습니다.\n",com,num); comwin=1; zim++; } else { printf("컴퓨터가 %d,당신이 %d 당신이 이겼습니다.\n",com,num); win++; } } else if((com+num)%2==1) { if(com>num) { printf("컴퓨터가 %d,당신이 %d 당신이 이겼습니다.\n",com,num); win++; } else { printf("컴퓨터가 %d,당신이 %d 컴퓨터가 이겼습니다.\n",com,num); comwin=1; zim++; } } } printf("%d승 %d패",win,zim); } | cs |
<가위바위보 표시해주기>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int num;//사용자의 선택 int com;//컴퓨터의 난수 int comwin=0; // 사용자가 질때까지 하기위한 변수 int win=0; //승 int zim=0; //패 int same=0; //무 while(comwin==0) //cowin이 0과 같다면 반복한다.(컴퓨터가이긴경우 cowin1로 바꿈) { printf("바위1, 가위2, 보3 :"); scanf("%d",&num); //사용자의 선택을 받는다. srand((int)time(NULL)); //time으로 시드를줌 com=rand()%3; //0~2까지 난수를 발생 com=com+1;//컴퓨터의 난수를 1~3으로 if(com==num) //만약 컴퓨터에서 생성된 난수와 사용자의 선택이 같다면 { printf("비겼습니다.\n"); //비겼습니다 출력 same++; //same 변수(무승부횟수변수)증가 } else if((com+num)%2==0) //만약 컴퓨터난수와사용자선택의 합이 짝이라면, { if(com>num) //컴퓨터가 더 큰수라면, { printf("컴퓨터가 %d번 보,당신이 %d번 바위 컴퓨터가 이겼습니다.\n",com,num); comwin=1; //cowin변수가 1이됨 zim++; //zim변수증가 } else //컴퓨터가 더 큰수가 아니라면, { printf("컴퓨터가 %d번 바위,당신이 %d번 보 당신이 이겼습니다.\n",com,num); win++; //win변수증가 } } else //같지도않고, 두수의합이 짝수도 아니라면(홀수라면) { if(num==2) //만약 사용자가 2번을 골랐다면, { if(com>num) //com이 3이라면, { printf("컴퓨터가 %d번 보,당신이 %d번 가위 당신이 이겼습니다.\n",com,num); win++; } else //com이 3이 아니라면(1이라면) { printf("컴퓨터가 %d번 바위,당신이 %d번 가위 컴퓨터가 이겼습니다.\n",com,num); comwin=1; //cowin변수가 1이됨 zim++; //zim변수증가 } } else //사용자가 2도아니고 두수의합이 홀수라면, 2-1의경우 2-3의경우 { if(com>num) { printf("컴퓨터가 %d번 가위,당신이 %1d번 바위 당신이 이겼습니다.\n",com,num); win++; } else { printf("컴퓨터가 %d번 가위,당신이 %d번 보 컴퓨터가 이겼습니다.\n",com,num); comwin=1; zim++; } } } } printf("%d승 %d패 %d무",win,zim,same); } | cs |
<실행결과>
반응형
'c언어 > c언어 (문제풀기)' 카테고리의 다른 글
c언어 난수 이용하여 0~100까지 숫자 10개를 출력후, 최대 최소값 각2개씩 출력하고 나머지 여섯개의 평균을 구하기 (0) | 2017.09.05 |
---|---|
2_6. c언어로 야구게임만들기 (0) | 2017.08.28 |
2_4 c언어 난수이용해 주사위 만들기 (1) | 2017.08.25 |
2_3난수 생성(0~99사이의 숫자) (0) | 2017.08.25 |
2_2 C언어 2차원배열로 달팽이 만들기(숫자입력받아서 달팽이 만들기) (0) | 2017.08.25 |