C之典型软件开发流程二.pptx
- 文档编号:1368812
- 上传时间:2022-10-21
- 格式:PPTX
- 页数:24
- 大小:528.97KB
C之典型软件开发流程二.pptx
《C之典型软件开发流程二.pptx》由会员分享,可在线阅读,更多相关《C之典型软件开发流程二.pptx(24页珍藏版)》请在冰豆网上搜索。
响应需求B4:
细化PlayBout在给定猜测次数内接受游戏参与者的输入价格,判断与实际价格是否相同,如果不同则给出提示信息,如果相同则恭喜游戏参与者获胜但是需求G:
一旦游戏参与者给出了猜测价格,当该价格或高或低时,提示游戏参与者的信息应能够相应缩小价格区间以反映此变化响应需求G:
修改PlayBout函数,添加参数boolPlayBout(intactual_price,intlower_price,inthigher_price,intchances_left);,欢迎信息模块设计要求:
将游戏性质与游戏方法告诉游戏参与者,系统应尽可能输出详细信息,例如物品最低价格、最高价格与猜测次数都应通知游戏参与者伪代码,voidPrintWelcomeInfo()输出程序性质信息物品最低价格、最高价格与猜测次数一并输出,游戏初始化模块设计要求:
不知道伪代码,voidInitializeGame(),游戏结束模块设计要求:
如果能够在游戏结束模块不仅输出游戏参与者胜率,还针对其胜率高低输出不同鼓励信息就好了需求H:
当游戏参与者胜率超过75%(含)时,输出“Youluckyyyyyyyyyyyyy!
”;当胜率低于75%但超过50%(含)时,输出“Sogooooooood.”;其他输出“Youcandoitbetter.Wishyouluck.”伪代码,voidPrintGameOverInfo(doubleprevailed_ratio)输出百分制胜率根据胜率分别输出不同信息,游戏模块细化伪代码,doublePlayGame()while(true)调用InitializeBout获得实际价格调用PlayBout启动游戏回合如果游戏回合结束后结果为true,递增获胜回合数递增总回合数调用Again,若结果为false,终止游戏,否则继续返回最终胜率,游戏回合初始化与游戏初始化模块细化伪代码,intInitializeBout()调用GenerateRandomNumber函数并返回其结果voidInitializeGame()调用Randomize函数启动随机数发生器,游戏回合模块细化需求I:
如果游戏参与者给出的猜测价格不在当时价格范围内,应提醒用户重新提供新价格,此次操作不应递减用户猜测次数,以防止用户输入错误,也就是说,需要检查猜测价格的合法性需求J:
当最后一次机会也未猜中价格时,不需要再输出提示价格高低信息,直接输出用户本回合失败信息,并将实际价格告诉用户,boolPlayBout(intactual_price,intlower_price,inthigher_price,intchances_left)while(还有猜测机会)获得游戏参与者猜测价格,检查游戏参与者猜测价格是否在给定范围递减游戏参与者猜测机会判断猜测价格高低switch(判断结果)case高了:
if(还有猜测机会)输出价格高了信息,降低最高价格值,缩小猜测区间else输出失败信息与物品实际价格,结束函数,返回本回合失败值falsebreak;case低了:
if(还有猜测机会)输出价格低了信息,增大最低价格值,缩小猜测区间else输出失败信息与物品实际价格,结束函数,返回本回合失败值falsebreak;default:
输出游戏参与者获胜信息,结束函数,返回true程序流程至此,说明游戏参与者本回合已失败,返回false,进一步细化游戏回合函数抽象三个辅助函数获得游戏参与者猜测价格:
intGetPrice(intlower_price,inthigher_price,intchances_left);检查游戏参与者猜测价格是否在给定范围:
intCheckPrice(intlower_price,inthigher_price,intguess_price);判断猜测价格高低:
intJudgePrice(intactual_price,intguess_price);,intGetPrice(intlower_price,inthigher_price,intchances_left)输出提示信息,包括最低价格,最高价格与剩余猜测次数获取猜测价格并返回intCheckPrice(intlower_price,inthigher_price,intguess_price)while(猜测价格小于最低价格或高于最高价格)通知游戏参与者猜测价格超出范围,提醒用户重新输入新价格获取新猜测价格返回新猜测价格intJudgePrice(intactual_price,intguess_price)获得猜测价格与实际价格之差if(差值大于0)return1;elseif(差值小于0)return-1;elsereturn0;,细化Again函数伪代码,boolAgain()询问游戏参与者是否开始新游戏获取游戏参与者的响应判断游戏参与者的响应是否为数字0如果真,返回false,即将上述返回值取反返回,#include#include#includerandom.h#includeguess.husingnamespacestd;constintlowest_price=100;constinthighest_price=200;constintguess_count=6;,staticintInitializeBout();staticboolPlayBout(intactual_price,intlower_price,inthigher_price,intchances_left);staticboolAgain();staticintGetPrice(intlower_price,inthigher_price,intchances_left);staticintCheckPrice(intlower_price,inthigher_price,intguess_price);staticintJudgePrice(intactual_price,intguess_price);,voidPrintWelcomeInfo()coutTheprogramlistsaproductwithpricebetweenlowest_priceandhighest_price(RMBYuan).n;coutYougiveaguessprice.Ifthepriceyougiveiscorrect,youwin.n;coutYouhaveguess_countchances.n;coutRisetothechallengetowinyourbonus.n;voidInitializeGame()inti,n;Randomize();,doublePlayGame()intactual_price,lower_price=lowest_price,higher_price=highest_price;intchances_left=guess_count;intbout_count=0,prevailed_bout_count=0;while(true)coutendl;actual_price=InitializeBout();if(PlayBout(actual_price,lower_price,higher_price,chances_left)prevailed_bout_count+;bout_count+;if(!
Again()break;return(double)prevailed_bout_count/(double)bout_count;,voidPrintGameOverInfo(doubleprevailed_ratio)cout=0.75)cout=0.50)coutSogooooooood.nn;elsecoutYoucandoitbetter.Wishyouluck.nn;staticintInitializeBout()returnGenerateRandomNumber(lowest_price,highest_price);,staticboolPlayBout(intactual_price,intlower_price,inthigher_price,intchances_left)intguess_price;intjudge_result;while(chances_left0)guess_price=GetPrice(lower_price,higher_price,chances_left);guess_price=CheckPrice(lower_price,higher_price,guess_price);chances_left-;judge_result=JudgePrice(actual_price,guess_price);switch(judge_result)case1:
if(chances_left0)cout0)coutnLower.n;lower_price=guess_price+1;elsecoutnYoulosethisbout.Theactualpriceisactual_priceendl;returnfalse;break;default:
coutnYouwinnnnnnnnnnnnnnnn!
n;returntrue;returnfalse;,staticboolAgain()intt;coutt;returnt!
=0;staticintGetPrice(intlower_price,inthigher_price,intchances_left)intt;coutt;returnt;,staticintCheckPrice(intlower_price,inthigher_price,intguess_price)intt=guess_price;while(thigher_price)coutt;returnt;staticintJudgePrice(intactual_price,intguess_price)intt=guess_price-actual_price;if(t0)return1;elseif(t0)return-1;elsereturn0;,所有数据对象是否已正确初始化?
随机生成的价格是否合理有效?
测试过程可能需要在源程序中添加必要的测试代码,例如:
doublePlayGame()actual_price=InitializeBout();#ifndefNDEBUGcoutDebugging:
Actualprice=actual_priceendl;#endif,检查游戏回合运行是否准确参数传递是否准确?
获取的猜测价格是否与游戏参与者的实际输入吻合?
价格有效性检查是否正确工作?
分别输入准确值、高于最高价格值与低于最低价格值,查看程序运行结果价格判断是否正确运行?
猜测次数的控制与显示是否准确反映了用户猜测过程的变化?
提示信息是否准确显示?
在显示未猜中信息时,是否最后一次与其他次不同?
判断开始新游戏的过程是否准确检查胜率计算是否准确检查胜率百分比的计算与显示是否准确不同鼓励语是否显示准确测试必须覆盖三类可能胜率测试人员试玩游戏,得到三种不同胜率结果,Q:
这个问题一开始大家认为它难不难?
A:
不难。
Q:
程序设计难不难?
A:
难,如果要程序员从系统分析、方案
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 典型 软件 开发 流程