일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 참조은요양병원
- 프로그래밍
- For문
- 알고리즘
- DBMS
- 자료구조
- Linux
- 문제출저:www.dovelet.com
- 리눅스 명령어
- 수학영재원
- 다중반복문
- 정보과학
- 독후감
- 반복문
- if문
- IT
- 제어문
- API
- 백도어
- 풀이&소스코드저작권:왕유승
- c언어
- Backdoor
- 정보영재원
- 영재교육원
- 독서 감상문
- 리눅스
- C
- C++
- 배열
- 정보올림피아드
- Today
- Total
되는대로 살자
[C언어 프로젝트] 섯다 본문
음... 이게 아마 자잘한 것을 제외하고 지금 남아 있는 프로그램 중 가장 오래 된 프로그램일 거 같다. 한 6학년 중순 쯤에 만든 것 같다.
규칙은 피망이나, 넷마블, 등의 섯다게임을 참고하기를 바란다.
다음은 캡쳐 화면
다음은 소스코드
//섯다게임
#include <turboc.h> // 전처리기 정의
enum{BLACK,BRUE,GREEN,OC,RED,JAJU,YELLOW,WHITE,GRAY}; //색상 정의 ex)system("color BRUE");
static int unsigned i,j,Choose;// 루프이용 입시변수
long BettingMoney; //베팅최소 금액
long AllMoney,UserMoney,ComMoney,UseBetMoney; //자산과 총 돈이 60000이 넘을수 있으므로 long int 데이터형을 쓴다.
static char ComCard[3],UserCard[3];
static int jukbo[25][3] = { // 족보
{3,8,26},
{8,3,26},
{10,10,25},
{9,9,24},
{8,8,23},
{7,7,22},
{6,6,21},
{5,5,20},
{4,4,19},
{3,3,18},
{2,2,17},
{1,1,16},
{1,2,15},
{2,1,15},
{1,4,14},
{4,1,14},
{1,9,13},
{9,1,13},
{1,10,12},
{10,1,12},
{10,4,11},
{4,10,11},
{4,6,10},
{6,4,10}};
void Mix(); // 카드를 섞는 함수
void retry(); // 끝났을때 다시할지안할지 결정 한다 .
int Betting(); //베팅 함수
int CheckWinner(); //승자 가리는 함수
void retry() // 게임을 다시할지 결정
{
if(UserMoney>0) // 돈이 없을 때
{
puts("retry? y=1 n=2");
scanf("%d",&Choose);
switch(Choose)
{
case 1:
Betting(); // yes 일떄 다시 게임 시작
break;
case 2:
puts("good bye!!"); // NO 일떄 리턴한다
delay(3000);
system("exit");
break;
}
}
}
int Betting() // 주요 함수
{
int ComBetrand,ComBetMoney,CallCount=0; //베팅할금액을입력받는변수,컴퓨터의베팅을결정하는변수,게임이끝났을때 y n 결정
UserMoney=1000000; //변수 초기화 (유저의 초기 자본 )
ComMoney=1000000; // 컴퓨터 초기 자본
AllMoney=0; // 판에 들어 잇는 총 돈
BettingMoney=0; // 베팅하는 최소의 금액
system("color 3"); //색상을 바꾼다.
Mix(); // 카드를 섞는다
clrscr(); puts("게임시작!!");
for(;1;)
{
if(Choose==2)
return 0;
delay(1000); clrscr(); //보는 시간 1초를 주고 화면을 다시 깨끗하게 한다.
gotoxy(33,0); printf("현재 자산:%d\n",UserMoney); //여기부터
gotoxy(33,1); printf("컴퓨터자산:%d\n",ComMoney);
gotoxy(33,2); printf("전체총판돈:%d\n",AllMoney);
gotoxy(33,3); printf("현재배팅액:%d\n",BettingMoney);
gotoxy(33,4); printf("your card1:%d\n",UserCard[0]);
gotoxy(33,5); printf("your card2:%d\n",UserCard[1]);//여기까지 게임 기본 정보들
ComBetrand=rand()%2+1; //컴퓨터의 콜 맥스를 랜덤으로 돌린다.
system("color 6"); // 생상을 노란색으로 바꾼다.
puts("┏━━━━┓\n");
puts("┃섯다게임┃\n");
puts("┗━━━━┛\n"); //글자 색상을 노란색으로 바꾼다.
for(;;)
{
printf("베팅액이상(die:0)\n");
printf("입력>>");
scanf("%d",&UseBetMoney); //베팅할 금액을 입력받는다.
if(UseBetMoney==0) // 만약 die 일떄
CheckWinner(); // 게임 승자를 가림
if(UseBetMoney<BettingMoney) // 베팅한 금액이 최소금액보다 작을 때
puts("베팅액보다 작습니다.");
else //위의 것들을 통과하면 다음으로
break;
}
AllMoney=AllMoney+UseBetMoney; //들어있는 돈 + 걸은 돈
UserMoney=UserMoney-UseBetMoney; //내 자산에서 베팅한 만큼 뺀다 .
BettingMoney=BettingMoney+UseBetMoney; //베팅 금액이 올라간다.
puts("컴퓨터결정중..."); delay(3000); clrscr();
if(ComBetrand==1) //1일때 콜
{
puts("컴퓨터:콜!");
ComBetMoney=UseBetMoney; // 위의 것과 중복
AllMoney=AllMoney+ComBetMoney;
ComMoney=ComMoney-ComBetMoney;
BettingMoney=BettingMoney+ComBetMoney;
CallCount++;
}
if(ComBetrand==2) //2일때 맥스
{
puts("컴퓨터:맥스!");
ComBetMoney=UseBetMoney;
AllMoney=AllMoney+ComBetMoney*2;
ComMoney=ComMoney-ComBetMoney*2;
BettingMoney=BettingMoney+ComBetMoney;
CallCount=0;
}
delay(1000);
clrscr();
if(UserMoney<=BettingMoney)// 유저가 돈이 없을떄
{
puts("유저가거지라게임이끝납니다.");
delay(1000);
CheckWinner();
}
else if(ComMoney<=BettingMoney) // 컴퓨터가 돈이 없을 때
{
puts("컴퓨터가거지라게임이끝납니다.");
delay(1000);
CheckWinner();
}
if(CallCount>=3||UseBetMoney==0)
CheckWinner();
}
}
int CheckWinner()
{
system("color 4");
printf("승자결정!!");
delay(2000);
clrscr();
system("color 2");
printf("컴퓨터 의카드:%d %d\n",ComCard[0],ComCard[1]); // 최종 서로의 카드 확인
printf("유 저 의카드:%d %d\n",UserCard[0],UserCard[1]);
if(ComCard[2]>UserCard[2])
printf("Lose!!");
if(ComCard[2]<UserCard[2])
{
printf("Win!!");
UserMoney=+AllMoney; // 이겼을떄 판에 있는 돈을 전부 가진다.
}
delay(2000);
retry();
return 0;
}
void Mix()//카드를 섞는 함수
{
int randCom,randUser;
srand((unsigned)time(NULL));//난수발생기
randCom=rand()%29+1;//족보의 수 만큼 랜덤으로 돌린
randUser=rand()%29+1;//''
for(i=0;i<2;)
{
ComCard[i] = rand()%10+1; // 카드를 10장중 랜덤으로 생성
UserCard[i] = rand()%10+1;
i++;
}
ComCard[2]=0;
for(i=0;i<25;i++) // 족보배열을 돌며 ComCard 와 같은것을 찾는다.
{
if(ComCard[0]==jukbo[i][0]&&ComCard[1]==jukbo[i][1]) // 같은게 나올때 ComCard[2]에 값 저장
ComCard[2]=jukbo[i][2]; // jukbo[i][2]는 높은 족보를 판단하기 위한 정수
else if(UserCard[0]==jukbo[i][j]&&UserCard[1]==jukbo[i][j])
ComCard[2]=jukbo[i][2];
}
if(UserCard[2]==0)
UserCard[2]=UserCard[2]+(UserCard[0]+UserCard[1])%10;
if(ComCard[2]==0)
ComCard[2]=ComCard[2]+(UserCard[0]+UserCard[1])%10;
if(ComCard[2]==UserCard[2])
puts("draw!!");
}
int main()
{
system("mode con: lines=20 cols=30"); // 콘솔 도스를 가로세로 20씩으로 맞춘다.
Betting();
return 0;
}
오 내가 이 시절에 주석을 아주 잘 달아놨군 ㅋ
'2009~2014 > Proejct' 카테고리의 다른 글
[C 게임 프로젝트] 지뢰찾기 전체 소스코드 (0) | 2010.11.11 |
---|---|
[C언어 프로젝트] 미니게임 모음 숫자-스피드숫자 (0) | 2010.11.05 |
2009 영재원 졸업 작품-C로 뿌요뿌요 구현 4.Flow chart (0) | 2010.07.15 |
2009 영재원 졸업작품-C로 뿌요뿌요 구현 3.프로그램 설명 (0) | 2010.07.15 |
2009 영재원 졸업작품-C로 뿌요뿌요 구현 2.소개 (0) | 2010.07.15 |