C剪刀石头布游戏课程设计.docx
- 文档编号:3013333
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:11
- 大小:196.31KB
C剪刀石头布游戏课程设计.docx
《C剪刀石头布游戏课程设计.docx》由会员分享,可在线阅读,更多相关《C剪刀石头布游戏课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
C剪刀石头布游戏课程设计
计算机科学与技术学院
《C++高级语言程序设计课程设计》报告
(2016/2017学年第一学期)
学生姓名:
常满琪
学生班级:
软件工程152601
学生学号:
201526170101
指导教师:
韩里虎
2016年12月20日
计算机科学与技术学院
课程设计任务书
课程设计名称
C++高级语言程序设计课程设计
课程设计题目
剪刀石头布
学生姓名
常满琪
专业班级
软件工程152601
学号
201526170101
课程设计任务内容
[问题描述]
[基本要求]
(1)实现人机对战的功能,
(2)可以记录比赛次数,输赢的次数
[测试要求]
(1)
(2)
指导教师:
时间:
年月日
目 录
(1)设计问题描述与需求分析 待定
(2)数据结构与算法设计 4
(3)程序设计编码与测试 5
(4)设计过程总结与体会 13
程序源代码:
#include
usingnamespacestd;
enum c_h_s{cloth,hammer,scissors,game,help,instructions,quit};
class Game //构造类
{
public:
Game();
enumc_h_sselect();
enumc_h_smach();
voidinstruct();
int won(enumc_h_s,enumc_h_s);
voidgamee(int,int,int);
voidhelpp();
voidsolution();
private:
int win;
int lose;
int tie;
enumc_h_splayer;
enumc_h_smachine;
};
*****************成员函数定义模块define.cpp************************
#include
usingnamespacestd;
Game:
:
Game() //初始化数据成员
{
win=0;
lose=0;
tie=0;
}
voidGame:
:
instruct()
{
cout< cout<<" "<<"****剪刀 锤子 布****"< cout<<"在这个游戏中"< cout<<"c表示布"< cout<<"h表示锤子"< cout<<"s表示剪刀."< cout<<"游戏者和机器都只选择c,h,s中的一个.如果二者的选择相同"< cout<<"那么这一局就是平局.此外: "< cout<<"\"布包锤子\"(布获胜)."< cout<<"\"锤子打烂剪刀\"(锤子获胜)."< cout<<"\"剪刀剪布\"(剪刀获胜)."< cout< cout<<"还有其它的选择是: "< cout<<"g表示游戏的结果(至今获胜的次数)"< cout<<"p可获得帮助"< cout<<"i可获得游戏方法的指导信息"< cout<<"q表示退出游戏."< cout<<"这个游戏一直重复到游戏者选择q为止."< cout<<"祝你好运! "< } enumc_h_s Game: : select() { charc; enumc_h_sp; cout< cout<<" 请选择c,h,或s: ";//提示用户输入字符 while((c=getchar())==''||c=='\n'||c=='\t'); switch(c){ case'c': p=cloth; break; case'h': p=hammer; break; case's': p=scissors; break; case'g': p=game; break; case'i': p=instructions; break; case'q': p=quit; break; default: p=help; break; } return(p); } enumc_h_s Game: : mach() { staticinti; i=++i%3; return((i==0)? cloth: ((i==1)? hammer: scissors)); } voidGame: : gamee(intwin,intlose,inttie) { cout< cout<<" 游戏结果如下: "; cout< cout.width(7); cout<<" 你获胜的次数是: "< cout.width(7); cout<<" 我获胜的次数是: "< cout.width(7); cout<<" 平局的次数为: "< cout.width(7); cout<<" 游戏的总次数是: "< } voidGame: : helpp() { cout< cout<<" 你可以输入下列的字符: "< cout<<" c表示布"< cout<<" h表示锤子"< cout<<" s表示剪刀"< cout<<" g查看游戏结果"< cout<<" p打印出这些信息"< cout<<" i重新打印出游戏指导信息"< cout<<" q退出游戏"< } intGame: : won(enumc_h_splayer,enumc_h_smachine) { intvictory; if(player==cloth) victory=machine==hammer; elseif(player==hammer) victory=machine==scissors; elsevictory=machine==cloth; return(victory); } voidGame: : solution() { instruct(); while((player=select())! =quit) switch(player) { casecloth: casehammer: casescissors: machine=mach(); if(player==machine) { ++tie; cout< cout<<"平局"; } elseif(won(player,machine)) { ++win; cout< cout<<"你获胜"; } else{ ++lose; cout< cout<<"我获胜"; } casegame: gamee(win,lose,tie); break; caseinstructions: instruct(); break; casehelp: helpp(); break; } gamee(win,lose,tie); cout< cout< cout<<"BYE! "< } ********************主函数定义模块main.cpp************************** #include usingnamespacestd; intmain() { Gameg; g.solution(); return 0; } 运行结果: 1、未输入任何命令 2、输入命令c 3、输入命令s 4、输入命令q,结束游戏。 设计过程 本次设计主要参考了网上搜索的资料,但搜索的资料并不符合课程设计要求,所以就要求我们运用我们所学知识按照课程设计要求改进,生成C++面向对象的程序文件。 首先,我根据网上的资料,把程序的流程图画出来。 把程序分成若干的功能块。 每个功能块能实现不通的功能,各功能块之间能够相互的调用。 功能块之间的合理组合实现了整个游戏的功能。 然后再定义各个功能块的作用,再根据作用用C++语言实现其功能。 并编译与链接各功能块,各功能块编译与链接正确后再把它们链接成一个工程。 本次设计中构造了一个Game类,将实现游戏的一些过程函数封装成类的函数,将在游戏里面需要的变量变成C++程序里面的数据成员。 然后分块将各个功能实现。 本次设计的评价与收获 三周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。 在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。 学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 提高了计算能力,,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。 继续阅读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 剪刀 石头 游戏 课程设计