tceic.com
学霸学习网 这下你爽了
相关文章
当前位置:首页 >> IT/计算机 >>

C++算法之石头剪子布


学校代码: 学校代码: 学 号:

10128

课程设计说明书
题 学 班 目: 院: 级: C++程序 程序设计 石 头 剪 子 布 游 戏 的 C++程序设计 理学院 信 计 08-2 田 毅

学生姓名:

指导教师:

二〇一二年 一 月 四 日

内蒙古工业大学课程设计(论文) 内蒙古工业大学课程设计(论文)任务书
课程名称: 面向对象的程序设计 课程名称: 学生姓名: 学生姓名: __ 学号: 学号: 学院: 学院: 理学院 田 毅 班级: 班级: 信计08-2 信计0

指导教师: 指导教师:

一、题目
石头剪子布游戏的 C++程序设计

二、目的与意义
面向对象程序设计课程设计可以培养学生综合运用所学面向对象程序设计知识和技能分析 与解决实际问题的能力,以及严肃认真的科学态度和严谨求实的工作作风。

三、要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等) 要求
采用面向对象程序设计语言 C++进行程序开发 选用一种 C++语言的开发环境设计界面及程序 在开发环境下,进行程序的运行及调试

四、工作内容、进度安排 工作内容、
主要内容 使用C++程序设计语言及其开发环境利用文件处理方式实现石头剪子布游戏的编写和调试。 工作进度安排 第一天:熟悉课程设计题目及具体要求,认识所要解决的问题,基本确定选择的开发环境。 第二天到第四天:拿出解决问题的初步方案,根据课题给出的题目,确定题目的解决方式及 步骤。 第五天到第七天:设计系统的功能模块,确定模块的功能,及模块之间的关系。 第八天到第十天:分析模块,确定需要的界面、结构,完成软件的整体框架,在开发环境下, 编程实现所开发的系统。 第十一天到第十二天:综合调试,去除软件中的错误,美化应用程序的界面。 第十三天和第十五天:撰写课程设计报告。

五、主要参考文献
[1]郑莉,董渊,何江舟.C++语言程序设计.第 4 版.北京:清华大学出版.2010.7 [2]吴乃陵, 况迎辉.C++课程设计. 北京:高等教育出版社,2006 [3]谢昕,刘觉夫,王更生.C++程序设计.北京:北京邮电大学出版社,2008

审核意见 系(教研室)主任(签字) 教研室)主任(签字) 指导教师下达时间 2011 12月 19日 2011 年 12月 19日

指导教师签字: 指导教师签字:_______________

摘要
本文主要介绍利用C++高级语言实现石头剪子布游戏的编辑和运行。通过 Microsoft Visual C++ 6.0软件进行石头剪子布游戏程序的编译,确定模块之间关系 及各模块功能,设计一个简单的操作界面实现石头剪子布游戏, 。 石头剪子布游戏系统通过C++高级语言进行编程, 并设计了简单明了的操作界面, 为用户提供更好的操作体验,更直接而充分的掌握本程序的一些应用和功能。通过直 观的方式,最终实现C++设计的应用程序——石头剪子布游戏。本次课设所做程序虽 然只是一个简单的C++手石头剪子布游戏程序,但是基本的应用功能都已具备,可以 更好的用在实际应用中。 关键词:C++高级语言;Microsoft Visual C++ 6.0;石头剪子布游戏 关键词

目录
引言 ................................................................... 1 第一章 石头剪子布游戏简介 .............................................. 2 1.1 选题背景 ....................................................... 2 1.2 开发环境 ....................................................... 2 第二章 游戏分析 分析与设计 第二章 游戏分析与设计 .................................................. 4 2.1 游戏功能分析 .................................................. 4 .................................................. 2.1.1 功能需求分析 ............................................... 4 2.1.2 关键技术 ................................................... 4 2.1.3 数据流程图 ................................................. 5 2.2 详细设计 ........................................................ 6 2.2.1 设计思路 .................................................. 6 2.2.2 功能设计 .................................................. 7 第三章 系统运行结果 结果与 第三章 系统运行结果与总结 ............................................. 11 3.1 运行结果 ....................................................... 11 3.2 总结 ........................................................... 13 参考文献 .............................................................. 15

引言
“剪刀石头布”是人们喜欢的一种娱乐游戏,近来,随着计算机的快速发展,以 计算机作为对战平台,各种游戏如雨后春笋般纷纷冒出,使得那些爱好娱乐,又常常 苦于没有对手的爱好者们能随时过足娱乐之瘾,而且这类软件个个水平颇高,大有与 人脑分庭抗礼之势。 当我们与电脑对战对时, 您知道这些软件是怎样像人脑一样进行思考的吗?总的 来说,要让电脑知道该怎么选择,就要根据随机状态,产生每一种随即可能,这便是 最基本的算法。 C++语言是一种面向对象的语言,尽管在当前,可视化语言发展迅速,普及很快, 但C++语言作为一种基础的语言,它的有时依然存在,甚至有时它是不可替代的,特 别是和硬件接口技术相联系的软件。石头剪子布游戏是一种简单大众的游戏,自从计 算机实现以来,深受广大电脑玩家的喜爱。本文使用C++语言,设计了剪刀石头布游 戏软件,在人机对弈时,使电脑具有较高的智商。本游戏是以C++语言作为开发工具, 采用搜索算法设计最优落子点开发的游戏软件。 本文详细地介绍了石头剪刀布游戏软 件设计的全过程,描述了该软件的功能。

1

第一章 石头剪子布游戏简介
1.1 选题背景
随着计算机技术的飞速发展,其应用方面已渗透到社会生活的各个领域。它已经 成为我们学习和工作中的重要工具,也是人们娱乐休闲的主要方式。通过一个学期 的C++语言课程的学习,根据学校课程设计的学习安排,要进行三周的C++语言 程序设计,自己动手编写游戏或系统。根据老师布置的设计任务书,根据我自 己的能力及意愿,我选择了设计一个小游戏:石头剪子布游戏。 石头剪子布游戏是一款简单的游戏,由两个人对抗,每人同时选择一种状 态,状态分为三种:石头、剪子和布。其中,布大于石头,石头大于剪子,剪 子又能大于布。若两个人的状态相同,则是为平局,否则按上述规则分胜负。 游戏要求,两人必须同时出示状态,且状态唯一,不能修改。此次课程设计是 人机对弈,一方为用户,一方为计算机,计算机随机产生状态,不违背规则。 实验准备:做游戏前,首先,详细参看了《面向对象的程序设计》 ,理解相 关函数的用法和作用;另外,上网查询了很多相关资料,还找了很多相关的游 戏设计的代码,都详细的参看了一遍,加深了对C++语言以及相关内容进一步理 解。根据实际情况设计出一款比较理想的小游戏。 本论文将具体介绍手石头剪子布游戏程序的设计、编译、运行。

1.2 开发环境
石头剪子布游戏的开发环境使用的是 Visual C++ 6.0,简称 VC 或者 VC6.0,是 微软推出的一款 C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程 序。Visual C++是一个功能强大的可视化软件开发工具。自 1993 年 Microsoft 公司 推出 Visual C++1.0 后,随着其新版本的不断问世,Visual C++已成为专业程序员进 行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但 它的应用有很大的局限性,只适用于 Windows 2000、Windows XP 和 Windows NT4.0。 所以实际中,更多的是以 Visual C++6.0 为平台。此次程设计题目是手机名片系统, 通过 C\S 模式,在界面中输入信息,对信息直接查询、添加、修改及删除操作。 Visual C++6.0 以拥有“语法高亮”,自动编译功能以及高级除错功能而著 称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间 重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编
2

译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩 短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。但是,他 仍旧存在着缺点,由于 C++是由 C 语言发展起来的,也支持 C 语言的编译。最大 的缺点是对于模版的支持比较差。现在最新补丁为 SP6,推荐安装,否则易出现 编译时假死状态。仅支持 Windows 操作系统。目前发现与 windows 7 兼容性不 好,安装成功后可能会出现无法打开.cpp 文件的现象。

3

第二章 游戏分析与设计
2.1 游戏功能分析
随着人们生活水平的不断提高,和科学技术的日益进步。生活中我们总会需要记 录一些人的联系方式,包括一些朋友、同学、老师、亲人甚至一些总要客户等等。而 传统的纸质名片显然已经不适应现在的生活方式和节奏。 而一些重要的联系方式又不 能丢掉,所以通过 C++文件处理方式来编程的手机名片能够实现基本的电话簿操作和 应用。即简单易用,又不失良好的用户操作界面,通过本次的课程设计,希望可以给 生活中忙碌的人们带来一些帮助。

2.1.1 功能需求分析
本系统定位于简单的 “石头剪刀布” 小应用程序, 暂时只考虑单机环境下的实现; 操作系统选择目前常用的 Windows xp 或者 Windows 7 系统 。 游戏系统采用人机交互模式,用户可以通过相应的操作完成游戏。 本系统的界面力求简洁、易用,在标准化的基础上考虑界面的美观和新颖。 本系统面向所有人群,凡是懂得计算机基本操作的人都可以对本程序进行应用。 简单明了的操作界面能够让用户迅速的适应并掌握。 本系统操作过程:输入数据;计算机随机输入数据;存储数据:存储计算机的输 入数据;存储用户的合法输入数据;判断用户的输赢:根据用户的选择,比较用户与 计算机的胜负;计算用户的胜负率:根据计算机的记录,计算用户的胜负次数的总和 及概率。

2.1.2 关键技术
本程序是一个简单游戏的应用程序,程序设计结构如表 2-1 中所示,具有一定的 娱乐功能,界面简单,操作简便。如图 2.1 为石头剪刀布游戏系统的数据流程图,从 图中可以清晰地看到系统的功能模块及整体结构。 游戏功能的关键技术: ①熟练掌握并运用 C++语言源代码;
4

②熟练掌握并运用 C++中的重要函数; ③掌握循环的函数的具体运用; ④能于 C++环境中运行游戏;

2.1.3 数据流程图
主 菜 单













图 2.1 游戏系统 游戏系统
数 据 比 较

数 据 输 入

数 据 处 理

数 据 输 出

数据处理图 图 2.2 数据处理图

图 2.3 数据流程图
5

2.2 详细设计
详细设计是整个程序设计的关键,为模块内的数据结构进行设计,能满足用户 对数据的处理要求;是对现实世界的具体分析。它易于编辑者的理解,从而可以用它 和不熟悉计算机的用户交换意见,用户的积极参与是程序设计成功的关键。其次它易 于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。

2.2.1 设计思路
用户输入:计算机随机输入选择,用户输入选择,并将数据储存。 计算:根据计算机和用户的选择,计算大小,并判断输赢,计算用户的胜负率, 并储存。 输出:根据用户的输入,将用户的游戏结果显示在屏幕上。 如表 2-1 所示,将系统的功能模块已经明晰的列出。 系统设计思路 表 2-1 系统设计思路 操 作 说 明

用户输入 计算 输出

用户输入选择 计算大小,并判断输赢 将游戏结果显示在屏幕上

在系统中,电脑要完成绝大部的功能。在玩家下完了之后,电脑要判断玩家是否 获胜、是否电脑获胜。石头剪刀布游戏中包含了三条关键信息:锤子、剪刀、布,如 表 2-2 所示。 输入信息 表 2-2 输入信息 标 c j b 号 内 容

锤子 剪刀 布

6

2.2.2 功能设计
石头剪子布游戏是一款简单的游戏,由两个人对抗,本程序一方为用户, 一方为计算机,计算机随机产生状态,状态分为三种:石头、剪子和布。其中, 布大于石头,石头大于剪子,剪子又能大于布。若两方的状态相同,则是为平 局,否则按上述规则分胜负。 具体功能设计实现代码: #include<stdio.h> #include<time.h> #include<stdlib.h> void main() { char r; char dn; int s,q; double p,y,n,f,z; p=0; y=0; n=0; printf("出锤子输入 c\n 出剪刀输入 j\n 出布输入 b\n 计算您的得分输入 f\n 可以一 次输入许多 会一次性出很多结果哦\n 请输入您的选择:\n"); srand(time(0)); 输入 */ /* 随机数生成器,设置 rand 种子值,用来获取计算机的 /* 用来存放用户的选择 */ /* 用来存放电脑的选择 */

// enum{布,剪刀,石头,结束}dn,r; do{ do{ s=rand()%3; switch(s) {

7

case 0 : dn='c';break; case 1 : dn='j';break; case 2 : dn='b';break; } do{ scanf("%c",&r); /* 用来获取用户的合法输入 */

}while(r!='c'&&r!='b'&&r!='j'&&r!='f'); if(r=='f') { z=y+n+p; f=100/z*(p/2.0+y); //p 平局 y 赢局 n 输局 z 总共局数

printf("一共比了%g 场\n 赢了%g 场\n 输了%g 场\n 平局%g 场\n",z,y,n,p); y=100/z*y; n=100/z*n; p=100/z*p; printf("您的胜率为%.3g%%\n 您的败率为%.3g%%\n 您平局率为%.3g%%\n 您的综合分 数为%.3g\n 对您成绩的评语:",y,n,p,f); if(f<=20) printf("您的运气真的差到一定无法想象的程度了~!\n\n"); if(f>20&&f<=40) printf("您的运气差了点哦,努力,加油!\n\n"); if(f>40&&f<=60) printf("您的运气还可以中等啦~中等啦……\n\n"); if(f>60&&f<=80) printf("您的运气不错哟~!嘿嘿……\n\n"); if(f>80&&f<=100) printf("哇~!~!~您的运气真的好到家了 你太帅了 GG 你太可爱了 MM~! !~\n\n"); printf("\n 随便输入几个字符按回车关闭程序\n"); scanf("%d",&q); }

8

if(dn==r) { printf("平手,继续\n"); p++; } else switch(dn) { case 'c' : if(r=='j') { printf("电脑 WIN!! 锤子:剪刀\n");n++; } else { printf("人 WIN! 锤子:布\n");y++; }break; case 'j' : if(r=='b') { printf("电脑 WIN! 剪刀:布\n");n++; } else { printf("人 WIN! 剪刀:锤子\n");y++; }break; case 'b' : if(r=='c') { printf("人 WIN! 剪刀:锤子\n");y++; } else {

9

printf("电脑 WIN! 布:锤子\n");n++; }break; } }while(r==dn); }while(r=='j'||r=='b'||r=='c'); }

10

第三章 系统运行结果 结果与 第三章 系统运行结果与总结
3.1 运行结果
运行游戏时,进行相应的操作,其显示结果如下所示。

3.1 图 3.1 输入锤子

3.2 图 3.2 多次输入石头剪刀布

11

3.3 显示比赛结果( 图 3.3 显示比赛结果(1)

3.4 显示比赛结果( 图 3.4 显示比赛结果(2)

12

3.5 显示比赛结果 比赛结果( 图 3.5 显示比赛结果(3)

3.2 总结
此程序设计的实验是对我进入大学以来学习程序设计语言成果的一个检验。 自己 动手,自己发现和解决问题,学会了独立,自主的思考,发现了自己的许多不足。平 时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上 机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习 能够解决好它们。但是,收获还是不小的,我不仅对 C++的操作有了进一步的掌握, 还了解到了程序设计的书写风格及其注释的格式。 当我选择编写小游戏“石头剪子布”这个题目时,一开始想运用大量函数及循环 来完成,但是在慢慢琢磨之后,觉得这个程序可以简化,于是改变了编程思路。当然 还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的 就是这个程序用了很多的选择循环,因此对于循环的控制要十分小心。 还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己去学 习,向他人请教,学会利用网络等了解知识的平台去学习和掌握更多的知识,这样我

13

们才能编出更好的 C++程序。 总体来说,这次 C++语言程序设计实验还是比较成功的,虽然最终程序还存在一 些不足,但能取得这样的成绩我还是比较高兴的。 最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导和其他同学对 我的帮助与支持。

14

参考文献
[1]郑莉, 董渊, 何江舟.C++语言程序设计[M].第 4 版.北京: 清华大学出版.2010 年.7 月. [2]吴乃陵, 况迎辉.C++课程设计[M]. 北京:高等教育出版社,2006 年. [3]谢昕,刘觉夫,王更生.C++程序设计[M].北京:北京邮电大学出版社,2008 年. [4]韦朴,陈泰生. Visual C++通用范例开发金典[M].北京:电子工业出版社.2008 年. [5]冷金麟. C++程序设计[M].上海:上海交通大学出版社.2008年

15


推荐相关:

C++算法之石头剪子布.doc

C++算法之石头剪子布 - 学校代码: 学号: 10128 课程设计说明书 题学

剪刀石头布的C++程序源代码.txt

剪刀石头布C++程序源代码_计算机软件及应用_IT/计算机_专业资料。#inc

C++实验报告.石头剪刀布.doc

11 1 C++实验报告石头剪刀、布游戏一、目的与要求在游戏中,孩子们用手表示石头剪刀或布中的一个,出拳头表示石头,伸出两根手指 表示剪刀,伸手表示布,孩子们...

C++课程设计石头剪刀布.doc

C++课程设计石头剪刀布_工学_高等教育_教育专区。基于C++编写的石头剪刀布小游戏...第二章.算法设计与流程图 1.算法设计:(1)在头文件 head.h 中定义枚举类型 ...

C++程序设计-石头剪刀布.doc

C++程序设计-石头剪刀布_计算机软件及应用_IT/计算机_专业资料。面向对象程

课程实验设计:基于c++面向对象的石头剪子布游戏-附源代码.doc

课程实验设计:基于c++面向对象的石头剪子布游戏-附源代码_计算机软件及应用_IT/...(函数调用关系请看概要设计) 4.调试分析 算法复杂程度一般,较为简单。可采用 ...

C++课程设计石头剪刀布游戏 最终.doc

C++课程设计石头剪刀布游戏 最终_工学_高等教育_教育专区。存档资料 成绩: 华东...第 6 页 第二章 概要设计设计思路与算法 1.让计算机随机产生 0-2 任意数,...

C++剪刀石头布游戏课程设计.doc

C++剪刀石头布游戏课程设计_计算机软件及应用_IT/计算机_专业资料。计算机科学与...(2)数据结构与算法设计 (3)程序设计编码与测试 (4)设计过程总结与体会 3 4...

剪刀石头布编程.doc

剪刀石头布编程_计算机软件及应用_IT/计算机_专业资料。C++编程剪刀石头布 #...C++算法之石头剪子布 19页 3下载券 JAVA实现“剪刀石头布”... 4页 免费...

《c++课程设计报告---小游戏“石头剪子布”》.doc

c++课程设计报告---小游戏“石头剪子布”》 - 解放军蚌埠坦克学院 PLABENGBUTANKINSTITUTE 课程设计》 《C++课程设计》报告 课程设计 题目:石头剪子布 班级:...

石头剪刀布C.doc

石头剪刀布C - 石头剪刀布(C++) #include <stdio.h

c 剪刀石头布游戏课程设计大学论文.doc

C++高级语言程序设计课程设计 剪刀石头布 专业班级 软件工程 152601 学号 ...(2)数据结构与算法设计 (3)程序设计编码与测试 (4)设计过程总结与体会 3 4...

C++算法题_图文.ppt

C++算法题 - 一、韩信点兵 ? 汉高祖刘邦曾问大将韩信:“你看我能带多少兵?

c++经典算法.doc

c++经典算法 - C++经典算法 1.链表逆序 [cpp] view plai

河北工业大学最新c++石头剪刀布出创新.doc

河北工业大学最新c++石头剪刀布出创新_计算机软件及应用_IT/计算机_专业资料。c++编程用led管显示玩家出的结果创新 MCS-51 综合性、开放性实验考试任务书 一、题目...

剪刀石头布C++控制台小游戏.txt

剪刀石头布C++控制台小游戏 - 小游戏:剪刀石头布 **...

shell 编程 猜拳 石头剪刀 布_图文.ppt

石头剪刀布“游戏 1 人机对战(c++) 目录 2 shell脚本 明年工划 电脑随机数...srand(time(0)) ;就是给这个算法一个启动种子,也就是 算法的随机种子数,有...

C++剪刀石头布游戏课程设计.doc

C++剪刀石头布游戏课程设计 - 华科学院信息管理与信息系统专业 《程序设计综合

c++猜拳程序实验报告.doc

c++猜拳程序实验报告 - 实验报告(综合训练 1.2) 1 题目和问题陈述: 猜拳游戏 C 程序开发:甲乙两人出拳玩石头剪刀和布,游戏规 则是 石头>剪刀>布>石头,即...

基于c++的猜拳游戏.doc

基于c++的猜拳游戏_计算机软件及应用_IT/计算机_专业资料。c++ #include<iostream...数字1代表石头 数字2代表剪子 数字3代表布\n"<<endl; char isGoOn; int ...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com