精简程序:投掷双骰子游戏
Vo5 2005-02-01 04:51:18 这是我写的一个程序,自己觉得太长了,各位大虾能帮我看看应该怎么改吗?
1投双骰子游戏
游戏者投掷两个骰子。每个骰子有六面,上面分别标有1.2.3.4.5.6六个圆点。当骰子停止滚动后,把两个骰子朝上的点数相加。在第一次投掷时,如果所得到的和为7或11,那么游戏者就赢了;如果得到的和为2、3或12,游戏者就输了;如果和为4、5、6、8、9、或10,那么这个和就为游戏者的点数。要想要赢的话,必须继续投掷骰子,直到取得自己的点数(即第一次投出的4、5、6、8、9、或10)为止。但是,如果投出了点数7,游戏者就输了。
游戏允许下赌注。游戏者的本金为bankBalance,赌注为wager, 从键盘输入,wager不允许大于bankBalance.如果wager大于bankBalance,提示游戏者从新输入。如果游戏者赢了,把wager加到bankBalance中,并打印出新的bankBalance值;疏勒则从bankBalance中减去wager的值,打印新的bankBalance的值。BankBalance 小于0时结束游戏。
游戏中允许游戏者随时退出游戏。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 1000
int count(void);
int roll();
int reroll();
void deal(int);
void enter();
static int bankBalance = SIZE;
static int total = 0;
static int temp = 0;
static int wager = 0;
main()
{ int result;
char name[20],decide,decide2;
srand(time(NULL));
printf("Welcome!!\nPlease enter your name:\n");
scanf("%s",name);
printf("Hello,%s!!\nYour bankbalance is 1000 dollars.",name);
do
{
result = roll();
do
{
printf("Aw cmon,take a chance!!(Y/N?)");
scanf("%c",&decide);
getchar();
if(decide=='n'||decide=='N')
{
printf("Good bye,%s~~~~ Welcome back!!!\n",name);
break;
}
else if(decide!='y'&&decide!='Y')
printf("I'm afaid you've a wrong key.\nLet's start.\n");
else
{
switch(result)
{ case 1:
case 2: break;
case 0:
while(result==0)
{ reroll();
printf("If you want to quit,press 0.\n");
scanf("%c",&decide2);
getchar();
if(decide2=='0')
break;
}
}
}
}while(decide!='Y'&&decide!='y'&&decide!='n'&&decide!='N');
if(decide2=='0')
break;
}while(bankBalance>0);
if(bankBalance==0) printf("Sorry.You busted!\n");
else if(bankBalance!=-3*SIZE&&bankBalance<0)
printf("Be careful!!You're in debt!\n");
else if(bankBalance>SIZE)
printf("%s,you're up big!How lucky you are!!\n",name);
else printf("Not bad, isn't it?");
}
void enter()
{
do{
printf("\nPlease enter your wager:");
scanf("%d",&wager);
getchar();
if(wager>bankBalance)
printf("You don't have enough money.\nPlease enter again:");
}while(wager>bankBalance);
printf("Money remains : %d\nLet's begin!!\n",bankBalance-wager);
printf("Player roll for the %drd time:\n",++total);
}
int roll()
{ int result,sum;
enter();
sum = count();
switch(sum)
{
case 7 :
case 11 : result = 1;deal(result);break;
case 2 :
case 3 :
case 12 : result = 2;deal(result);break;
default : result=0;temp=sum;
}
return(result);
}
int reroll(int res)
{ int sum;
do { enter();
sum = count(); /*B*/
if(sum==7)
{
res = 2;
deal(res);
}
if(sum==temp)
{
res = 1;
deal(res);
}
} while(res==0);
}
void deal(int res)
{
if(res==1)
{
printf("Congratulations!!You wins!!\n\n");
bankBalance+=wager;
}
if(res==2)
{
printf("Player loses~~~~\n\n");
bankBalance-=wager;
}
printf("Your bankBalance is %d",bankBalance);
}
int count(void)
{ int dot1,dot2,sum;
dot1 = 1 + rand() % 6;
dot2 = 1 + rand() % 6;
sum = dot1 + dot2;
printf("Player rolled %d+%d=%d\n",dot1,dot2,sum);
return(sum);
}