掷骰子游戏-c语言程序课程设计

合集下载

《C语言程序设计》(第3版_乌云高娃)-11章 综合实训项目源程序 综合实训项目源程序6 掷骰子游戏

《C语言程序设计》(第3版_乌云高娃)-11章 综合实训项目源程序 综合实训项目源程序6 掷骰子游戏

综合项目源程序:掷骰子游戏#include "stdio.h"#include "stdlib.h"#include "time.h"#define random(x) (rand()%x)void main(){int iNum[4] = {0};int iPoint = 300;int iWin = 0, iFail = 0;char chYesNo = '0';int i;int iBigSmall, iBetPoint;srand((int)time(0));printf("欢迎使用“赌大小”游戏\n");do{while(1){fflush(stdin); /* 清除缓存*/printf("\n是否开始继续游戏(Y/N):");scanf("%c", &chYesNo);if (chYesNo == 'n' || chYesNo == 'N'){printf("游戏结束,再见。

\n");return;}else if (chYesNo == 'y' || chYesNo == 'Y'){break;}else{printf("输入错误,请重新输入。

\n");continue;}}printf("目前你的点数为%d;一共赢了%d次,输了%d次。

\n", iPoint, iWin, iFail);for (i=0; i<4; i++){iNum[i] = 0;}if (iPoint < 50){printf("你目前的点数小于50,不能继续玩游戏,再见。

\n");break;}printf("请输入你猜测的大小结果,认为“大”输入1,认为“小”则输入0:\n"); scanf("%d", &iBigSmall);/* 输入赌注并判断其有效性*/while (1){printf("请输入你本轮游戏的下注(必须是50的倍数):\n");scanf("%d", &iBetPoint);if (iBetPoint%50 != 0){printf("你的下注不是50的倍数,请重新输入。

C语言模拟掷骰子游戏

C语言模拟掷骰子游戏

C语⾔模拟掷骰⼦游戏⽬录实现掷骰⼦⼩游戏实现原理源码介绍效果展⽰今⽇练习题⽬描述问题分析代码实现运⾏结果实现掷骰⼦⼩游戏在开始今天的练习前,我先写⼀个有趣的C语⾔⼩游戏——掷骰⼦(zhì tóu zi)实现原理⼤家对骰⼦应该不陌⽣,让我们先看看百度词条的介绍:掷骰⼦拼⾳:zhì tóu zi骰⼦:既⾊⼦,⽤象⽛、⾻头或塑料等较坚硬物体做的⼩四⽅块;每⾯刻有点数,⼀到六,常⽤⼀对做各种游戏或赌博。

掷骰⼦:先摇动骰⼦,然后抛掷使两个骰⼦都随意停⽌在⼀平⾯上。

——百度百科掷骰⼦时,每次能掷出的点数为1~6,且是随机的,那么如何⽤C语⾔来产⽣这⼀随机数呢?这时就要⽤到rand()和srand()函数了:srand函数是随机数发⽣器的初始化函数。

原型:void srand(unsigned int seed);srand和rand()配合使⽤产⽣伪随机数序列。

rand():原型:int rand(void),功能:产⽣随机值,从srand (seed)中指定的seed开始,返回⼀个[seed, RAND_MAX(0x7fff))间的随机整数。

srand():原型:void srand(unsigned seed),参数:seed是rand()的种⼦,⽤来初始化rand()的起始值。

功能:可以认为rand()在每次被调⽤时,它都会查看srand(seed)中指定的seed值,如果存在srand(seed),那么它会⾃动调⽤srand(seed)⼀次来初始化它的起始值。

如果⽤户在此之前没有调⽤过srand(seed),它会⾃动调⽤srand(1)⼀次。

——百度百科上⾯提到了rand()函数只能⽣成伪随机数,意思是如果起始值seed固定,那么每次程序运⾏,它产⽣的随机数序列都是相同的,⽽不是真正意义上的随机数。

形象地说,如果seed值固定,那每次程序运⾏,第⼀次掷到的点数都是固定的,这显然不合理,那怎么⽣成更加合理的随机数呢?我们都知道系统的时间值(总秒数)是时刻都在变化着的,如果把时间秒数当做随机数的种⼦seed,那岂不是能实现真正的随机数?答案是⽅法可⾏,但并不能产⽣真正的随机数,因为时间是递增的,是有规律的数字序列,所以产⽣的随机数也会呈现⼀定的规律,但是,此时的随机数已经⾜够我们⽤来完成掷骰⼦游戏了,所以我们也没必要去纠结是否是真正的随机数(可能计算机本来就⽆法产⽣真正随机数)。

骰子游戏课程设计

骰子游戏课程设计
if(e==7||e==11)
cout<<"你赢了"<<endl<<endl;
else if(e==2||e==3||e==12)
cout<<"你输了"<<endl<<endl;
else if(e==4||e==5||e==6||e==8||e==9||e==10)
{
do
{
q=A.RollDice();
do
{
……
}while(d!=3);
四、实现步骤
1、建立头文件并定义有用到的字符常量,具体代码如下:
#include<iostream>
#include<cstdlib>
using namespace std;
2、定义一个包含可能用到的函数的类,并随后定义类中的函数,具体代码如下:
class DiceGame
}
void DiceGame::help()//显示帮助内容的函数
{
cout<<"玩家在游戏开始时投掷两颗骰子,如果所得到的和为7或者11,"<<endl;
cout<<"那么玩家赢得胜利。"<<endl;
cout<<"如果所得到的和为2、3、12那么玩家输了该局游戏,"<<endl;
cout<<"如果所得到别的和值,那么此和为玩家的点数,"<<endl;
从上面的屏幕显示,可知本程序满足课程设计的目标与要求。
六、课程设计总结
自己写

C语言程序设计(第3版)综合实训项目6 掷骰子游戏

C语言程序设计(第3版)综合实训项目6 掷骰子游戏
评分方式
课程任课老师单独完成评分;其中课程负责人承担监督作用
表2.作业总体评分标准
5、提交于交付形式:
作业重要里程碑
里程碑相应时间
作业发布日期
最后交付日期
作业交付形式:将作品拷入光盘提交,课堂用U盘提交,课堂网络上传提交。
表3.作业交付时间与交付形式
6、与作业相关的重要注意事项:
1.作业内容应由学生以个人或小组形式独立完成,学生不得抄袭他人作品或将作业内容转交由他人完成,一经发现,作业提交内容可被视为无效,将记录为学生自动放弃提交作业。
4.本次作业一经课堂发布后,不得视作没有收到或因任何技术故障无法接收,否则一切因此产生的导致作业扣分的责任有该生本人负责。
5.除学生本人制作或创作的作品外,一切作业过程中所使用的由校方或任课老师提供的硬件设备、程序、代码、图片、影像、声音素材等文件在未经任课教师同意的情况下不得擅自外借或拷贝给第三方机构与个人。 否则,一切因此产生的法律后果由学生本人承担。
6.如学生对以上任何内容有任何疑问,应当在发布作业的三天内对相关任课老师提出,如未提出任何疑问则表示学生与老师对作业的内容的理解无误。在此事实的基础上,任何与内容要求相违背的作业内容将视为无效内容,学生应为自己提交的无效内容负责。
2、考核内容:
2.1案例描述:
扔骰子小游戏
我们平时玩的骰子上有六个数,分别是1,2,3,4,5,6。当三个骰子在一起扔的时候就形成了赌大小的游戏。赌大小的大致规则是根据三个骰子所产生的点数总和来决定“大”还是“小”。如3个数字加起来是1-9算小,10-18算大。请编写一个程序,利用函数实现扔骰子的功能。
序号
评 分 标 准
分数分布
1
程序功能实现是否能够满足题目的基本要求?

zxC语言05-函数-模拟掷双骰子游戏(Loop+Point)

zxC语言05-函数-模拟掷双骰子游戏(Loop+Point)

/*程序结束,返回操作系统*/
return 0;
}
/*完整的一次赌局
参数:本金
返回值:输赢状态*/
int oneBet ( int *money )
{
int status, sum, bet = 0, myPoint, i;
printf ( "\n……开始下注……\t" );
bet += ONEBET; //第一次下注
status = LOST; break;
default: //按第一轮的规则,输赢未决,继续下注
status = NEXT;
myPoint = sum; //保存自己第一轮的点数
printf ( "您的点数是%d\n", myPoint );
if ( status == WIN )
{
printf ( "\n赢了!" );
*money += bet; //赢了,翻倍拿回
}
else
{
printf ( "\n输了!" );
*money -= bet; //输了,投注的钱没了
return workSum; //返回两个骰子之和
}
die2 = 1 + ( rand ( ) % 6 ); //投掷骰子2
workSum = die1 + die2; //两个骰子之和
printf ( "点数%d+%d=%d\t", die1, die2, workSum ); //显示投掷骰子的结果
/*返回主调函数*/
}
/*返回主调函数*/
return status; //返回输赢状态

CC++实现投骰子游戏

CC++实现投骰子游戏

CC++实现投骰⼦游戏我们将要模拟⼀个⾮常流⾏的游戏——掷骰⼦。

骰⼦的形式多种多样,最普遍的是使⽤两个6⾯骰⼦。

在⼀些冒险游戏中,会使⽤5种骰⼦:4⾯、6 ⾯、8⾯、12⾯和20⾯。

聪明的古希腊⼈证明了只有5种正多⾯体,它们的所有⾯都具有相同的形状和⼤⼩。

各种不同类型的骰⼦就是根据这些正多⾯体发展⽽来。

也可以做成其他⾯数的,但是其所有的⾯不会都相等,因此各个⾯朝上的⼏率就不同。

计算机计算不⽤考虑⼏何的限制,所以可以设计任意⾯数的电⼦骰⼦。

我们先从6⾯开始。

我们想获得1~6的随机数。

然⽽,rand()⽣成的随机数在0~ RAND_MAX之间。

RAND_MAX被定义在stdlib.h中,其值通常是 INT_MAX。

因此,需要进⾏⼀些调整,⽅法如下。

1.把随机数求模6,获得的整数在0~5之间。

2.结果加1,新值在1~6之间。

3.为⽅便以后扩展,把第1步中的数字6替换成骰⼦⾯数。

下⾯的代码实现了这3个步骤:#include <stdlib.h> /* 提供rand()的原型 */int rollem(int sides){int roll;roll = rand() % sides + 1;return roll;}我们还想⽤⼀个函数提⽰⽤户选择任意⾯数的骰⼦,并返回点数总和。

/* diceroll.c -- 掷骰⼦模拟程序 *//* 与 mandydice.c ⼀起编译 */#include "diceroll.h"#include <stdio.h>#include <stdlib.h> /* 提供库函数 rand()的原型 */int roll_count = 0; /* 外部链接 */static int rollem(int sides) /* 该函数属于该⽂件私有 */{int roll;roll = rand() % sides + 1;++roll_count; /* 计算函数调⽤次数 */return roll;}int roll_n_dice(int dice, int sides){int d;int total = 0;if (sides < 2){printf("Need at least 2 sides.\n");return -2;}if (dice < 1){printf("Need at least 1 die.\n");return -1;}for (d = 0; d < dice; d++)total += rollem(sides);return total;}该⽂件加⼊了新元素。

课程设计-掷骰子游戏设计

课程设计-掷骰子游戏设计

华东交通大学基础学院C++课程设计报告题目:掷骰子游戏的分析与设计姓名:张春梅学号:20080810010101班级:08信息与计算科学(1)班学年学期: 2009 ~ 2010 学年第一学期日期:2009年12月21日目录一掷骰子游戏设计需求分析 (2)1、掷骰子游戏需求 (2)2、游戏实现方式 (3)二类关系图和类主要成员函数和成员变量 (4)三模块的设计分析 (5)1、游戏类(class Player)的说明 (5)2、游戏类(class Player)的流程图 (8)3、程序运行结果: (11)四存在的问题与不足及总结 (13)五掷骰子游戏使用说明书(操作手册) (14)一掷骰子游戏设计需求分析1、掷骰子游戏需求:1)假如有n个学生排成一圈,编号从1到n,每个人有初始积分,不防设为100。

2)从1号开始掷骰子,骰子出现后,根据点数减去掷骰人的相应积分,如减去10*(6-点数),然后根据点数多少,就依次向后数掷骰的点数同等数量的人,被数到的最后一个人继续掷骰子,计算积分,依此类推。

3)如果某人掷骰后,其积分小于等于0则出列,余下的人继续按照此法进行游戏,直到剩下最后一个人,为胜利者。

4)要求打印每次出列的人的编号,掷骰子的次数,当前积分。

并打印最后胜利者的相应信息。

5)要求用环链表以及类来实现这个程序。

6)选做:问掷骰m次后,还剩下几个人积分多少,显示出来。

2、游戏实现方式:为了实现游戏的上述功能,在整个程序的设计中构造了一个游戏类(class player)。

下面是游戏类(class player)的成员函数实现的功能:1)成员函数Player(char *pName,int id )用于储存参赛者的姓名和他们的编号;2)成员函数Player::Integral(int number)用于计算参赛者的当前积分和掷骰子的次数。

3)成员函数Player::Initial( )用于创建参赛者的链表。

c掷筛子课程设计

c掷筛子课程设计

c 掷筛子课程设计一、课程目标知识目标:1. 学生能够理解并掌握投掷骰子的基本概念和原理。

2. 学生能够运用概率知识,分析投掷骰子结果的随机性和规律性。

3. 学生能够运用统计方法,对投掷骰子的结果进行数据收集、整理和分析。

技能目标:1. 学生能够运用数学思维,解决与投掷骰子相关的问题。

2. 学生能够运用合作交流技巧,与小组成员共同完成投掷骰子的实验和数据分析。

3. 学生能够运用信息技术手段,如电子表格等,对投掷骰子的数据进行处理和展示。

情感态度价值观目标:1. 学生对数学学科产生兴趣,认识到数学在生活中的实际应用。

2. 学生培养合作精神,学会倾听他人意见,尊重实验事实。

3. 学生养成勇于探究、严谨治学的学习态度,树立正确的价值观。

课程性质:本课程为数学学科实验课,结合实践操作和数据分析,培养学生的数学思维和实际操作能力。

学生特点:五年级学生具备一定的数学基础和实验操作能力,对新鲜事物充满好奇心,善于合作交流。

教学要求:教师需引导学生积极参与实验,注重培养学生的动手操作能力和数据分析能力,同时关注学生的情感态度价值观的培养。

通过本课程的教学,使学生在掌握知识技能的同时,形成良好的学习习惯和合作精神。

二、教学内容本节课以“投掷骰子”为主题,结合教材中概率与统计的相关章节,组织以下教学内容:1. 投掷骰子基本概念:介绍骰子的结构、面数、点数等基本知识,使学生理解骰子的特点。

2. 概率知识:讲解随机事件的概念,引导学生认识投掷骰子结果的随机性,探讨事件发生的可能性。

3. 实验操作:组织学生进行投掷骰子的实验,让学生观察、记录实验结果,培养学生的动手操作能力。

4. 数据收集与整理:指导学生如何收集、整理实验数据,运用图表、统计量等方法,对数据进行可视化展示。

5. 数据分析:引导学生分析实验数据,探讨投掷骰子结果的规律性,培养学生的数据分析能力。

6. 数学思维:结合实验结果,引导学生运用数学思维解决问题,如计算概率、预测结果等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号2015-2016学年第二学期
《C语言程序设计》
课程设计报告
题目:掷骰子游戏
专业:计算机科学与技术
班级:15计科(3)班
姓名:廖晶晶
指导教师:邓明
成绩:
计算机学院
2016 年4月26 日
目录
1.课题设计的目的与要求 (3)
1.1实验目的 (3)
1.2设计要求 (3)
2.课题分析 (4)
2.1掷骰子游戏 (4)
2.1.1题目内容描述 (4)
2.1.2输入数据类型、格式和内容限制和输出数据说明 (4)
2.1.3流程图 (5)
3.总结 (8)
4.参考书籍 (8)
5.附件 (8)
5.1程序源代码 (8)
掷骰子游戏
1.课题设计的目的与要求
1.1实验目的
C语言是一种编程灵活,特色鲜明的程序设计语言。

C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。

结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序任务书》,以在实训过程中给学生提供帮助。

达到如下目的:
(1)在课程结束之前,让学生进一步了解c程序设计语言的编程功能
(2)让学生扎实掌握c程序设计语言的相关知识;
(3)通过一些有实际意义的程序设计,使学生体会到学以致用,并能
将程序设计的知识与专业知识有效地结合,更全面系统地了解行
业知识。

1.2设计要求
根据实验内容的要求自由选定题目。

编写程序要求遵循如下基本要求:
●模块化程序设计
●锯齿型书写格式
●必须上机调试通过
2.课题分析
2.1掷骰子游戏
2.1.1题目内容的描述
两人玩骰子,游戏规则如下:
1)两人轮流掷骰子,每次掷两个,每人最多掷10次。

2)将每人每次的分值累加计分。

3)当两个骰子点数都为6时计8分;当两个点数相等且不为两个6时,
计7分;当两个点数不一样时,计其中点数较小的骰子的点数。

4)结束条件:当双方都掷10次或经过5次后一方累计分数为另一方的
两倍。

最后显示双方分数并判定优胜者。

2.1.2输入数据类型、格式和内容限制和输出数据说明
输入数据类型:整型数
格式:srand(time(0));输入数=rand()%6+1;
内容限制:产生最多十次随机数
输出数据说明:掷骰子的获胜者
2.1.3流程图
图1




开始
输入x ,y
x=y


x=6
x>y
n=n+8 n=n+7 n=n+y n=n+x
输出n
结束
图2 否





开始
输入i ,j
i=j
i=6
i>j
z=z+8 z=z+7 z=z+j z=z+i
输出z
结束
2.1.4调试过程及实验结果
出现的问题:每次循环产生的随机数相同。

解决方法:把随机函数移到for循环前。

执行结果截图
图3
3.总结
这是第一次接触c++,感觉很朦胧,但是通过老师悉心的教导和同学们的沟通与交流后,还是学会了很多的东西。

从一个简单的变量,表达式到语句,函数。

发现那些程序虽然很抽像但也不乏有很多的乐趣。

经过这半学期的实践课程,我也初步了解了c语言的基础,也能独立初步完成编程操作,但目前作为初学者,无法实现较复杂的编程,有些较为复杂的程序更是看不懂,各方面有待提高。

C语言作为现代大学生最重要的课程之一,用途广泛,更使我认识到了独立思考,实践操作的重要性。

C语言的学习不仅重理论,更重实践。

而学好c语言的一大方法便是“实践”,在c语言实践过程中遇到的种种问题,及解决问题的方法,更是锻炼了学生的实践能力,使我们不仅是学习理论,更学习了实践,今后一定要理论和实践有机结合,加上独立思考和不懈努力的学好c语言,为撬开编程的大门不懈努力。

4.参考书籍
[1] 严蔚敏,吴伟民,米宁等.数据结构(C语言版)[M] .北京:清华大学出版社,2007
[2] 谭浩强著.C程序设计(第三版)[M] .北京:清华大学出版社,2005
[3] 耿国华.数据结构C语言描述[M].北京:高等教育出版社,2010
[4] 严蔚敏,吴伟民,米宁等.数据结构题集(C语言版)[M] .北京:清华大学出版社,2011
[5] 严蔚敏,李冬梅等. 数据结构(C语言版)(第2版)[M] .北京:清华大学出版社,2014
5.附件
5.1程序源代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a,e=0,f=0,g,h,l,m;
int point1(int x,int y);
int point2(int i, int j);
srand(time(0));
for(a=0;a<10;a++)
{
if(a==5)
{
if(e==f*2||f==e*2) break;
}
g=rand()%6+1;
/*产生1~6
的随机数
*/
h=rand()%6+1;
l=rand()%6+1;
m=rand()%6+1;
e=e+point1(g,h);
/*计算总分数*/
f=f+point2(l,m);
}
printf("甲的总分:%d\n乙的总分:%d\n",e,f); if(e>f)printf("甲获胜\n");
else if(e==f)printf("甲乙平手\n");
else printf("乙获胜\n");
}
int point1(int x,int y) {
int n=0;
printf("甲:%d %d\n",x,y); /*
判断每次得分
*/
if(x==y)
{
if(x==6) n=8;
else n=7;
}
else if(x>y) n=y;
else n=x;
return n;
}
int point2(int i, int j) {
int z=0;
printf("乙:%d %d\n",i,j); if (i==j)
{
if(i==6) z=8;
else z=7;
}
else if(i>j) z=j;
else z=i;
return z;
}。

相关文档
最新文档