当前位置:编程学习 > C/C++ >>

c++高手来啊!

#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
void replay(char&ans);
void hit(double&total);
void deal(double&player,double&cpu,int&playerturns,int&cputurns);
void BET(int&bet,int&money);
void print(int wins,int lose,int draw,int money);
void rules();
void results(double player,double cpu,int bet,int&money,int&draw,int&win,int&lose);
int random(long hi,long lo)
{ int ran;
srand((unsigned)time(NULL));
ran=rand()%(hi-(lo-1))+lo;
return(ran);
}
void wait(int milli)
{ clock_t start;
start=clock();
while((clock()-start)<milli);
}
void pause()
{ cout<<"任按一键继续"<<endl;
getch();
}
int main()
{ int win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=0,bet;
double player=0,cpu=0;
char ans;
system("cls");
rules();
cout<<"\t\t\t 请问是否玩牌:";
cin>>ans;
if((ans=='y')||(ans=='Y'))
{ cout<<"\t\t\t您的赌本为100美元"<<endl;
money=100;
cout<<"\t\t\t";
pause();
}
else
{ return(0);}
do
{ system("cls");
if(money<0)
{ cout<<"对不起,您没赌本了"<<endl;
return(0);
}
BET(bet,money);
deal(player,cpu,playerturns,cputurns);
do
{ cout<<"\t\t\t您是想要牌(H)还是等待(S):";
cin>>ans;
if((ans=='h')||(ans=='H'))
{
playerturns++;
if(playerturns>5)
cout<<"\t\t\t您手中不能超过5张牌";
}
if((playerturns<6)&&(ans=='h'))
{ cout<<endl;
hit(player);
}
}while((ans=='h')||(ans=='H'));
for(;(cpu<16)&&(cputurns<6);cputurns++)
{ cout<<endl;
cout<<"\t\t\t计算机要了一张牌"<<endl;
hit(cpu);
}
cout<<endl<<endl;
cout<<"\t\t\t计算机的牌面为:"<<cpu<<endl;
cout<<"\t\t\t您的牌面为:"<<player<<endl;
cout<<endl;
后面还有
答案:
帮忙改一下
将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。
要求高级玩家永远不会输掉,即高级玩家可以查看下一张牌,若大于21点,则拒绝,当然,在游戏规则上不能泄露这点秘密。
超级玩家可以查看下一张牌,即输入指定的字符或字符串,然后按要求输入密码,密码正确可以看自己和计算机的牌,并指定下一级牌的点数。
每次要牌后可以设定,即如果开始下的是10元钱的注,如果牌好,你可以要求再下注,当然不能超过你所有的总钱数。

提示
密码的设置及输入
在不少程序中都有键入密码这一环节,程序中要求输入密码并判断。这时密码必须是在程序中预先指定好,且不能更改,这样显然不能满足实际的需要。一种解决方法是将密码存入专门指定的文件中,每次接收完用户输入的密码后去这个文件中读取原密码进行比较,如果一致还可以修改原密码。
在输入密码时,如果用一般的cin流接收,则密码会显示在屏幕上,起不到保密的作用,可用getch()函数来接收字符,这个函数的特点是只要按下一键就能识别,即输入字符不用输入缓冲区保存,直接进入内存,然后将这个键替换成*显示即可。getch()函数在库函数conio.h中定义。示范程序如下:
#include<iostream.h>
#include<conio.h>
#define N x
void main(void)
{
char str[20];
char ch;
int i=0;
cout<<"请输入密码:";
cout.flush();
ch=getch();
while(ch!=x)
{
str[i++]=ch;
cout<<'*';
cout.flush();
ch=getch();
}
str[i]=0;
}
输入的密码在str数组中。

完善程序提示
题目要求高级玩家的牌永远不会超过21点,程序中再询问玩家是否要牌时,如果高级玩家输入的是正确的密码,那么程序就转向一个新编函数,这个函数用玩家对象的引用作参数,在函数中替玩家取下一张牌并决定是否要这张牌。
题目要求超级玩家在输入密码后可以查看计算机的牌,并可以由玩家指定下一张牌,在程序中在询问玩家是否要牌时,如果超级玩家输入的是正确的密码,那么程序就转向一个新编函数,这个函数用玩家和计算机对象的引用做参数,在函数中显示计算机的牌点,并要求超级玩家自己输入下一张牌的牌点。
题目要求每次玩家要下一张牌之前可以加上是否下注的循环,当玩家的赌注累计超过他所拥有的总资本时要求玩家重新下注。
results(player,cpu,bet,money,draw,win,lose);
replay(ans);
}while((ans=='y')||(ans=='Y'));
print(win,lose,draw,money);
cout<<endl;
cout<<"\t\t\t\t";
return(0);
}
void rules()
{ cout<<"\t\t 欢迎参加游戏。"<<endl;
cout<<"\t\t\t 这里有一些规则:"<<endl;
cout<<"\t\t\t1: 你最多能有5张牌;"<<endl;
cout<<"\t\t\t2: 如果你破产了,你将自动放弃;"<<endl;
cout<<"\t\t\t3: 如果你赢了,你将赢得你下注的双倍;"<<endl;
cout<<"\t\t\t4: 游戏人年龄须满16周岁。"<<endl;
cout<<"\t\t\t\t";
pause();
}
void BET(int&bet,int&money)
{ system("cls");
cout<<"\t\t\t您现在有:$"<<money<<endl;
cout<<"\t\t\t您要下的赌注是:";
cin>>bet;
if(bet<0)
bet=bet*-1;
money=money-bet;
}
void deal(double&player,double&cpu,int&playerturns,int&cputurns)
{ double playercard1,playercard2,cpucard1,cpucard2;
playerturns=2;
cputurns=2;
playercard1=random(13,1);
cout<<"\n\t\t\t正在洗牌"<<endl;
wait(350);
playercard2=random(13,1);
wait(150);
cpucard1=random(13,1);
wait(350);
cpucard2=random(13,1);
if(playercard1>10)
{ playercard1=0.5;}
if(playercard2>10)
{ playercard2=0.5;}
if(cpucard1>10)
{ cpucard1=0.5;}
if(cpucard2>10)
{ cpucard2=0.5;}
player=playercard1+playercard2;
cpu=cpucard1+cpucard2;
cout<<"\t\t\t现在您的牌面总数是:"<<player<<endl;
cout<<"["<<playercard1<<"]";
cout<<"["<<playercard2<<"]";
cout<<endl;
cout<<"\t\t\t计算机有一张"<<cpucard1<<"显示"<<endl;
cout<<endl;
cout<<"[*]"<<"["<<cpucard1<<"]";
}
void hit(double&total)
{ int card;
card=random(13,1);
if(card>=10)
{ card=10;}
total=total+card;
cout<<"\t\t\t牌面是:"<<card<<endl;
cout<<"\t\t\t总的牌面是:"<<total<<endl;
}
void results(double player,double cpu,int bet,int&money,int&draw,int&win,int&lose)
{
if(cpu==player)
{ cout<<"\t\t\t平局"<<endl;
draw++;
}
if(player>21)
{ cout<<"\t\t\t很遗憾,您输了"<<endl;
lose++;
}
else
{
if(cpu<player)
{ cout<<"\n\t\t\t恭喜您,您赢了";
money=money+(bet*2);
win++;
}
}
if(cpu>21)
{ cout<<"\t\t\t计算机输了"<<endl;
if(player<21)
{ cout<<"\n\t\t\t恭喜,您赢了";
win++;
money=money+(bet*2);
}
}
else
{
if(cpu>player)
{ cout<<"\t\t\t很遗憾,您输了"<<endl;
lose++;
}
}
}
void replay(char&ans)
{ cout<<"\n\t\t\t您是否想再玩一局:";
cin>>ans;
}
void print(int wins,int lose,int draw,int money)
{ cout<<"\t\t\t\t赢的次数:"<<wins<<endl;
cout<<"\t\t\t\t输的次数:"<<lose<<endl;
cout<<"\t\t\t\t平局次数:"<<draw<<endl;
cout<<"\t\t\t\t您的赌本:"<<money<<endl;
}
太难了
呃~~~程序很多bug~~~逻辑上的-_-!!!
此问题必须付出一定的劳务费本人愿意代劳.

上一个:一个关于C++的问题
下一个:C++和visual C++到底有什么区别?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,