수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

C언어 간단한 소스 분석 부탁드립니다.

푸른들

2023.04.01


질문 제목 : 블랙잭 소스분석진행도중에 종료현상질문 내용 : 제가 복학하게 되면서 이전에 만들었던 블랙잭게임을 돌려봤습니다. 그러한데 배팅금액을 입력을 하고 난 후에 바로 종료되는 현상이 일어나서 소스를 살펴보니 왜그런지 문제점을 찾을수가 없어서 선배님들의 가르침을 구하고자 글을 올립니다.#includestdio.h
#includewindows.h
#includestdlib.h
#includetime.h

int deck=52;//카드장수
int card[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};//카드종류 a,2,3,4,5,6,7,8,9,10,j,q,k
int c1=4;//a카드
int c2=4;//2카드
int c3=4;//3카드
int c4=4;//4카드
int c5=4;//5카드
int c6=4;//6카드
int c7=4;//7카드
int c8=4;//8카드
int c9=4;//9카드
int c10=16;//10,j,q,k카드
int gold=10000;//소지금액
int bat=0;//배팅금
int player=0;//플래이어의 숫자 합
int dealer=0;//딜러의 숫자합
int choice=0;//화면 선택 숫자
int qd=0;//딜러의 카운트
int pd=0;//딜러의 두번째 카운트
int q=0;//플레이어의 카운트
int p=0;//플레이어의 두번째 카운트
char yn;//yes 또는 no 선택 변수

void menu()
{
system(mode con:cols=45 lines=8);
printf(\n\n ┌──────────┐\n);
printf( │꿈가사 의 블 랙 잭│\n);
printf( └──────────┘\n);
printf( [1]시작 [2]설명 [3]종료 \n);
scanf(%d,&choice);

}
void explain()//게임 설명 화면 함
{
do
{
system(cls);
printf(1.처음 시작시 배팅을 한후 카드를 받습니다.\n);
printf(2.배팅후 카드를 두장 받고 숫자를 확인합니다.(딜러의 카드는 1장만 확인가능)\n);
printf(3.여기서 카드를 더 받을수도 있고 그만 끝낼수도 있습니다.\n);
printf(4.숫자 21에 가까운 쪽이 승리~!(21이 되면 위너위너 치킨디너~배팅금액의 2배를 획득)\n);
printf([4]뒤로가기);
scanf(%d,&choice);
}while(choice4 || choice4);
}
void game()//게임시작 화면 함수
{
do
{
gold=gold-bat;
bat=0;system(cls);
printf(현재 남은 배팅금액:%d\n,gold);
printf(얼만큼 배팅하시겠습니까?\n);
printf((최소 100$이상));
scanf(%d,&bat);
}while(bat100);//배팅금액이 100이하일경우 무한반복
if(bat=100)
{
srand((unsigned)time(null));//초단위로 랜덤값을 바꿔줌
q=rand()%12;//11까지의 수를 랜덤으로 추출
p=rand()%12;//11까지의 수를 랜덤으로 추출
qd=rand()%12;
pd=rand()%12;system(cls);switch(card[q])
{
case 1:
c1--;
deck--;
break;
case 2:
c2--;
deck--;
break;
case 3:
c3--;
deck--;
break;
case 4:
c4--;
deck--;
break;
case 5:
c5--;
deck--;
break;
case 6:
c6--;
deck--;
break;
case 7:
c7--;
deck--;
break;
case 8:
c8--;
deck--;
break;
case 9:
c9--;
deck--;
break;
case 10:
c10--;br /--;
deck--;
break;
case 11:
c10--;
deck--;
break;
case 12:
c10--;
deck--;
break;
case 13:
c10--;
deck--;
break;
}
switch(card[p])
{
case 1:
c1--;
deck--;
break;
case 2:
c2--;
deck--;
break;
case 3:
c3--;
deck--;
break;
case 4:
c4--;
deck--;
break;
case 5:
c5--;
deck--;
break;
case 6:
c6--;
deck--;
break;
case 7:
c7--;
deck--;
break;
case 8:
c8--;
deck--;
break;
case 9:
c9--;
deck--;
break;
case 10:
c10--;
deck--;
break;
case 11:
c10--;
deck--;
break;
case 12:
c10--;
deck--;
break;
case 13:
c10--;
deck--;
break;
}
switch(card[qd])
{
case 1:
c1--;
deck--;
break;
case 2:
c2--;
deck--;
break;
case 3:
c3--;
deck--;
break;
case 4:
c4--;
deck--;
break;
case 5:
c5--;
deck--;
break;
case 6:
c6--;
deck--;
break;
case 7:
c7--;
deck--;
break;
case 8:
c8--;
deck--;
break;
case 9:
c9--;
deck--;
break;
case 10:
c10--;
deck--;
break;
case 11:
c10--;
deck--;
break;
case 12:
c10--;
deck--;
break;
case 13:
c10--;
deck--;
break;
}
switch(card[pd])
{
case 1:
c1--;
deck--;
break;
case 2:
c2--;
deck--;
break;
case 3:
c3--;
deck--;
break;
case 4:
c4--;
deck--;
break;
case 5:
c5--;
deck--;
break;
case 6:
c6--;
deck--;
break;
case 7:
c7--;
deck--;
break;
case 8:
c8--;
deck--;
break;
case 9:
c9--;
deck--;
break;
case 10:
c10--;
deck--;
break;
case 11:
c10--;
deck--;
break;
case 12:
c10--;
deck--;
break;
case 13:
c10--;
deck--;
break;
}
printf(dealer의 점수:%d\n,card[qd]);
printf(player의 점수:%d\n,card[q]+card[p]);if(card[q]+card[p]21)
{
printf(카드를 더 받으시겠습니까?[y/n]);scanf(%c,&yn);
printf(%c,yn);
}
}
}
void main()
{
do
{
menu();if(choice==1)
{
system(cls);
game();
}
else if(choice==2)
{
system(cls);
explain();}
else if(choice==3)
{
exit(0);
}
}while(choice3 || choice1);
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 연블랙

    아 ㅎㅎ;;저혼자볼때는 몰랏는데 지적해주시니 엉망으로 짯다는게 보이네요..지적감사합니다. 일단 말씀하신건 다 수정해놓았구 학교다녀와서 다시한번 살펴본다음에 종료되는 문제를 해결해보겠습니다 고맙습니다! (_ _ )꾸벅

  • 달빛

    아직 베팅을 하지도 않았는데 gold=gold-bat를 사고 있네요.

  • 로지

    맞습니다.

  • 들빛

    아 그럼 if에 들어잇는 srand 함수를 main함수쪽으로 옮겨도 다 적용된다는 말씀이신건가요??

  • 새얀

    srand 함수는 main 함수 처음에 한 번만 있으면 됩니다.

  • 에드워드

    배트는 영어로 bat이고 박쥐라는 뜻입니다. 배트맨이 여기에 해당됩니다.
    \걸다\에 해당하는 영어는 \bet\이고 \베팅\이라고 써야 됩니다.

  • 김예쁨

    네 맞아요 ㅠㅠ.. game()호출후에 배팅금액 입력하면 카드값만 정해지고 바로 종료가되버려서..ㅠㅠ..

  • 설희

    choice 를 1로하면 main에서 while문이 game() 호출 직후 종료되지 않나요?

번호 제 목 글쓴이 날짜
2701377 훌로트형 변수를, 서식문자 %d로 읽기 vs 인트형 포인터로 참조하기 LetMeGo 2025-07-13
2701291 콘솔에서 종료시킬때 메시지를 안띄우려면 어떻게 해야하나요? (1) 세실 2025-07-12
2701262 씨언어 좀 봐주세요 아담 2025-07-12
2701211 토큰추출 겨루 2025-07-12
2701159 연산자문제 알려주세요 도1도캣 2025-07-11
2701130 중적분문제입니다. 적분구간에 변수가 들어갈순 없나요??ㅡㅜ 풀큰 2025-07-11
2701098 난수에 질문드립니다. 큰뫼 2025-07-11
2701070 또다른 시험문제 질문올립니다 채련 2025-07-10
2701042 뭐가 잘못된건지 잘 모르겠습니다.;; 지은 2025-07-10
2700986 뭐가 잘못된건지좀 봐주세요. 우주 2025-07-10
2700932 도와주세요 ㅠㅠ 모르겟어요 ㅠ 유희 2025-07-09
2700900 반복문 도움요청..!!합니다. (1) 두힘 2025-07-09
2700875 (유효성검사)프로그램 짜는데 질문이 잇습니다. 휑하니 2025-07-09
2700852 링크드 리스트 구현시 malloc 관련 에러 입니다. 삐용삐용 2025-07-08
2700828 7/4 와 7/4.0 의 차이 발랄한그1녀 2025-07-08
2700771 아스키값 질문입니다. (+추가 임베디드 다른것도!) (3) 찰스 2025-07-08
2700746 코드 오류 질문드립니다 차분 2025-07-07
2700721 배열 프로그래밍 입니다. (1) 크나 2025-07-07
2700695 간단한 메모장 구현을 할려고 하는데요 (9) 늘솜 2025-07-07
2700668 c언어 질문입니다. 도와주세요~ (3) 가자 2025-07-07
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com