版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
掷骰子游戏实验报告第第页一:实验目的设计一个模拟投掷骰子的游戏程序,其游戏基本内容为,游戏者每次投掷两颗骰子,每颗骰子是一个正方体,有6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时,要将每颗骰子朝上的点的数相加,在第一次投掷骰时,
如果所得到的和为7或11,那么游戏者为赢得胜利;
如果所得到的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6、8、9或10,那么为游戏者的点数;如要想赢得胜利,必须继续投掷骰子,直到取得自已的点数为止,
但是如果投掷出的和为7,那么游戏者为输了。二:实验主要功能该游戏的主要功能为:实现随机投掷两个骰子把其所得点数相加,然后根据点数和判断玩家的输、赢或平局。1.主菜单界面。包含所具有所有功能的选项。2.获得游戏帮助功能。告诉游戏者游戏规则。
3.显示游戏数据功能。在游戏结束时,显示游戏者获得的游戏数据。
4.模拟游戏功能。选择进入,开始游戏。
5.退出模拟游戏功能。玩完游戏后退出程序。三:实验工具/准备工作(1)实验开始前,先回顾和复习相关内容
在自己的电脑上安装Visual
C++等集成开发软件C++C/C++的哲学就不一样了,同一份程序代码,只要在该平台重新Compile成该平台的执行档,就能在该平台执行,若文字模式下的程序,的确可以跨平台,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一样且没有标准,所以GUI程序并没办法跨平台Compile,因为各平台都有专属的Library。但是C/C++优势就是执行速度快,若能解决GUILibrary的问题,则跨平台即可解决。Microsoft的VisualC++,MFC用的是完整的ANSIC++语言,所以语言部分不是问题,但若你看过用MFC写的程序,你一定会惊讶为什么这么复杂,程序代码非常冗长不好看,且MFC是有名的难学,若VisualC++搭配.NETFramrwork,则无法使用ANSIC++,得用其.NET平台版本的C++/CLI,相信这点很多人就有意见了,不过.NETFramework由于设计的不错,所以写出来的程序相当精简漂亮,感觉和C++Builder差不多,不过无论是C++Builder或VisualC++开发的GUI,所开发出来的程序都无法跨平台,当然也无法跨平台Compile。(2)QTA:QT的介绍Qt是一个跨平台的开发框架,横跨包括是一个跨平台的开发框架,是一个跨平台的开发框架Unix/Linux/Mac/Windows/Meego等常见操作系统平台,并支持如等常见操作系统平台,等常见操作系统平台Symbian/WindowCE/单片机等多种嵌入式平台。“一次编写,随处单片机等多种嵌入式平台。一次编写,单片机等多种嵌入式平台编译”即同样的代码,只需在新的系统上重新编译即完成了移植,编译”,即同样的代码,只需在新的系统上重新编译即完成了移植,大大降低了移植成本Qt使用标准的面向对象机制,支持使用使用标准的面向对象机制,进行开发。使用标准的面向对象机制支持使用C++进行开发。如果使用进行开发Qyoto和QtJambi,同样可以使用和Java进行开发和同样可以使用C#和进行开发Qt拥有拥有250个以上的C++类,包含了无数方法,接口全部使用统一、友好的方式命名,友好的方式命名,对于一些没用过的方法不查文档也可以知道用法Qt具有丰富的工具和帮助文档,可以实现一键查询用法具有丰富的工具和帮助文档,具有丰富的工具和帮助文档XML支持和支持和Webkit引擎集成支持和引擎集成QT遵循商业和开源双重协议遵循商业和开源双重协议合并后,即将以Qt作为塞班和的标准开发框架,被Nokia合并后,Nokia即将以作为塞班和合并后即将以作为塞班和meego的标准开发框架,的标准开发框架Android是近几年才出现的名词,但是在嵌入式领域已经发展了是近几年才出现的名词,在嵌入式领域已经发展了10是近几年才出现的名词。B:QT的优势XML支持。大量的开发文档支持2D/3D图形渲染,支持OpenGL优良的跨平台特性,Qt支持下列操作系统:MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。面向对象,Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。丰富的API,Qt包括多达250个以上的C++类,还提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类.甚至还包括正则表达式的处理功能。四:项目分析(1)这种小型的游戏的开发方法可以采用结构化方法分析与设计。首先,分析软件的逻辑模型,也就是这个软件需要“做什么”。然后,再建立软件的物理模型,既要“怎么做”的工程。1.主菜单
程序是通过类的成员函数Game()来实现对主菜单的输入与输出的处理。
2.获得游戏帮助功能
程序是由类的成员函数Help()来实现。3.显示游戏数据功能
程序是由类的成员函数Show()来实现。
4.模拟游戏功能
程序是由类的成员函数Game()来实现。
5.退出模拟游戏功能
使程序退出工作状态。(2)类的声明其声明如下:class
DiceGame
{
private:
//
数据成员:
int
numOfWin;
//
胜利数次
int
numOfLose;
//
失败数次
int
numOfTie;
//
平局数次
//
辅助函数
int
RollDice();
//
模拟投掷一次骰子
void
Help();
//
获得帮助
void
Show();
//
显示统计结果
public:
//
方法声明:
DiceGame();
//
无参数的构造函数
virtual
~DiceGame(){}
//
析构函数
void
Game();
//
模拟游戏五:程序流程图游戏开始输入输入1,2,33、退出游戏2、游戏开始1、帮助3、退出游戏2、游戏开始1、帮助显示结果显示结果 按任意键退出六:实验步骤1.
设计当前时间为随机数种子,模拟投掷一次两个骰子,返回值为所投掷的两颗骰子向上一面的点数之和。代码如下:
int
DiceGame::RollDice()
//
模拟投掷一次骰子,返回值为所投的两颗骰子向上一面的点数之和
{
int
numOfDice1;
//
所投掷的第1颗骰子向上一面的点数
int
numOfDice2
//
所投掷的第2颗骰子向上一面的点数
int
sum;
//
所投掷的两颗骰子向上一面的点数之和
numOfDice1
=
1
+
Rand::GetRand(6);
//
模拟所投掷骰子1的点数
numOfDice2
=
1
+
Rand::GetRand(6);
//
模拟所投掷骰子2的点数
sum
=
numOfDice1
+
numOfDice2;//
计算所投掷两颗骰子向上一面的数之和
cout<<"选手掷骰子:"<<
numOfDice1<<numOfDice2
<<
"="
<<
sum
<<
endl;
return
sum;
//
返回所掷骰子向上一面点数之和
}
2.
通过if选择语句进入游戏项目2,模拟第一次投掷骰子,并用switch开关语句来判断枚举量status的状态是输、赢或者平局,如果是平局,则记录点数。代码如下:
if(select==2)
//输入2
{
sum=RollDice();
//模拟掷骰子
switch(sum)
{
case
7:
//掷得7或11胜利
case
11:
status=WIN;
numOfWin++;
break;
case
2:
//投掷得2、3、12,输了
case
3:
case
12:
status=LOSE;
numOfLose++;
break;
default:
//投得其他数值,处于平局
status=TIE;
myPoint=sum;
numOfTie++;
cout<<"点数"<<myPoint<<endl;
}
3.通过status的状态用if条件语句判断玩家的输赢,如果是平局,既status==TIE时,利用UserSaysYes()函数让玩家选择是否继续游戏。若玩家选择继续游戏,则依然用if条件语句判断status的状态来判断输赢,只有玩家在六次以内再次投掷到相同的点数时,玩家即胜利,但是,若首先投掷到的点数和为7或者连续6次都是平局,则游戏为输了。代码如下:
while(1)
{
if(status==WIN)
{
cout<<"恭喜你,赢得游戏!"<<endl;
break;
}
if(status==LOSE)
{cout<<"很遗憾,你输了!"<<endl;
break;
}
while(status==TIE)
{
cout<<"你现在是平局,是否要继续游戏";
if(UserSaysYes())
{
int
again;
again=RollDice();
//处于平局再次掷骰子
if(myPoint==again)
//掷得自己的点数,赢得胜利
{
status=WIN;
numOfWin++;
break;
}
else
if(again==7)
//投得7,输了
{
status=LOSE;
numOfLose++;
break;
}
else
//平局
{
numOfTie++;
if(numOfTie
==
6)
//平局6次,输了
{
status=LOSE;
cout<<"你已平局6次,";
break;
}
}}}}4.如果玩家的输入有误,则需用if条件语句判断,并提示正确的输入。代码如下:
if(select!=1&&select!=2&&select!=3)
//若输入不是
1,2,3
重新输入
{
cout<<"请用1,2,3回答"<<endl;
continue;
}七:实验结果游戏开始时的界面及玩家选项的提示
2.若玩家输入有误,则需提醒玩家输入正确的选项进入游戏.若玩家中途忘记游戏规则,则课选择选项1,进入帮助提醒的界面玩家选择选项2,进入游戏,并在第一次投掷中获得胜利
玩家进入游戏,第一次投掷获得点数,但最后投掷出了点数是7,所以失败了.6.玩家第一希投掷为平局,获得点数,但在接下来的次投掷中连续6次平局,由游戏规则可知,玩家在此局中又失败了
玩家玩完了游戏,选择选项3退出游戏,并显示玩家在此次游戏中的结果八:实验心得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 橡胶鞋行业标准制定与质量监管-洞察分析
- 单位补缴社保承诺书(6篇)
- 舞蹈教育信息化探索-洞察分析
- 虚拟现实渲染技术-洞察分析
- 保险金融行业理赔流程心得
- 儿童家具的个性化定制化设计趋势
- 办公环境中的智能家居安全解决方案
- 从零到一创新型实验室的安全教育培训全流程解析
- 创新驱动的科技教育模式探索
- 2025建筑工程公司集体合同集体合同适用于分公司
- 铝锭购销合同铝锭销售合同2024年
- Unit 7 Careers Writing Workshop 申请信讲解 教学设计-2023-2024学年高中英语北师大版2019 选择性必修第三册
- 医药行业药品配送优化服务方案
- 广东省深圳市红岭中学2023-2024学年七年级上学期分班考试语文试题(解析版)
- TCI 288-2024 缓粘结预应力混凝土灌注桩技术规程
- 2024年新苏教版五年级上册科学全册知识点
- MRI原理与技术智慧树知到期末考试答案章节答案2024年南方医科大学、广州医科大学
- Byk助剂说明手册
- 建筑施工企业增值税留抵税额形成原因及对策建议
- 2024新外研版初一上英语单词默写表
- 泰勒公式及泰勒级数的应用
评论
0/150
提交评论