第一篇:C++課程設(shè)計(jì):一個(gè)21點(diǎn)的撲克牌游戲
第1題 一個(gè)21點(diǎn)的撲克牌
1.1.1 課程設(shè)計(jì)的程序功能簡(jiǎn)介:
一個(gè)21點(diǎn)牌的撲克游戲,玩家一共可以要5張牌,但如果牌的點(diǎn)數(shù)超過(guò)21,則暴了,自動(dòng)出局,在不超過(guò)21點(diǎn)的情況下,玩家與莊家比牌的大小,大者為贏。
1.1.2 課程設(shè)計(jì)的任務(wù)要求:
(1)將所有的函數(shù)與相應(yīng)的數(shù)據(jù)封裝到類中,并改寫(xiě)主程序,使程序簡(jiǎn)化;
(2)程序中一共有十三張撲克牌可以隨機(jī)抽取,大于10的點(diǎn)數(shù)為10,現(xiàn)要求大于10的點(diǎn)數(shù)全部為半點(diǎn);
(3)要求莊家永遠(yuǎn)不會(huì)暴莊,即莊家可以查看下一張牌,若大于21點(diǎn),則拒絕,當(dāng)然,在游戲規(guī)則上不能泄露這點(diǎn)秘密;
(4)高級(jí)玩家可以查看下一張牌,即按H鍵,然后按要求輸入密碼,密碼正確可以看牌,并決定是否要牌;
(5)每次要牌后可以設(shè)定賠率,即如果開(kāi)始下的是10元錢的注,如果牌好,你可以要求再下注,當(dāng)然不能超過(guò)你所有的總錢數(shù);
(6)將界面的提示說(shuō)明改成中文界面,界面的解釋詳細(xì)友好,可以吸引更多的玩家。
1.1.3 課程設(shè)計(jì)的說(shuō)明:
(1)題目要求把原程序封裝在類中,需要編寫(xiě)一個(gè)類來(lái)封狀所有相關(guān)函數(shù)和變量.因此編寫(xiě)了名為XXX類,同時(shí)對(duì)mian主函數(shù)進(jìn)行了改寫(xiě),以完成題目的要求;
(2)題目要求把抽到大于10點(diǎn)的牌的點(diǎn)數(shù)設(shè)為一半,只需設(shè)計(jì)隨機(jī)取下一張牌的成員函數(shù)使用if語(yǔ)句判定牌的點(diǎn)數(shù)是否大于10,大于10的牌對(duì)其重新賦值為0.5即可;
(3)題目要求莊家永遠(yuǎn)不會(huì)暴莊,莊家取下一張牌之前先判定取牌后總點(diǎn)數(shù)是否會(huì)大于21點(diǎn),大于的話就拒絕取下一張,小于就繼續(xù)取牌,在函數(shù)中首先隨機(jī)產(chǎn)生下一張牌,接著用條件語(yǔ)句判定原有點(diǎn)數(shù)與新牌的點(diǎn)數(shù)之和是否大于21點(diǎn),然后決定是否取牌;
(4)題目要求超級(jí)玩家在輸入密碼后可以查看下一張牌,只需設(shè)計(jì)一成員函數(shù),判定玩家是否繼續(xù)要牌之前加入對(duì)玩家是否輸入H鍵的判定,如果有輸入則調(diào)用為處理玩家輸入密碼而單獨(dú)編寫(xiě)的成員函數(shù),在該函數(shù)中,首先判定玩家的密碼輸入是否正確,不正確則返回0,正確則返回1。
(5)題目要求玩家可以根據(jù)手上的牌決定是否下注,只需設(shè)計(jì)一成員函數(shù),檢查玩家的賭注累計(jì)不超過(guò)他所擁有的總資本。
(6)評(píng)定難易級(jí)別:B級(jí) 1.1.4 課程設(shè)計(jì)的原代碼注解:
//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”);//執(zhí)行系統(tǒng)命令 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 課程設(shè)計(jì)的實(shí)現(xiàn)要求: 1.該程序可運(yùn)行于DOS環(huán)境中; 2. 在C++中創(chuàng)建一個(gè)工程并且將程序加入工程中; 3.將該程序輸入計(jì)算機(jī)并且應(yīng)該能夠執(zhí)行 4.設(shè)計(jì)編寫(xiě)所要求完成的補(bǔ)充部分 5.對(duì)程序進(jìn)行補(bǔ)充與完整,并進(jìn)行調(diào)試 課程設(shè)計(jì)總結(jié) 經(jīng)過(guò)一個(gè)學(xué)期對(duì)《C++程序設(shè)計(jì)》的學(xué)習(xí),我學(xué)習(xí)到了基本的理論知識(shí),了解到了C++語(yǔ)言程序設(shè)計(jì)的思想,這些知識(shí)都為我的課程實(shí)踐和進(jìn)一步的學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。在為期近兩周的C++課程設(shè)計(jì)中,我體會(huì)頗多,學(xué)到了很多東西。我加強(qiáng)了對(duì)C++程序設(shè)計(jì)這門課程的認(rèn)識(shí),并且復(fù)習(xí)了自己以前學(xué)習(xí)到的知識(shí)。這些都使得我對(duì)計(jì)算機(jī)語(yǔ)言的學(xué)習(xí)有了更深入的認(rèn)識(shí)!總之,通過(guò)這次課程設(shè)計(jì),我收獲頗豐,相信會(huì)為自己以后的學(xué)習(xí)和工作帶來(lái)很大的好處。像職工信息表這樣的程序設(shè)計(jì),經(jīng)歷了平時(shí)在課堂和考試中不會(huì)出現(xiàn)的問(wèn)題和考驗(yàn)。而這些問(wèn)題,這并不是我們平時(shí)只靠課本,就可以輕易解決的。所以,鍛煉了我們挑戰(zhàn)難題,學(xué)會(huì)用已掌握的知識(shí)去解決具體問(wèn)題的能力,進(jìn)一步培養(yǎng)了獨(dú)立思考問(wèn)題和解決問(wèn)題的能力。特別是學(xué)會(huì)了在Visual C++中如何調(diào)試程序的方法。當(dāng)然,老師的指導(dǎo)和同學(xué)的幫助也是不可忽視的,他們給了我許多提示和幫助,教會(huì)了我編譯復(fù)雜程序的方法。 在老師和同學(xué)的幫助下,通過(guò)自己的努力,終于完成了這次職工信息表的簡(jiǎn)單課程設(shè)計(jì)。我經(jīng)過(guò)這段時(shí)間的編程,對(duì)其中的艱辛,我是深有體會(huì)。從剛開(kāi)始的選擇程序、理解程序到后來(lái)的調(diào)試程序以及改進(jìn)程序這個(gè)過(guò)程中,我遇到了各種各樣的困難和挫折。但是我堅(jiān)定信念,對(duì)自己充滿了信心,想盡一切辦法克服重重困難。 通過(guò)課程設(shè)計(jì)的訓(xùn)練,我進(jìn)一步學(xué)習(xí)和掌握了對(duì)程序的設(shè)計(jì)和編寫(xiě),從中體會(huì)到了面向?qū)ο蟪绦蛟O(shè)計(jì)的方便和巧妙。懂得了在進(jìn)行編寫(xiě)一個(gè)程序之前,要有明確的目標(biāo)和整體的設(shè)計(jì)思想。另外某些具體的細(xì)節(jié)內(nèi)容也是相當(dāng)?shù)闹匾_@些寶貴的編程思想和從中摸索到的經(jīng)驗(yàn)都是在編程的過(guò)程中獲得的寶貴財(cái)富。這些經(jīng)驗(yàn)對(duì)我以后的編程會(huì)有很大的幫助的,我要好好利用。 雖然這次課程設(shè)計(jì)是在參考程序的基礎(chǔ)之上進(jìn)行的,但是我覺(jué)得對(duì)自己是一個(gè)挑戰(zhàn)和鍛煉。我很欣慰自己能在程序中加入自己的想法和有關(guān)程序內(nèi)容,也就是對(duì)它的程序改進(jìn)了一番改進(jìn),并有創(chuàng)新。但是我感覺(jué)自己的創(chuàng)新還不夠典型,總之還不是很滿意。另外由于時(shí)間的緊迫和對(duì)知識(shí)的了解不夠廣泛,造成了系統(tǒng)中還存在許多不足,功能上還不夠完善。以后我會(huì)繼續(xù)努力,大膽創(chuàng)新,爭(zhēng)取能編寫(xiě)出透射著自己思想的程序。這次課程設(shè)計(jì)讓我充分認(rèn)識(shí)到了自己的不足,認(rèn)識(shí)到了動(dòng)手能力的重要性。我會(huì)在以后的學(xué)習(xí)中更加努力鍛煉自己,提高自己,讓自己寫(xiě)出更好更完善的程序,為以后的編程打好基礎(chǔ)! 總而言之,這次C++程序設(shè)計(jì)實(shí)踐讓我收獲很大。 計(jì)算機(jī)科學(xué)與技術(shù)13-2班 2010年7月4日 C++課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目: 學(xué) 院: 專業(yè)班級(jí): 學(xué)生姓名: 學(xué)生學(xué)號(hào): 指導(dǎo)教師: 計(jì)算機(jī)技術(shù)與科學(xué) 3班 樊冠男 40912140 馬軍亮 提交時(shí)間: 2011/1/12 成績(jī): 目錄 C++課程設(shè)計(jì)報(bào)告 第一章 引言 C++課程設(shè)計(jì)報(bào)告 第二章 概要設(shè)計(jì) C++課程設(shè)計(jì)報(bào)告 第三章 軟件實(shí)現(xiàn) C++課程設(shè)計(jì)報(bào)告 第四章 結(jié)果與討論 課程設(shè)計(jì)心得體會(huì) 學(xué)生成績(jī)管理是高等學(xué)校教務(wù)管理的重要組成部分,其內(nèi)容較多,要完成能夠?qū)崿F(xiàn)人員的信息錄入、查詢、修改、刪除、統(tǒng)計(jì)、保存、顯示等操作。系統(tǒng)具體實(shí)現(xiàn)的功能如下: 1.添加新的聯(lián)系人 2.刪除所有聯(lián)系人 3.刪除某個(gè)聯(lián)系人 4.查詢某個(gè)聯(lián)系人 5.查詢所有聯(lián)系人 6.將電話本導(dǎo)出到文件 7.從文件導(dǎo)入電話本 8.查詢并編輯某個(gè)聯(lián)系人 9.全班同學(xué)的平均分 大概的算法分析 學(xué)生成績(jī)管理軟件的數(shù)據(jù)結(jié)構(gòu) 學(xué)生成績(jī)一般都是以每個(gè)成員為單位進(jìn)行管理的,一個(gè)學(xué)生學(xué)號(hào)用一個(gè)結(jié)點(diǎn)來(lái)表示??紤]到添加、查詢和刪除的方便,這些以學(xué)號(hào)為單位的結(jié)點(diǎn)用鏈表方式組成一個(gè)主目錄。每個(gè)結(jié)點(diǎn)有四個(gè)域: (1)學(xué)生代號(hào); (2)課程情況; (3)成績(jī)信息管理情況; 各函數(shù)的功能和實(shí)現(xiàn)(學(xué)生成績(jī)管理的相關(guān)功能由對(duì)應(yīng)的函數(shù)來(lái)實(shí)現(xiàn))(1)添加新的聯(lián)系人 用代碼實(shí)現(xiàn)輸入及輸出添加新的聯(lián)系人的學(xué)號(hào),姓名,性別,生日、語(yǔ)文成績(jī),數(shù)學(xué)成績(jī);完成添加工作。 (2)刪除某個(gè)聯(lián)系人 首先輸入要?jiǎng)h除的姓名,然后要在系統(tǒng)中查看是否有此記錄,再用分支結(jié)構(gòu)實(shí)現(xiàn)刪除鏈表中此員工結(jié)點(diǎn)并修改學(xué)校員工鏈表及未找到這條記錄;因?yàn)榭赡芟到y(tǒng)中不存在此記錄。 (3)刪除所有聯(lián)系人 此功能要逐條刪除聯(lián)系人,則我們采用分支、循環(huán)結(jié)構(gòu)實(shí)現(xiàn)首先遍歷是否有給記錄,輸出讀取記錄或沒(méi)有該記錄;再到文件是否讀完,若沒(méi)讀完則要循環(huán)繼續(xù)讀取,否則已刪除了所有記錄。 (4)查詢某個(gè)聯(lián)系人 因此功能會(huì)出現(xiàn)還沒(méi)有任何記錄、未找到這條記、輸出該聯(lián)系人信息三種情況,我們則選用簡(jiǎn)單的三分支結(jié)構(gòu);首先要請(qǐng)輸入要查詢聯(lián)系人的姓名,輸出有記錄或還沒(méi)有任何記錄,有記錄則遍歷所有人,最后是未找到這條記錄,輸出該聯(lián)系人信息。 (7)從電話本導(dǎo)入文件的流程圖 首先查看是否有記錄,輸出沒(méi)有任何記錄或打開(kāi)“Manager.txt”,歷遍鏈表,將人員結(jié)點(diǎn)信息寫(xiě)入文件Manager.txt、關(guān)閉文件,最后成功保存到Manager.txt。 其余的函數(shù)功能實(shí)現(xiàn)相似則不重復(fù)。 心得體會(huì) 剛放假不久,我們組的積極分子們就張羅著要開(kāi)始編寫(xiě)程序了,編寫(xiě)這個(gè)程序我們經(jīng)歷了討論選題,編寫(xiě)代碼,調(diào)試,寫(xiě)設(shè)計(jì)報(bào)告等。在這期間我們查閱了很多相關(guān)的資料,曾盯著課本發(fā)呆過(guò),我們成員之間也曾進(jìn)行過(guò)激烈的口舌論戰(zhàn)。經(jīng)過(guò)這個(gè)暑假來(lái)的實(shí)踐學(xué)習(xí),使我們對(duì)C++語(yǔ)言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它,則重在實(shí)踐,要通過(guò)不斷的上機(jī)操作及實(shí)例運(yùn)用才能更好地深入體會(huì)它,當(dāng)然通過(guò)實(shí)踐,我們也發(fā)現(xiàn)我們的好多不足之處。就比如我們對(duì)C++語(yǔ)言的一些標(biāo)準(zhǔn)庫(kù)函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,一些經(jīng)常出現(xiàn)的錯(cuò)誤也不能很好地處理。我們編寫(xiě)這個(gè)程序使用的是比較簡(jiǎn)單的函數(shù)及結(jié)構(gòu),由于我們的水平有限,還不能很好的使用一些效率高的方式來(lái)編寫(xiě),所以也沒(méi)有突出的創(chuàng)新點(diǎn)。在做題的時(shí)候我們都是分工合作。分工完成結(jié)構(gòu)體、函數(shù)設(shè)計(jì)、算法分析等,這些過(guò)程中總是有很多錯(cuò)誤出現(xiàn),有好多的小問(wèn)題都是我們粗心大意造成的,所以設(shè)計(jì)程序一定要仔細(xì),不容一點(diǎn)的馬虎。當(dāng)然也有大問(wèn)題,關(guān)于文件的操作,類的使用等等這些使用我們都琢磨了很久,在解決錯(cuò)誤時(shí)我們有時(shí)幾乎焦頭爛額了。但是我們與隊(duì)友之間都會(huì)不斷的相互鼓勵(lì)、支持,彼此都努力維護(hù)著將作業(yè)寫(xiě)完。雖然這設(shè)計(jì)有點(diǎn)枯燥無(wú)味,但是當(dāng)最后我們大功告成時(shí),回味起來(lái)還是美滋滋的??偟膩?lái)說(shuō)我們真的是在設(shè)計(jì)的過(guò)程中受益匪淺。 姓名間學(xué)生姓名 201 4填寫(xiě)時(shí)學(xué)科數(shù)學(xué) 本 年級(jí)教材版階段觀察期□:第()周維護(hù)期□本人課時(shí)統(tǒng)計(jì)第(.)課時(shí) 共()課時(shí)課題名稱 撲克牌游戲課時(shí)計(jì)劃第()課時(shí)共()課時(shí)上課時(shí)間教學(xué)目標(biāo)同步教學(xué)知識(shí)內(nèi)容1.通過(guò)探究、嘗試,掌握算24點(diǎn)的基本方法,在加、減、乘、除口算練習(xí)中,進(jìn)一步提高口算能力。2.通過(guò)探究、討論知道不同的牌可以算出24(偶爾不能算出24),相同的牌有不同的算24點(diǎn)的方法,提高解決問(wèn)題的策略和能力。個(gè)性化學(xué)習(xí)問(wèn)題解決 3、通過(guò)活動(dòng)培養(yǎng)合作精神和創(chuàng)新意識(shí),激發(fā)學(xué)生學(xué)習(xí)數(shù)學(xué)的興趣。教學(xué)重點(diǎn)了解計(jì)算24點(diǎn)的方法。教學(xué)難點(diǎn)用四張牌算24點(diǎn)總結(jié)出算24點(diǎn)的基本方法教學(xué)方法 游戲法、練習(xí)法,談?wù)摲▽W(xué)習(xí)方法 自主探究、嘗試法、小組討論、教學(xué)過(guò)程教師活動(dòng) 〖教材簡(jiǎn)析〗 24來(lái)。這不僅可以加強(qiáng)加、減、乘、除法口算練習(xí),而且可以激發(fā)學(xué)生主動(dòng)探索解決問(wèn)題的意識(shí)和策略,激發(fā)學(xué)生的學(xué)習(xí)興趣 〖學(xué)情分析〗 24點(diǎn)算法的范圍是整數(shù)的加、減、乘、除。通過(guò)分組比賽的形式,在游戲中探索24點(diǎn)算法,充分調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,激發(fā)學(xué)生學(xué)習(xí)數(shù)學(xué)的興趣,使他們更喜歡數(shù)學(xué)。 一、游戲?qū)耄沂菊n題(紙牌游戲、排序、比大小、接龍、釣魚(yú)?),今天我們是來(lái)上數(shù)學(xué)課的,李老師怎么可以跟大家來(lái)玩撲 克呢?猜一猜,它跟我們數(shù)學(xué)有什么聯(lián)系?這節(jié)課我們就一起來(lái)探討探討一下?lián)淇嗽跀?shù)學(xué)中有哪些奧秘呢??¢出示例題,自主探究在A~9九張撲克牌中,把A當(dāng)作“1”,拿出其中的2張牌、3張牌或四張牌,用+-×÷進(jìn)行計(jì)算,每張牌只可用一次,算出得數(shù)是24 例1.隨堂練習(xí)1 例2.隨堂練習(xí)2?¢小組學(xué)習(xí),合作交流 例3 隨堂練習(xí)3 例4.隨堂練習(xí)4 例5 隨堂練習(xí)5第二篇:c++課程設(shè)計(jì)總結(jié)
第三篇:C++課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告(范文)
第四篇:c++課程設(shè)計(jì)心得體會(huì)
第五篇:撲克牌游戲教案