티스토리 뷰
반응형
다른 강의자료는 www.codingnow.co.kr/ 여기를 참고해주세요.!!
https://youtu.be/61Y5O-Pq1rI?si=Y-91uy8z5JQvrF42
묵찌빠 게임을 만들어 봅니다.
여기서는 if와 함수 사용법과 파이썬의 list활용법과 배을의 사용법을 학습할 수 있습니다.
게임 진행 방식은
1. 가위바위보를 해서 선제 공격을 정하고
2. 이긴 쪽에서 공격 진쪽에서 수비를 합니다.
checkWin( ) 함수를 가위바위보와 묵찌빠에서 공유하여 사용하게 됩니다.
즉, 함수 하나로 가위바위보와 묵찌빠의 조건을 판단하게 됩니다.
자세한 설명은 동영상을 참고해주세요.
[참고] 5판3선승 소스는 여기를 참고하세요 : https://cflab2017.tistory.com/111
실행결과
파이썬 강의 소스코드
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언어 강의소스
#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=
반응형
'파이썬 강의' 카테고리의 다른 글
파이썬 기초 활용편 #타임랩스 동영상 제작 툴 만들기 (0) | 2022.01.24 |
---|---|
파이썬 기초 활용편 #사무자동화 프로젝트 #pandas로 정리된 데이타를 #한글문서(HWP) 양식을 제어하여 상장 자동 생성하기 #한글API (0) | 2021.04.26 |
파이썬 기초 활용편 #사무자동화 프로젝트 #엑셀의 데이타를 pandas를 활용한 데이타 처리하기#pandas (0) | 2021.04.08 |
파이썬 기초 활용편 #사무자동화 프로젝트 #계산기 자동실행하여 계산하기#pyautogui (0) | 2021.04.02 |
파이썬 기초 활용편 #사무자동화 프로젝트 #엑셀 자동실행하고 자동 입력하기#pyautogui (0) | 2021.03.31 |