c언어 간단한 가위바위보 프로그램

250x250

간단한 가위바위보 프로그램

이번에는 간단한 가위바위보 프로그램입니다.

조건.

1. 숫자를 입력받는다 1~3

1=가위 2=바위 3=보 

2. 1~3말고 다른 숫자를 입력하면 다시 입력받는다.

3. 가위바위보를 몇 번 했는지 나오게 한다.

4. 컴퓨터가 랜덤으로 나오게 한다.

5. 점수를 출력한다. 

c언어로 가위바위보 만들기 코드

이번에는 코드입니다.

//가위바위보.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int wl(int a, int b);
int main(){
	int i,player,w,score,num=0;
	srand(time(NULL));
	printf("가위 바위 보 게임입니다.\n");
	printf("1. 가위 2. 바위 3. 보\n");	
re:
	while(1){
		printf("5초후 시작합니다.\n"); 
		Sleep(1000); //1초 
		printf("4초\n"); 
		Sleep(1000); //1초 
		printf("3초\n");
		Sleep(1000); //1초 
		printf("2초\n");
		Sleep(1000); //1초 
		printf("1초\n");
		Sleep(1000); //1초 
		printf("가위 바위 보!!\n");
		i=rand()%3+1; //1에서 3  
		//ex %5+3 => 3,4,5,6,7
		scanf("%d",&player); //숫자를 입력받음 
		system("cls"); //화면 삭제 
		if(player>3||player<1){
			printf("다시\n");
			goto re;
		}
		num++; //num값이 하나 올라감. 
		w=wl(i,player); //wl에 i,player값을 넣고 리턴받은 값을 w에 저장 
		score+=w; //스코어=스코어+w 
		printf("점수: %d 경기횟수%d \n\n",score,num);
	} 
	return 0;
}
int wl(int a, int b) //i,player
{
	if(a==b){ //a와b가 같으면  
		if(a==1)printf("com = 가위 player= 가위 \n"); //둘다 1일때 
		else if(a==2)printf("com = 바위 player= 바위 \n"); //둘다 2일때 
		else if(a==3)printf("com = 보 player= 보 \n");  //둘다 3일때 
		printf("비김\n");
		return 0; //비기면 0을 리턴함 
	}
	switch(b){
		case 1: //가위 
			//win
			if(a==3){ //플레이어는 1을 내고 컴퓨터는 3을냄  
				printf("com = 보 player= 가위 \n");
				printf("이김\n");
				return 1; 	//1을 리턴 
			}
			//lose 
			else if(a==2){ //플리에어는 1을내고 컴퓨터는 2를 냄 
				printf("com = 바위 player= 가위 \n");
				printf("짐\n");
				return -1;	 //-1을 리턴 
			}
		case 2: //바위 
			//win
			if(a==1){ //플레이어는 2를내고 컴퓨터는 1을냄 
				printf("com = 가위 player= 바위 \n");
				printf("이김\n");
				return 1; 	
			}
			//lose
			else if(a==3){ //플레이어는2를내고 컴퓨터는 3을냄 
				printf("com = 보 player= 바위 \n");
				printf("짐\n");
				return -1;	 
			}
				
		case 3: //보 
			//win
			if(a==2){ //플레이어는 3을내고 컴퓨터는2를냄 
				printf("com = 바위 player= 보 \n");
				printf("이김\n");
				return 1; 	
			}
			//lose
			else if(a==1){ //플레이어는 3을내고 컴퓨터는 1을냄 
				printf("com = 가위 player= 보 \n");
				printf("짐\n");
				return -1;	 
			}		
	}
}

 

난수

stdlib.h와 time.h를 포함해서 srand와 time함수를 사용함.

이것을 사용하지 않고 그냥 rand함수만 사용하면 게임을 실행했을때 의사난수가 나오게 된다.

srand로 시드값을 설정 컴퓨터의 시간을 가져와 시드값으로 하기때문에 매번 실행할 때마다 다른 숫자를 볼 수 있다.

(의사난수란? 컴퓨터의 알고리즘에 의해 생성된 난수로 사실상 진짜 난수는 아니다. 프로그램을 다시실행하면 똑같은 난수가 나오는 것을 볼 수 있다.) 

지연과 화면삭제

windows.h를 포함해서 system("cls");와 Sleep(1000);사용 (Sleep에서 s는 대문자로 사용해야함.)

system("cls")를 사용하면 그 전에 나왔던 글자들이 모두 지워지고 Sleep(1000)은 1초를 지연시킨다.

레이블과 goto문

레이블은 구간을 나눈다고 생각하면 될것같다. 위의 코드에서는 re:로 표기했다.

goto re;를 사용해 re:로 이동했으며 권장하는 코드는 아니다.

그 외의 코드설명

wl에서 각각 0,1,-1을 리턴해서 리턴값을 w에 저장하고 score값과 더해서 점수구현.

그 외의 나머지는 위 가위바위보 코드의 주석을 참고하면 될 것 같다.

실행및 코드파일

아래는 위에서 말한 코드를 실행한 사진이다.

6번 진행하고 3점을 얻었다.(하드모드 만드려다가 이것도 이기기 어려워서 포기했다.)

가위바위보.c
다운로드

 

가위바위보 프로그램 실행

but. 자동종료 불가능. 경기가 무한대로 이어짐.

5,4,3,2,1이렇게 출력되는 중에도 코드를 입력하면 보이지는 않지만 실행이 되는것 같음.

Designed by JB FACTORY