猜硬币游戏设计
//最简单游戏的设计
//通过模块化的第一步进行(自顶向下分解)
/*第一步顶层分解
*从主程序开始考虑。程序要做什么?程序要做两件事:显示指南;模拟玩游戏的过程。
*逐步细化的原则指出:一旦有了某个程序的概要描述,你应该在此结束,并把它写下来。
*因此,可以写出主程序的伪代码表示如下
main()
{
显示游戏指南;
玩游戏;
}
主程序的两个步骤是相互独立的,没有什么联系,因此可设计成两个函数:
void prn_instruction()
void display()
有了第一步就可以写出主程序函数了
第二步是功能函数的实现
这个程序只有三个函数
两个是程序函数(一个是程序提示函数,另一个是玩游戏函数)
一个是用户函数(用来接收玩家输人的信息)
这个游戏功能比较简单,所以写下来的程序也比较简单,容易实现
*/
代码清单如下:
#include<iostream>
#include<cstdlib>//随机函数库
#include<ctime>//需要用到系统时间?
using namespace std;
void prn_instrustion()//显示游戏指南
{
cout<< "这是一个猜硬币正反面的游戏。\n";
cout<< "我会扔一个硬币,你来猜 \n";
cout<< "如果猜对了,你赢,否则我赢 \n";
}
//玩家输入选择
int get_call_from_user()
{
int guess;//0=head, 1=tail
do
{
cout<<"\n输入你的选择(0表示正面,1表示反面):;
cin>>guess;
} while(guess!=0 && guess!=1);
return guess;
}
void play()
{
int coin;
char flag='Y';
srand(time(NULL));//生成随机种子
while(flag=='Y'||flag=='y')
{
coin=rand()*2/(RAND_MAX+1);
if(get_call_from_user()==coin)
cout<<"你赢了";
else cout<<"我赢了";
cout<<"\n继续玩吗e(Y或y)?";
cin>>flag;
}
}
//猜硬币正反面主程序
int main()
{
prn_instrustion();
play();
return 0;
}
调试结果: