티스토리 뷰

반응형

다른 강의자료는 www.codingnow.co.kr/ 여기를 참고해주세요.!!

 

코딩나우

프로그래밍 교육및 개발의뢰 받습니다.

www.codingnow.co.kr

youtu.be/61Y5O-Pq1rI

 

묵찌빠 게임을 만들어 봅니다.

 

여기서는 if와 함수 사용법과 파이썬의 list활용법과 배을의 사용법을 학습할 수 있습니다.

 

게임 진행 방식은 

1. 가위바위보를 해서 선제 공격을 정하고

2. 이긴 쪽에서 공격 진쪽에서 수비를 합니다.

 

checkWin( ) 함수를 가위바위보와 묵찌빠에서 공유하여 사용하게 됩니다.

즉, 함수 하나로 가위바위보와 묵찌빠의 조건을 판단하게 됩니다.

 

자세한 설명은 동영상을 참고해주세요.

[참고] 5판3선승 소스는 여기를 참고하세요 : https://cflab2017.tistory.com/111

 

파이썬과 C언어 기초 활용편#가위바위보 게임 응용하여 #묵찌빠 게임 만들기 2번째 #3선승제 #rando

이전 강의에 가위바위보 게임을 응용하여 묵찌빠 게임을 만들어 보았는데요. cflab2017.tistory.com/110 파이썬과 C언어 기초 활용편#가위바위보 게임 응용하여 #묵찌빠 게임 만들기#random 다른 강의자

cflab2017.tistory.com

 

실행결과

 

 

파이썬 강의 소스코드

 

main.py
0.00MB

 

import random

resStr = ['승리했습니다!!', '패배했습니다!!']
selStr = [['가위', '바위', '보'],['찌', '묵', '빠']]
###################################################################
## 함수 :: 가위바위보 승패를 체크합니다.
###################################################################
def checkWin(user, com):
    
    if user == com:#비겼을때
        return 2
    elif user == 0 and com == 1:#가위 vs 바위
        return 1
    elif user == 1 and com == 2:#바위 vs 보
        return 1
    elif user == 2 and com == 0:#보 vs 가위
        return 1
    else:#나머지는 이겼을때
        return 0

###################################################################
## 함수 :: user의 입력이 잘못되었는지 확인
###################################################################
def checkUser(user):
    if user < 0 or user > 2:  # 잘못입력한 것에 대한 예외처리
       print('잘못입력하였습니다. 다시 입력하세요(0,1,2)')
       return False
    return True

###################################################################
## 가위바위보를 하여 누가 먼저 공격할지 정합니다.
###################################################################
print('\n## 안내 ## 누가 공격을 할지 정합니다.(가위 바위 보)\n')
result = 0
while True:
    user = int(input("가위(0), 바위(1), 보(2)를 선택하세요: "))
    if checkUser(user):
        com = random.randint(0, 2)
        print(f'\t결과 => 사용자 ({selStr[0][user]}) 컴퓨터 ({selStr[0][com]})')
        result = checkWin(user, com)
        if result == 2:
            print('\t비겼습니다. 가위 바위 보 다시합니다.')
        else:
            break
    
###################################################################
## 묵찌빠를 시작합니다.
###################################################################
print('\n## 안내 ## 묵 찌 빠를 시작합니다.')

attack = 0
while True:
    print()
    if result == 0:
        print('[공격하세요] : ',end='')
        attack = 0
    elif result == 1:
        print('[수비하세요] : ',end='')
        attack = 1
    else:
        print('[다시하세요] : ',end='')
        
    user = int(input("묵(0), 찌(1), 빠(2)를 선택하세요 : "))
    if checkUser(user):
        #checkWin함수를 사용하기 위해 가위바위보 순으로 변경해줍니다.
        if user == 0:#묵
            user = 1
        elif user == 1:#찌
            user = 0
            
        com = random.randint(0, 2)
        print(f'\t결과 => 사용자 ({selStr[1][user]}) 컴퓨터 ({selStr[1][com]})')

        result = checkWin(user, com)
        
        if result == 2:
            print('\n',resStr[attack])
            break
        
        if attack==0:
            if result == 1:  # 컴퓨터에게 공격권이 넘어갑니다.
                attack = 1
        else:
            if result == 0:  # 유저에게 공격권이 넘어갑니다.
                attack = 0
        

C언어 강의소스

 

main.c
0.00MB

 

#include <stdio.h>
#include <windows.h>
#include <time.h>

//###################################################################
//## 함수 :: 가위바위보 승패를 체크합니다.
//###################################################################
unsigned char checkWin(unsigned char user, unsigned char com)
{
    if (user == com) //비겼을때 
        return 2; 
    else if (user == 0 && com == 1)// : #가위 vs 바위 
        return 1;
    else if (user == 1 && com == 2) //: #바위 vs 보
        return 1;
    else if (user == 2 && com == 0) // : #보 vs 가위
        return 1; 
    else// #나머지는 이겼을때 
        return 0;
}

//###################################################################
//## 함수 :: user의 입력이 잘못되었는지 확인
//###################################################################
unsigned char checkUser(unsigned char user)
{
    if (user < 0 || user > 2)  //# 잘못입력한 것에 대한 예외처리
    {
       printf("잘못입력하였습니다. 다시 입력하세요(0,1,2)\n");
       return 0;
    }
    return 1;
}

void main(void)
{
    unsigned char result, attack;
    unsigned int user, com;
    system("chcp 65001");
    srand(time(NULL));

    char *resStr[] = {"승리했습니다.!!", "패배했습니다.!!"};
    char *selStr[][3] = {{"가위", "바위", "보"}, { "찌", "묵", "빠"}};

    // printf("%s\n", selStr[0][0]);
// ###################################################################
// ## 가위바위보를 하여 누가 먼저 공격할지 정합니다.
// ###################################################################
    printf("\n## 안내 ## 누가 공격을 할지 정합니다.(가위 바위 보)\n");
    result = 0;
    while(1)
    {
        printf("가위(0), 바위(1), 보(2)를 선택하세요: ");
        scanf("%d",&user);
        if (checkUser(user)){
            com = rand()%3;
            printf("\t결과 => 사용자 (%s) 컴퓨터 (%s)\n", selStr[0][user], selStr[0][com]);
            result = checkWin(user, com);
            if (result == 2)
                printf("\t비겼습니다. 가위 바위 보 다시합니다.\n");
            else
                break;
        }
    }

// ###################################################################
// ## 묵찌빠를 시작합니다.
// ###################################################################
    printf("\n## 안내 ## 묵 찌 빠를 시작합니다.\n");
    attack = 0;

    while (1){
        printf("\n");
        if (result == 0){
            printf("[공격하세요] : ");
            attack = 0;
        }else if (result == 1){
            printf("[수비하세요] : ");
            attack = 1;
        }else{
            printf("[다시하세요] : ");
        }

        printf("묵(0), 찌(1), 빠(2)를 선택하세요 : ");
        scanf("%d", &user);

        if (checkUser(user)){
            // #checkWin함수를 사용하기 위해 가위바위보 순으로 변경해줍니다.
            if (user == 0)//#묵
                user = 1;
            else if (user == 1)//#찌
                user = 0;

            com = rand() % 3;
            printf("\t결과 => 사용자 (%s) 컴퓨터 (%s)",selStr[1][user],selStr[1][com]);

            result = checkWin(user, com);
            
            if (result == 2){
                printf("\n%s",resStr[attack]);
                break;
            }
            
            if (attack==0){
                if (result == 1)//:  # 컴퓨터에게 공격권이 넘어갑니다.
                    attack = 1;
            }else{
                if (result == 0)//  # 유저에게 공격권이 넘어갑니다.
                    attack = 0;
            }
        }
    }
}

참고강의

가위바위보 게임 참고 영상입니다.

1. www.codingnow.co.kr/python/?bmode=view&idx=5645891&back_url=&t=board&page=1

2. www.codingnow.co.kr/python/?bmode=view&idx=5913486&back_url=&t=board&page=

 

반응형