石头剪子布
石头—剪子—布游戏 一(目的与要求
在游戏中,孩子们用手
示石头、剪子或布中的一个,出拳头表示石头,伸出两根手指
表示剪刀,伸手表示布,孩子们面对面地从1数到3时做出他们的选择,如果所选择是一样
的,则表示平局,否则就按如下规则决定胜负:
(1) 石头砸坏剪刀;
(2) 剪刀剪碎布;
(3) 布覆盖石头。
编程实现计算机与人进行游戏。
二(工具/准备工作
在开始试验之前,应回顾和复习相关知识与内容。
需要一台计算机,起重安装有Visual C++ 6.0、Visual C++ 2005、Visual C++ 2005
Express、Dev-C++ 或 MinGW Developer Studio 等集成开发环境软件。
三(
首先定义可产生随机序列的函数,从而达成人机对战的前提,具体定义如下:
int main1(int n1)
{
srand((unsigned)time(0));
n1=rand()%3;
return n1;
}
实现用户输入选择:
char cho;
cin>>cho;
根据计算机和用户的选择,判断输赢并输出结果,具体定义如下:
int good;
good=main1(temp); //计算机随即输入石头、剪子、布,并将其存储于good
switch (good)
{
case 0:
cout<<"对方出了剪子\n";
if(cho==49) //字符1的ASCII值为49
{
cout<<"势均力敌\n";
ping++,ju++;
}
else if(cho==50) //字符2的ASCII值为50
{
cout<<"您赢了~\n";
ying++,ju++;
}
else if(cho==51) //字符3的ASCII值为51
{
cout<<"您输了~\n";
shu++,ju++;
}
break;
case 1:
cout<<"对方出了石头\n";
if(cho==49)
{
cout<<"您输了\n";
shu++,ju++;
}
else if(cho==50)
{
cout<<"势均力敌\n";
ping++,ju++;
}
else if(cho==51)
{
cout<<"您赢了~\n";
ying++,ju++;
}
break;
case 2:
cout<<"对方出了布\n";
if(cho==49)
{
cout<<"您赢了~\n";
ying++,ju++;
}
else if(cho==50)
{
cout<<"您输了~\n";
shu++,ju++;
}
else if(cho==51)
{
cout<<"势均力敌\n";
ping++,ju++;
}
}
下面为伪代码描述的整个游戏的流程:
设置随机数种子
显示帮助信息
If (用户根据提示选择操作)
根据用户的选择做出相应的处理
输出处理结果
循环游戏
四(具体实现步骤
程序源代码:
#include
#include
#include
#include
#include
int temp,ying,shu,ping,ju;
int main1(int n1) //定义可产生随机序列的函数
{
srand((unsigned)time(0));
n1=rand()%3; //令计算机只随机产生0、1、2,三种情况,并赋值给n1
return n1;
}
int main()
{
cout<<"-------------------------------------------------\n";
cout<<"\n";
cout<<"欢迎进入石头剪子布小游戏世界~\n";
cout<<"按任意键开始..."<>cho; //用户输入选择
if(cho<48||cho>51) //判断用户输入是否正确,将choing定义为char以防止在
{ //int型下用户误给cho附入字符导致系统判断出错
cout<<"对不起,输入内容不符,请重新输入0-3的数字!\n";
continue;
}
if(cho==48)// //字符0的ASCII值为48
{
cout<<"真的不想再玩了么\n";
cout<<"玩累了,休息一下:Y 点错了,我还要玩:N\n";//提供用户选择,防止用户手
cout<<"请选择\n"; //误,误输
char cho1;
cin>>cho1;
if(cho1==89||cho1==121) //y与Y的ASCII码值分别为121和89,使用
{ //户选择时不用区分大小写,方便用户.
cout<<"战况:局数:"<总结
石头剪子布小游戏本身就是一个比较简易的程序。要想实现石头>剪刀>布>石头„„以及人机对战的基本要求并不困难,但要细心琢磨,你会发现,越是简单的程序,用户就越是关注它的人性化,而且,这样一个小程序中确确实实有太多需要注意的细节。虽然我没有太多的修饰此程序的界面(界面只能说一般),但是我自始至终很注意程序的稳定性。比如在定义储存用户输入值的变量cho时,起初定义为int型,发现在进行do„„while()与if判断语句配合的时候如果用户输入字符而非数字,则程序会出现死循环。于是将int型改为了char型。
总之,我的这个程序的特点就是朴素但很人性,很稳定。他不会因为你的误输而自动结
束,更不会因为你的误输而程序错乱,无论你输入什么样的乱码,他都会很稳定的按着要求执行。
这个石头剪子布游戏,主要就是运用大量的判断加循环完成的,虽没用太多额外的知识,但对于循环的控制还是要十分小心。这个程序也可以定义Game类来做,不过个人觉得没必要,毕竟不是什么太复杂的程序,用类往往小题大做。
总的来说,这次的课程设计还是比较成功的,他让我感受到
本上和课上的内容终归是有限的,我们要靠自己的努力去追求课本之外的东西,学会向他人请教,学会利用网络平台,取他人之所长不断地整张自己的见识,才能够编出更上乘的程序。