| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:一个小游戏&&不是很完美---指点指点
只看楼主 加入收藏
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
 问题点数:0 回复次数:8 
一个小游戏&&不是很完美---指点指点

#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>

using namespace std;

static int k=0;
const string puke[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
const double puke1[]={1,2,3,4,5,6,7,8,9,10,0.5,0.5,0.5};

void sm()
{
cout<<"\t_______________________________________________________________________\n\n";
cout<<"\t游戏简介: 本游戏为人与电脑的扑克对抗,扑克“A”为分数1,“J”,“Q”\n";
cout<<"\t ,“K”各为分数0.5,游戏简称“十点半”,就是说——玩家、庄家手\n";
cout<<"\t 中各牌加起来的总分不得大于10.5分,如果谁手中的牌总分大于10.5分\n";
cout<<"\t ,为“自爆”,判为输。游戏开始庄家为各自发一张牌,庄家的牌是隐";
cout<<"\t 藏的,玩家的是显示出来的,首先是玩家根据自已牌的分数,进行要牌";
cout<<"\t ,当确定不在要牌时。轮到庄家要牌,玩家与庄家手中持牌不能超过三";
cout<<"\t 张牌,在没有“自爆”的情况下,在确定——庄家与玩家不在要牌时,\n";
cout<<"\t 把各自手中持牌的分数加起来,在比较谁的总分高,高的为赢家,否则";
cout<<"\t 为输家,相等则平局。\n\n";
cout<<"\t_______________________________________________________________________\n\n";
cout<<"\t游戏说明:\n";
cout<<"\t a.可设定你的总赌资,范围在1~1000000元,\n";
cout<<"\t\t 庄家的总赌资和你设定的一样多。"<<endl;
cout<<"\t b.每局可根据你自身的钱数来下注。"<<endl;
cout<<"\t c.要一张牌,请输入“1”。"<<endl;
cout<<"\t d.确定不在要牌,等待庄家翻牌,请输入“2”。\n"<<endl;
cout<<"\t e.退出,请输入“0”。\n"<<endl;
cout<<"\t_______________________________________________________________________\n\n";
}

void sm2()
{
cout<<"\t____________________________________________________\n";
cout<<"\t\t\t***申请游戏账号说明***\n";
cout<<"\t\ta.账号位数不得大于8位字符,可为字母或数字组合,\n";
cout<<"\t\t 也可以是单独的字母或数字,但必须以字母开头\n";
cout<<"\t\tb.游戏密码不得大于6位字符,可为字母或数字组合\n";
cout<<"\t\t ,也可以是单独的字线或数字\n";
cout<<"\t____________________________________________________\n";
}

void sm1()
{
cout<<"\t__________________________________________\n";
cout<<"\t\t\t***游戏说明***\n\n";
cout<<"\t\t1.进入游戏,请输入“1”。\n";
cout<<"\t\t2.申请帐号,请输入“2”。\n";
cout<<"\t\t3.退出,请输入“0”。\n";
cout<<"\t__________________________________________\n\n";
cout<<"请选择功能:";
}


class
{
public:

char playname[8];
char playkey[7];

}game[100]={{"gogogo","123456"}};;


class goplay
{
private:

char name[8];
char key[7];
char key1[7];

public:

int nameworng,nameworng1,f,i,keyworng;
string s;
void nscanf();
void npd();
void kscanf();
void kpd();
void kscanf1();
~goplay(){ }
};

void goplay::nscanf()
{
sm2();
cout<<"帐号:";
cin>>name;
f=strlen(name);
for(i=0;i<f;i++)
if(!(((name[i]>='a'&&name[i]<='z')||
(name[i]>='A'&&name[i]<='Z')||
(name[i]>='0'&&name[i]<='9'))&&
(name[0]>='a'&&name[0]<='z')||
(name[0]>='A'&&name[0]<='Z')))
{nameworng=1;break;}
for(i=k;i>=0;i--)
if(strcmp(game[i].playname,name)==0)
{nameworng1=1;break;}
}

void goplay::npd()
{
while(f>8||nameworng==1||nameworng1==1)
{
if(f>8)
{
cout<<"你申请的帐号大于8位字符\n";
nscanf();
}
if(nameworng==1)
{
cout<<"你的帐号含有非法字符\n";
nscanf();
}
if(nameworng1==1)
{
cout<<"你申请的账号以存在\n";
nscanf();
}
}
strcpy(game[++k].playname,name);
}

void goplay::kscanf()
{
cout<<"密码:";
cin>>key;
f=strlen(key);
for(i=0;i<f;i++)
if(!((key[i]>='a'&&key[i]<='z')||
(key[i]>='A'&&key[i]<='Z')||
(key[i]>='0'&&key[i]<='9')))
{keyworng=1;break;}
}

void goplay::kpd()
{
while(f>6||keyworng==1)
{
if(f>6)
{
cout<<"你的密码大于6位字符\n";
kscanf();
}
if(keyworng==1)
{
cout<<"你的密码含有非法字符\n";
kscanf();
}
}
}

void goplay::kscanf1()
{
cout<<"验证密码:";
cin>>key1;
while(!strcmp(key,key1)==0)
{
cout<<"密码不一致,请重设\n";
kscanf();
kpd();
cout<<"验证密码:";
cin>>key1;
}
strcpy(game[k].playkey,key);
cout<<"恭喜你,以申请成功,OY\n";
}


class comeplay
{
private:

char goname[8];
char gokey[7];

public:

int print();
~comeplay(){ }

};

int comeplay::print()
{
cout<<"帐号:";
cin>>goname;
cout<<"密码:";
cin>>gokey;
for(int i=0;i<=k;i++)
if(strcmp(game[i].playname,goname)==0&&
strcmp(game[i].playkey,gokey)==0)
return 1;
return 0;

}


class WANJIA
{
private:

string wanjia[3];

public:

static int s_w;
static double s_zongfen;
void fu();
int fen();
int su();
void show()const;
~WANJIA() { }
};


void WANJIA::fu()
{
srand(time(0));
int w=rand()%13;
wanjia[s_w++]=puke[w];
s_zongfen=s_zongfen+puke1[w];
}

int WANJIA::fen()
{
if(s_zongfen>=11)
return 1;
else
return 0;
}

int WANJIA::su()
{
if(s_w>=3)
return 1;
else
return 0;
}

void WANJIA::show() const
{
int i;
for(i=0;i<s_w;i++)
cout<<wanjia[i]<<" ";
cout<<endl;
}



int WANJIA::s_w=0;
double WANJIA::s_zongfen=0;

class DIANNAO
{
private:

string diannao[3];

public:

static int s_d;
static double s_zongfen1;
void fu();
int fen();
int su();
void show() const;
void show1() const;
~DIANNAO() { }
};

void DIANNAO::fu()
{
srand(time(0));
int d=rand()%13;
diannao[s_d++]=puke[d];
s_zongfen1=s_zongfen1+puke1[d];
}

int DIANNAO::fen()
{
if(s_zongfen1>=11)
return 1;
else
return 0;
}

int DIANNAO::su()
{
if(s_d>=3)
return 1;
else
return 0;
}

void DIANNAO::show() const
{
int j=4;
string pai1="****";
while(j>0)
{
cout<<"\t\t\t"<<pai1<<endl;
j--;
}

}

void DIANNAO::show1() const
{
int k=0;
while(k<s_d)
{
cout<<diannao[k]<<" ";
k++;
}
}



int DIANNAO::s_d=0;
double DIANNAO::s_zongfen1=0;

class PANDUAN
{
private:

int dqing,wqing,zwqing,swqing,sdqing,yaopai;
DIANNAO dian;
WANJIA wan;

public:
void fu();
void scanf();
void bijiao();
~PANDUAN() { }

};

搜索更多相关主题的帖子: 小游戏 
2006-09-14 07:42
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

void PANDUAN::fu()
{
cin>>wqing;
if(wqing<=0)
{
cout<<"你输入的总赌资有误,请重新设置:";
cin>>wqing;
}
dqing=wqing;
cout<<endl;
cout<<"*******************************************************************************\n";
}

void PANDUAN::scanf()
{
cout<<" 请下注:";
cin>>zwqing;
if(zwqing==0)
exit(0);
if(zwqing>wqing)
{
cout<<"^^^^^SORRY!!你没有足够的赌资了^^^^^\n";
cout<<"^^^^^请重新下注:";
cin>>zwqing;
}
cout<<endl;
}

void PANDUAN::bijiao()
{
while(dqing>0||wqing>0)
{
swqing=0;
sdqing=0;
dian.fu();
wan.fu();
cout<<"\t\t庄家:\n";
dian.show();
cout<<endl;
cout<<"\t\t玩家:";
wan.show();
cout<<endl;
cout<<"\n";
cout<<"\n请玩家输入:";
cin>>yaopai;
cout<<endl;
while(yaopai!=2)
{
if(yaopai==1)
{
wan.fu();
cout<<"\t\t玩家:";
wan.show();
if(wan.fen())
{
cout<<"\n\t\t\t-------玩家输了-------\n";
cout<<endl;
swqing=1;
wqing=wqing-zwqing;
dqing=dqing+zwqing;
break;
}
if(wan.su())
{
cout<<"\n你不能在要牌了,你手中以持有三张牌,请等待庄家翻牌......\n\n";
break;
}
}
else
cout<<"你的输入有误,请重新输入:";
cout<<"\n请玩家输入:";
cin>>yaopai;
cout<<endl;

}

while(swqing!=1&&dian.s_zongfen1<=puke1[5])
{
cout<<"\t庄家要了一张牌\n\n";
cout<<"\t\t庄家:\n";
dian.fu();
dian.show();
if(dian.fen())
{
cout<<"\n\t\t\t-------庄家输了-------\n\n";
cout<<endl;
cout<<endl;
dqing=dqing-zwqing;
wqing=wqing+zwqing;
sdqing=1;
break;
}
if(dian.su())
break;
}


if(swqing!=1&&sdqing!=1&&dian.s_zongfen1>wan.s_zongfen)
{
cout<<"\n\t\t\t-------玩家输了-------\n";
wqing=wqing-zwqing;
dqing=dqing+zwqing;
}
if(swqing!=1&&sdqing!=1&&dian.s_zongfen1<wan.s_zongfen)
{
cout<<"\n\t\t\t-------庄家输了-------\n";
dqing=dqing-zwqing;
wqing=wqing+zwqing;
}
if(swqing!=1&&sdqing!=1&&dian.s_zongfen1==wan.s_zongfen)
cout<<"\n\t\t\t-------平局-------\n";
cout<<"\n\t\t******************** 翻牌 ********************\n";
cout<<"\t\t************************************************\n";
cout<<"\t\t\t\t庄家牌为:";
dian.show1();
cout<<"\n";
cout<<"\t\t\t\t玩家牌为: ";
wan.show();

WANJIA::s_w=0;
WANJIA::s_zongfen=0;
DIANNAO::s_d=0;
DIANNAO::s_zongfen1=0;

cout<<"\n庄家钱:"<<dqing<<endl;
cout<<"\n玩家钱:"<<wqing<<endl;
if(dqing==0)
{
cout<<"\n《《《《庄家以是穷光蛋了,身无分文,YOU——好惨啊...55555》》》》\n\n";
exit(0);
}
if(wqing==0)
{
cout<<"\n《《《《玩家以是穷光蛋了,身无分文,YOU——好惨啊...55555》》》》\n\n";
exit(0);
}
cout<<"\n************************************下一局************************************\n";
scanf();
}
}


int main()
{

goplay dc1;
comeplay dc2;
int x,y;
sm1();
cin>>x;
do
{
switch(x)
{
case 2:
dc1.nscanf();
dc1.npd();
dc1.kscanf();
dc1.kpd();
dc1.kscanf1();
break;
case 1:

y=dc2.print();
if(y==1)
{
cout<<"欢迎进入本游戏,祝你在游戏中愉快!\n";
sm();
cout<<"请玩家输入你的总赌资:";
PANDUAN s1;
s1.fu();
s1.scanf();
s1.bijiao();
}
else
cout<<"你输入的账号不存在,请申请\n";
break;
case 0:
exit(0);

default:cout<<"你的输入有误,请重新输入\n";
}
sm1();
cin>>x;
}while(x!=0);

getchar();
return 0;
}

2006-09-14 07:42
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 

不错


我为你痴,为你狂!
2006-09-14 11:14
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

写这么多,不错~!


void PANDUAN::bijiao()
{
while(dqing>0||wqing>0)
{
swqing=0;
sdqing=0;
dian.fu();
wan.fu();
cout<<\"\t\t庄家:\n\";
dian.show();
cout<<endl;
cout<<\"\t\t玩家:\";
wan.show();
cout<<endl;
cout<<\"\n\";
cout<<\"\n请玩家输入:\";
cin>>yaopai;
cout<<endl;
while(yaopai!=2)
{
if(yaopai==1)
{
wan.fu();
cout<<\"\t\t玩家:\";
wan.show();
if(wan.fen())
{
cout<<\"\n\t\t\t-------玩家输了-------\n\";
cout<<endl;
swqing=1;
wqing=wqing-zwqing;
dqing=dqing+zwqing;
break;
}
if(wan.su())
{
cout<<\"\n你不能在要牌了,你手中以持有三张牌,请等待庄家翻牌......\n\n\";
break;
}
}
else
cout<<\"你的输入有误,请重新输入:\";
cout<<\"\n请玩家输入:\";
cin>>yaopai;
cout<<endl;

}

while(swqing!=1&&dian.s_zongfen1<=puke1[5])
{
cout<<\"\t庄家要了一张牌\n\n\";
cout<<\"\t\t庄家:\n\";
dian.fu();
dian.show();
if(dian.fen())
{
cout<<\"\n\t\t\t-------庄家输了-------\n\n\";
cout<<endl;
cout<<endl;
dqing=dqing-zwqing;
wqing=wqing+zwqing;
sdqing=1;
break;
}
if(dian.su())
break;
}


if(swqing!=1&&sdqing!=1&&dian.s_zongfen1>wan.s_zongfen)
{
cout<<\"\n\t\t\t-------玩家输了-------\n\";
wqing=wqing-zwqing;
dqing=dqing+zwqing;
}
if(swqing!=1&&sdqing!=1&&dian.s_zongfen1<wan.s_zongfen)
{
cout<<\"\n\t\t\t-------庄家输了-------\n\";
dqing=dqing-zwqing;
wqing=wqing+zwqing;
}
if(swqing!=1&&sdqing!=1&&dian.s_zongfen1==wan.s_zongfen)
cout<<\"\n\t\t\t-------平局-------\n\";
cout<<\"\n\t\t******************** 翻牌 ********************\n\";
cout<<\"\t\t************************************************\n\";
cout<<\"\t\t\t\t庄家牌为:\";
dian.show1();
cout<<\"\n\";
cout<<\"\t\t\t\t玩家牌为: \";
wan.show();

WANJIA::s_w=0;
WANJIA::s_zongfen=0;
DIANNAO::s_d=0;
DIANNAO::s_zongfen1=0;

cout<<\"\n庄家钱:\"<<dqing<<endl;
cout<<\"\n玩家钱:\"<<wqing<<endl;
if(dqing==0)
{
cout<<\"\n《《《《庄家以是穷光蛋了,身无分文,YOU——好惨啊...55555》》》》\n\n\";
exit(0);
}
if(wqing==0)
{
cout<<\"\n《《《《玩家以是穷光蛋了,身无分文,YOU——好惨啊...55555》》》》\n\n\";
exit(0);
}
cout<<\"\n************************************下一局************************************\n\";
scanf();
}
}



这种函数不应该出现,这么长~!!!


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-14 12:33
我不是大师
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-9-12
收藏
得分:0 
很不错啊~!~!

已经有相当的功力了~!~!


2006-09-14 13:14
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

含C的写法太多了`

只是粗略的用C++的类来包装一下,本来我是想把几个类分存在不同的文件中,在用头文件的方法处理,不过传上来就不怎么好,所以把它们全写在一起了,处理一些成员函数也太笼统-----写得太长了`

  我把这游戏传上来&&不是炫耀,我只是想各位给点宝贵的意见,从而提高我的编程水平,特别是从事C++编程工作的程序员,我只想多了解一点这方面工作的东东~~实践实践 

  我现在还是一位学生,只想趁现在还有一点时间,努力多学点,必竟我选择了这条路;我知道光看书还是不行的,需要伶听一下别人的意见;
  
  SORRY!我不想看赞美的话,如果你想夸我请不要把话传上来---谢谢,我只想听点意见,因为我很需要;

2006-09-14 18:50
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
收藏
得分:0 
恩,首先有个小小的BUG
如果申请账号的时候,输入非法字符,那么其后再申请账号将会一直不成功。
刚开始选择1 2 3 时,若输入非法字符会出现无限循环
还有就是最后庄家输了那段话有个错别字,呵呵~

好玩,要是能做成图形界面就棒了!
2006-09-14 19:35
comebaby
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-6-17
收藏
得分:0 

恩``那问题``我知道,就是选择功能的吧``
我用的是都是int ,

如:
int x,y;
sm1();
cin>>x;
还有这
cout<<"\n请玩家输入:";
cin>>yaopai;/*int yaopai*/
cout<<endl;



要是改为char数组就没问题了``我以前写的程序给别人看---

----也遇到过这样``后来换char数组就没问题了``这次我只是赖得换而以``
你发现了``说明你是好人``帮我找问题``哈哈``

我知道写程序要的是尽量的完美

2006-09-14 21:43
ligt0610
Rank: 1
等 级:新手上路
帖 子:204
专家分:5
注 册:2006-6-29
收藏
得分:0 
不错
希望能有个漂亮一点的界面
期待楼主

通过不断的学习与思考才是提高自己能力的最好途径。。。。。。。
2006-09-15 21:46
快速回复:一个小游戏&&不是很完美---指点指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032173 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved