第一篇:C++课程设计:一个21点的扑克牌游戏
第1题 一个21点的扑克牌
1.1.1 课程设计的程序功能简介:
一个21点牌的扑克游戏,玩家一共可以要5张牌,但如果牌的点数超过21,则暴了,自动出局,在不超过21点的情况下,玩家与庄家比牌的大小,大者为赢。
1.1.2 课程设计的任务要求:
(1)将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化;
(2)程序中一共有十三张扑克牌可以随机抽取,大于10的点数为10,现要求大于10的点数全部为半点;
(3)要求庄家永远不会暴庄,即庄家可以查看下一张牌,若大于21点,则拒绝,当然,在游戏规则上不能泄露这点秘密;
(4)高级玩家可以查看下一张牌,即按H键,然后按要求输入密码,密码正确可以看牌,并决定是否要牌;
(5)每次要牌后可以设定赔率,即如果开始下的是10元钱的注,如果牌好,你可以要求再下注,当然不能超过你所有的总钱数;
(6)将界面的提示说明改成中文界面,界面的解释详细友好,可以吸引更多的玩家。
1.1.3 课程设计的说明:
(1)题目要求把原程序封装在类中,需要编写一个类来封状所有相关函数和变量.因此编写了名为XXX类,同时对mian主函数进行了改写,以完成题目的要求;
(2)题目要求把抽到大于10点的牌的点数设为一半,只需设计随机取下一张牌的成员函数使用if语句判定牌的点数是否大于10,大于10的牌对其重新赋值为0.5即可;
(3)题目要求庄家永远不会暴庄,庄家取下一张牌之前先判定取牌后总点数是否会大于21点,大于的话就拒绝取下一张,小于就继续取牌,在函数中首先随机产生下一张牌,接着用条件语句判定原有点数与新牌的点数之和是否大于21点,然后决定是否取牌;
(4)题目要求超级玩家在输入密码后可以查看下一张牌,只需设计一成员函数,判定玩家是否继续要牌之前加入对玩家是否输入H键的判定,如果有输入则调用为处理玩家输入密码而单独编写的成员函数,在该函数中,首先判定玩家的密码输入是否正确,不正确则返回0,正确则返回1。
(5)题目要求玩家可以根据手上的牌决定是否下注,只需设计一成员函数,检查玩家的赌注累计不超过他所拥有的总资本。
(6)评定难易级别:B级 1.1.4 课程设计的原代码注解:
//wait.h begin #include
#include
//=========== void pause()//displays a message and waits for the user to hit a key {
cout<<“Press Any Key To Continue”< getch();} //=========== int GetInt(int L=0,int H=100){ int ent; cout<<“Please Enter A Number Between ”< cin>>ent; while((ent { cout<<“Error”< cout<<“Value must be between ”< cin>>ent; } return(ent);} //============ void sign()//Displays ISAAC SHAFFER { cout<<“This Program Was Written By Isaac Shaffer”< int ran; srand((unsigned)time(NULL)); ran=rand()%(hi-(lo-1))+lo; return(ran);} //utility.h end //ISAAC SHAFFER //3-2-2000 //BLACKJACK GAME WITH FUNCTIONS //THIS PROGRAM IS MENT TO BE A SIMPLE BLACK JACK GAME //since i can't use gotoxy i used the slash t to space my program //notes //cpu is used to refer to the coumputer //librays #include //allows replay of game void hit(int &total); //take another card void deal(int &player,int &cpu,int &playerturns,int &cputurns);//deals hand void BET(int &bet,int &money);//takes bet void print(int wins,int lose,int draw,int money);//prints final score void rules();//shows rules void results(int player,int cpu,int bet,int &money,int &draw,int &win,int &lose);//finds winner int main(){ int player=0,cpu=0,win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=0,bet;char ans;system(“cls”);//执行系统命令 cls rules();cout<<“tttWOULD YOU LIKE TO PLAY :”;cin>>ans;if((ans == 'y')||(ans=='Y'))//checks to see they want to play { cout<<“tttI WILL LET YOU START WITH $100”< money=100; cout<<“ttt”; pause();} else { return(0);} do{ system(“cls”); if(money<0)//sees if your broke { cout<<“Your broke”< return(0); } BET(bet,money);//calls bet fuction deal(player,cpu,playerturns,cputurns);//Deals teh cards do{ cout<<“tttWould You Like To Hit or Stay :”;//ask user if the want a hit cin>>ans; if((ans=='h')||(ans=='H')) { playerturns++;//adds one to players total cards if(playerturns>5)//sees if player can take a card { cout<<“tttYou Can't Have more than 5 cards”; } } if((playerturns<6)&&(ans=='h'))//sees if the coumputer can take a card { cout< } }while((ans=='h')||(ans=='H'));//Takes value for hit or stay for(;(cpu<16)&&(cputurns<6);cputurns++) //Tells the cpu wither to take a card or not { cout< cout<<“tttThe Dealer Takes A Card”< hit(cpu);//calls hit function } } //-------------------------void rules()//This Function Displays the rules for Black Jack { cout<<“tt WELCOME TO ISAAC SHAFFER'S BLACK JACK GAME”< cout<<“ttt HERE ARE SOME SIMPLE RULES”< if(bet<0) { bet=bet*-1; } money=money-bet;} //--------------------------void deal(int &player,int &cpu,int &playerturns,int &cputurns)//This Function Deals The hands { int playercard1,playercard2,cpucard1,cpucard2;playerturns=2;cputurns=2;playercard1=random(13,1);cout<<“ntttDEALING HAND”< wait(350);cpucard2=random(13,1);if(playercard1>=10){ playercard1=10;} if(playercard2>=10){ playercard2=10;} if(cpucard1>=10){ cpucard1=10;} if(cpucard2>=10)cout< //--------------------------void hit(int &total)//This fuction is to deal a card and add it to the total { int card;card=random(13,1);if(card>=10){ card=10;} total=total+card;cout<<“tttThe card is a :”< cout<<“tttTotal is :”< draw++; } if(player>21){ cout<<“tttYou Bust”< lose++;} else { if(cpu { cout<<“ntttYOU WIN”; money=money+(bet*2); win++; } } if(cpu>21){ cout<<“tttDealer Bust”< if(player<21) { cout<<“ntttYOU WIN”; win++; money=money+(bet*2); } } else { if(cpu>player) { cout<<“tttYOU LOSE”< lose++; } } } //---void replay(char &ans){ cout<<“ntttWould You Like To Play This Game Again :”;cin>>ans;} //---void print(int wins,int lose,int draw,int money){ cout<<“ttttWINS :”< 1.1.5 课程设计的实现要求: 1.该程序可运行于DOS环境中; 2. 在C++中创建一个工程并且将程序加入工程中; 3.将该程序输入计算机并且应该能够执行 4.设计编写所要求完成的补充部分 5.对程序进行补充与完整,并进行调试 课程设计总结 经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C++中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。 在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。 通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。 虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。但是我感觉自己的创新还不够典型,总之还不是很满意。另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础! 总而言之,这次C++程序设计实践让我收获很大。 计算机科学与技术13-2班 2010年7月4日 C++课程设计报告 设计题目: 学 院: 专业班级: 学生姓名: 学生学号: 指导教师: 计算机技术与科学 3班 樊冠男 40912140 马军亮 提交时间: 2011/1/12 成绩: 目录 C++课程设计报告 第一章 引言 C++课程设计报告 第二章 概要设计 C++课程设计报告 第三章 软件实现 C++课程设计报告 第四章 结果与讨论 课程设计心得体会 学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,要完成能够实现人员的信息录入、查询、修改、删除、统计、保存、显示等操作。系统具体实现的功能如下: 1.添加新的联系人 2.删除所有联系人 3.删除某个联系人 4.查询某个联系人 5.查询所有联系人 6.将电话本导出到文件 7.从文件导入电话本 8.查询并编辑某个联系人 9.全班同学的平均分 大概的算法分析 学生成绩管理软件的数据结构 学生成绩一般都是以每个成员为单位进行管理的,一个学生学号用一个结点来表示。考虑到添加、查询和删除的方便,这些以学号为单位的结点用链表方式组成一个主目录。每个结点有四个域: (1)学生代号; (2)课程情况; (3)成绩信息管理情况; 各函数的功能和实现(学生成绩管理的相关功能由对应的函数来实现)(1)添加新的联系人 用代码实现输入及输出添加新的联系人的学号,姓名,性别,生日、语文成绩,数学成绩;完成添加工作。 (2)删除某个联系人 首先输入要删除的姓名,然后要在系统中查看是否有此记录,再用分支结构实现删除链表中此员工结点并修改学校员工链表及未找到这条记录;因为可能系统中不存在此记录。 (3)删除所有联系人 此功能要逐条删除联系人,则我们采用分支、循环结构实现首先遍历是否有给记录,输出读取记录或没有该记录;再到文件是否读完,若没读完则要循环继续读取,否则已删除了所有记录。 (4)查询某个联系人 因此功能会出现还没有任何记录、未找到这条记、输出该联系人信息三种情况,我们则选用简单的三分支结构;首先要请输入要查询联系人的姓名,输出有记录或还没有任何记录,有记录则遍历所有人,最后是未找到这条记录,输出该联系人信息。 (7)从电话本导入文件的流程图 首先查看是否有记录,输出没有任何记录或打开“Manager.txt”,历遍链表,将人员结点信息写入文件Manager.txt、关闭文件,最后成功保存到Manager.txt。 其余的函数功能实现相似则不重复。 心得体会 刚放假不久,我们组的积极分子们就张罗着要开始编写程序了,编写这个程序我们经历了讨论选题,编写代码,调试,写设计报告等。在这期间我们查阅了很多相关的资料,曾盯着课本发呆过,我们成员之间也曾进行过激烈的口舌论战。经过这个暑假来的实践学习,使我们对C++语言有了更进一步的认识和了解,要想学好它,则重在实践,要通过不断的上机操作及实例运用才能更好地深入体会它,当然通过实践,我们也发现我们的好多不足之处。就比如我们对C++语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,一些经常出现的错误也不能很好地处理。我们编写这个程序使用的是比较简单的函数及结构,由于我们的水平有限,还不能很好的使用一些效率高的方式来编写,所以也没有突出的创新点。在做题的时候我们都是分工合作。分工完成结构体、函数设计、算法分析等,这些过程中总是有很多错误出现,有好多的小问题都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的操作,类的使用等等这些使用我们都琢磨了很久,在解决错误时我们有时几乎焦头烂额了。但是我们与队友之间都会不断的相互鼓励、支持,彼此都努力维护着将作业写完。虽然这设计有点枯燥无味,但是当最后我们大功告成时,回味起来还是美滋滋的。总的来说我们真的是在设计的过程中受益匪浅。 姓名间学生姓名 201 4填写时学科数学 本 年级教材版阶段观察期□:第()周维护期□本人课时统计第(.)课时 共()课时课题名称 扑克牌游戏课时计划第()课时共()课时上课时间教学目标同步教学知识内容1.通过探究、尝试,掌握算24点的基本方法,在加、减、乘、除口算练习中,进一步提高口算能力。2.通过探究、讨论知道不同的牌可以算出24(偶尔不能算出24),相同的牌有不同的算24点的方法,提高解决问题的策略和能力。个性化学习问题解决 3、通过活动培养合作精神和创新意识,激发学生学习数学的兴趣。教学重点了解计算24点的方法。教学难点用四张牌算24点总结出算24点的基本方法教学方法 游戏法、练习法,谈论法学习方法 自主探究、尝试法、小组讨论、教学过程教师活动 〖教材简析〗 24来。这不仅可以加强加、减、乘、除法口算练习,而且可以激发学生主动探索解决问题的意识和策略,激发学生的学习兴趣 〖学情分析〗 24点算法的范围是整数的加、减、乘、除。通过分组比赛的形式,在游戏中探索24点算法,充分调动学生学习的积极性,激发学生学习数学的兴趣,使他们更喜欢数学。 一、游戏导入,揭示课题(纸牌游戏、排序、比大小、接龙、钓鱼„),今天我们是来上数学课的,李老师怎么可以跟大家来玩扑 克呢?猜一猜,它跟我们数学有什么联系?这节课我们就一起来探讨探讨一下扑克在数学中有哪些奥秘呢?¡¢出示例题,自主探究在A~9九张扑克牌中,把A当作“1”,拿出其中的2张牌、3张牌或四张牌,用+-×÷进行计算,每张牌只可用一次,算出得数是24 例1.随堂练习1 例2.随堂练习2¡¢小组学习,合作交流 例3 随堂练习3 例4.随堂练习4 例5 随堂练习5第二篇:c++课程设计总结
第三篇:C++课程设计实验报告(范文)
第四篇:c++课程设计心得体会
第五篇:扑克牌游戏教案