您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > C++之典型软件开发流程二
TSINGHUAUNIVERSITY■详细设计响应需求B4:细化PlayBout在给定猜测次数内接受游戏参与者的输入价格,判断与实际价格是否相同,如果不同则给出提示信息,如果相同则恭喜游戏参与者获胜但是……需求G:一旦游戏参与者给出了猜测价格,当该价格或高或低时,提示游戏参与者的信息应能够相应缩小价格区间以反映此变化响应需求G:修改PlayBout函数,添加参数boolPlayBout(intactual_price,intlower_price,inthigher_price,intchances_left);TSINGHUAUNIVERSITY■详细设计欢迎信息模块设计要求:将游戏性质与游戏方法告诉游戏参与者,系统应尽可能输出详细信息,例如物品最低价格、最高价格与猜测次数都应通知游戏参与者伪代码voidPrintWelcomeInfo(){输出程序性质信息物品最低价格、最高价格与猜测次数一并输出}TSINGHUAUNIVERSITY■详细设计游戏初始化模块设计要求:不知道伪代码voidInitializeGame(){}TSINGHUAUNIVERSITY■详细设计游戏结束模块设计要求:如果能够在游戏结束模块不仅输出游戏参与者胜率,还针对其胜率高低输出不同鼓励信息就好了需求H:当游戏参与者胜率超过75%(含)时,输出“Youluckyyyyyyyyyyyyy!”;当胜率低于75%但超过50%(含)时,输出“Sogooooooood.”;其他输出“Youcandoitbetter.Wishyouluck.”伪代码voidPrintGameOverInfo(doubleprevailed_ratio){输出百分制胜率根据胜率分别输出不同信息}TSINGHUAUNIVERSITY■详细设计游戏模块细化伪代码doublePlayGame(){while(true){调用InitializeBout获得实际价格调用PlayBout启动游戏回合如果游戏回合结束后结果为true,递增获胜回合数递增总回合数调用Again,若结果为false,终止游戏,否则继续}返回最终胜率}TSINGHUAUNIVERSITY■详细设计游戏回合初始化与游戏初始化模块细化伪代码intInitializeBout(){调用GenerateRandomNumber函数并返回其结果}voidInitializeGame(){调用Randomize函数启动随机数发生器}TSINGHUAUNIVERSITY■详细设计游戏回合模块细化需求I:如果游戏参与者给出的猜测价格不在当时价格范围内,应提醒用户重新提供新价格,此次操作不应递减用户猜测次数,以防止用户输入错误,也就是说,需要检查猜测价格的合法性需求J:当最后一次机会也未猜中价格时,不需要再输出提示价格高低信息,直接输出用户本回合失败信息,并将实际价格告诉用户TSINGHUAUNIVERSITY■详细设计boolPlayBout(intactual_price,intlower_price,inthigher_price,intchances_left){while(还有猜测机会){获得游戏参与者猜测价格,检查游戏参与者猜测价格是否在给定范围递减游戏参与者猜测机会判断猜测价格高低switch(判断结果){case高了:if(还有猜测机会){输出价格高了信息,降低最高价格值,缩小猜测区间}else{输出失败信息与物品实际价格,结束函数,返回本回合失败值false}break;case低了:if(还有猜测机会){输出价格低了信息,增大最低价格值,缩小猜测区间}else{输出失败信息与物品实际价格,结束函数,返回本回合失败值false}break;default:输出游戏参与者获胜信息,结束函数,返回true}}程序流程至此,说明游戏参与者本回合已失败,返回false}TSINGHUAUNIVERSITY■详细设计进一步细化游戏回合函数抽象三个辅助函数获得游戏参与者猜测价格:intGetPrice(intlower_price,inthigher_price,intchances_left);检查游戏参与者猜测价格是否在给定范围:intCheckPrice(intlower_price,inthigher_price,intguess_price);判断猜测价格高低:intJudgePrice(intactual_price,intguess_price);TSINGHUAUNIVERSITY■详细设计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;}TSINGHUAUNIVERSITY■详细设计细化Again函数伪代码boolAgain(){询问游戏参与者是否开始新游戏获取游戏参与者的响应判断游戏参与者的响应是否为数字0如果真,返回false,即将上述返回值取反返回}TSINGHUAUNIVERSITY■详细设计mainCheckPricePlayGamePrintWelcomeInfoInitializeGamePrintGameOverInfoPlayBoutInitializeBoutAgainJudgePriceGetPriceTSINGHUAUNIVERSITY■编码实现:guess.cpp#includeiostream#includeiomanip#includerandom.h#includeguess.husingnamespacestd;constintlowest_price=100;constinthighest_price=200;constintguess_count=6;TSINGHUAUNIVERSITY■编码实现:guess.cppstaticintInitializeBout();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);TSINGHUAUNIVERSITY■编码实现:guess.cppvoidPrintWelcomeInfo(){coutTheprogramlistsaproductwithpricebetweenlowest_priceandhighest_price(RMBYuan).\n;coutYougiveaguessprice.Ifthepriceyougiveiscorrect,youwin.\n;coutYouhaveguess_countchances.\n;coutRisetothechallengetowinyourbonus...\n;}voidInitializeGame(){inti,n;Randomize();}TSINGHUAUNIVERSITY■编码实现:guess.cppdoublePlayGame(){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;}TSINGHUAUNIVERSITY■编码实现:guess.cppvoidPrintGameOverInfo(doubleprevailed_ratio){cout\nprevailedratio:setw(3)prevailed_ratio*100%.\n;if(prevailed_ratio=0.75)coutYouluckyyyyyyyyyyyyy!\n\n;elseif(prevailed_ratio=0.50)coutSogooooooood.\n\n;elsecoutYoucandoitbetter.Wishyouluck.\n\n;}staticintInitializeBout(){returnGenerateRandomNumber(lowest_price,highest_price);}TSINGHUAUNIVERSITY■编码实现:guess.cppstaticboolPlayBout(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){cout\nHigher.\n;higher_price=guess_price-1;}else{cout\nYoulosethisbout.Theactualpriceisactual_priceendl;returnfalse;}break;case-1:if(chances_left0){cout\nLower.\n;lower_price=guess_price+1;}else{cout\nYoulosethisbout.Theactualpriceisactual_priceendl;returnfalse;}break;default:cout\nYouwinnnnnnnnnnnnnnnn!\n;returntrue;}}returnfalse;}TSINGHUAUNIVERSITY■编码实现:guess.cppstaticboolAgain(){intt;cout\nPlayanewgame(\0\tostop,othernumberstoplayagain)?;c
本文标题:C++之典型软件开发流程二
链接地址:https://www.777doc.com/doc-4015831 .html