帮忙看看我这个用C语言写的程序哪些不足?
小虾我用C语言写了一个小程序--赌博机,但是总是只能下一次注,而且按q键也不能退出程序!!!请各路大哥大姐指点,我使用VS2012编写的!#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
#include "conio.h"
int a , b , c, bet,BetMoney;//bet用来保存下注方式 BetMoney是赌金即所下注的元宝数量
int playerMoney = 1000,dealerMoney = 1000;//玩家和庄家的本钱
//游戏规则
void ShowTOScreen(){
printf(" 赌博规则:\n");
printf("*************************************************************************\n");
printf(" 闲家和庄家的赌金1000\n");
printf(" 赌注方式 : ,以及可以压得赌金数(1 -100)\n");
printf(" 1、买大 ,2、 买小 ,3、买豹子、\n");
printf(" 若玩家买大,则投掷出色子点数应大于11,若玩家掷出点数大于11,则庄家应赔给玩家2倍所压赌金。否则玩家输!应赔给庄家2倍赌金\n");
printf("\n");
printf(" 若玩家买小则投掷出色子点数应小于11,若玩家掷出点数小于11,则庄家照样赔给玩家2倍赌金。否则玩家输,应赔给庄家2倍赌金.\n");
printf("\n");
printf(" 若玩家买豹子,则投掷出色子点数应相同,若玩家投掷出豹子,则庄家必须按照闲家赌金的10倍,赔给闲家.否则玩家输,应赔给庄家10倍赌金.\n");
printf("\n");
printf(" 玩家可以通过按q键终止游戏,若玩家不终止,则游戏一直进行到玩家和庄家一方的赌金不够为止\n");
printf(" 赌博规则介绍完毕!预祝:玩家玩的愉快!\n");
printf("\n");
}
//玩家选择下注方式
int GetBet(){
int BetType;
printf("\n请选择下注方式:\n");
printf("1、买大。2、买小。3、买豹子。\n");
printf("请下注:\n");
scanf_s("%d",&BetType);
if (BetType == 1 ||BetType == 2 || BetType == 3)
{
return BetType;
}else
{
printf("如果你的下注方式选错了,系统自动把你的下注方式改为第一种下注方式!!!\n");
return 1;
}
}
//闲家输入赌金
int GetAcount(){
//int BetMoney;//赌金
printf("你压多少赌金(最少10元宝,最多100元宝)?\n");
scanf_s("%d",&BetMoney);
if (BetMoney < 10)
{
BetMoney = 10;
}
if (BetMoney > 100)
{
BetMoney = 100;
}
return BetMoney;
}
//投掷色子
void Throw(){
printf("欢迎体验赌博机,请按任意键!\n");
getchar();//等待用户按键
srand(time(0));//随机数种子,根据系统的时间time随机给3个色子1-6之间的正整数
//kbhit()检测键盘是否输入
while (!_kbhit())
{
a = rand()%6 + 1;
b = rand()%6 + 1;
c = rand()%6 + 1;
system("cls");//清屏
printf("色子转动 ……………………按键盘任意键终止!\n");
printf("第一粒塞子 %d\n 第二粒塞子的点数:%d\n 第三粒塞子的点数:%d\n",a,b,c);
}
}
//判断3个色子的 大,小或豹子
int Judge(int a ,int b, int c){
if (a ==b && a == c)
{
return 3;
}
if (a + b + c > 11)
{
return 1;
}
if (a + b + c < 11)
{
return 2;
} else{
return 0;
}
}
//判定输赢并计算玩家和庄家的赢(输)元宝
void MoneyCount(){
if (Judge(a,b,c) == 3 )
{
if (bet == 3 )
{
BetMoney *= 10;
playerMoney += BetMoney;
dealerMoney -= BetMoney;
printf("豹子 ,你赢了,赔率10倍!你从庄家出得到%d元宝,你现在有%d元宝,庄家剩余元宝%d\n",BetMoney,playerMoney,dealerMoney);
}else
{
BetMoney *= 10;
playerMoney -= BetMoney;
dealerMoney += BetMoney;
printf("豹子,你输了,赔率10倍!你输了%d元宝 ,你所余元宝%d, 庄家现有元宝%d\n",BetMoney,playerMoney,dealerMoney);
}
printf("豹子\n");
}else if (Judge(a,b,c)==2)
{
if (bet == 2 )
{
BetMoney *= 2;
playerMoney += BetMoney;
dealerMoney -= BetMoney;
printf("小,你赢了,赔率2倍!赢得元宝%d 你现在拥有元宝%d\n",BetMoney,playerMoney);
}else
{
BetMoney *= 10;
playerMoney -= BetMoney;
dealerMoney += BetMoney;
printf("小,你输了,赔率2倍!你输了%d元宝,你现在拥有元宝%d,庄家现有元宝%d \n",BetMoney,playerMoney,dealerMoney);
}
printf("小\n");
}else if (Judge(a,b,c) == 1)
{if (bet == 1 )
{
BetMoney *= 2;
playerMoney += BetMoney;
dealerMoney -= BetMoney;
printf("大,你赢了,赔率2倍!赢得元宝%d 你现在拥有元宝%d\n",BetMoney,playerMoney);
}else
{
BetMoney *= 2;
playerMoney -= BetMoney;
dealerMoney += BetMoney;
printf("大,你输了,赔率2倍!你输了元宝%d 你现在剩余元宝%d,庄家现有元宝%d\n",BetMoney,playerMoney,dealerMoney);
}
printf("大\n");
}else
{
printf("平局!你和庄家打成平手,你所剩元宝%d ,庄家所剩元宝%d \n",playerMoney,dealerMoney);
}
}
//检测玩家和庄家剩余元宝
int check(int pm,int dm){
if (pm <= 0)
{
if (pm == 0)
{
printf("你输光了所有钱,被赶出赌场!!!\n");
}else
{
printf("你输光了所有钱,并欠庄家%d元宝!!!如果你不能在三日内还清所有赌债,后果自负!!!",abs(pm));
}
return 0;
}
if (dm <= 0)
{
if (dm == 0)
{
printf("庄家输光了所有钱,不能再和你赌了!!!\n");
}else
{
printf("你真厉害!!!庄家欠你%d元宝!!!如果庄家不能在三日内还清赌债,则赌场就是你的了!!!",abs(dm));
}
return 0;
}
return (int)GetBet;
}
int _tmain(int argc, _TCHAR* argv[])
{
int checkMoney,ch;
ShowTOScreen();
while (true)
{
if (playerMoney < 10)
{
printf("你手中的元宝不足,不能继续玩!!!\n");
break;
}
if (dealerMoney < 10 )
{
printf("庄家手中的元宝不足10,不能继续陪你完了!!!\n");
break;
}
bet = GetBet();
repeat: BetMoney = GetAcount();
if (playerMoney < BetMoney)
{
printf("你手中的钱不足以支付你所压得赌金!!!请重新选择赌金!!!谢谢合作!!!\n");
goto repeat;
}
if (dealerMoney < BetMoney)
{
printf("庄家手中的元宝不足!!!\n");
goto repeat;
}
Throw();
MoneyCount();
getcher();
checkMoney = check(playerMoney,dealerMoney);
if (checkMoney <= 0)
break;
printf("请问您还继续玩吗?(退出请按Q键,继续请安其他任意键!!!)\n");
ch = getcher();
if (ch == 'q')
break;
}
fflush(stdin);
getchar();
return 0;
}
解决跳转问题了
其实这个程序还有一个警告warning“参数”:c语言编译小程序1.cpp(64): warning C4244: “参数”: 从“time_t”转换到“unsigned int”,可能丢失数据
[ 本帖最后由 午夜小学徒 于 2014-9-11 20:45 编辑 ]