freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于cocos2d-x的斗地主游戲開發(fā)畢業(yè)論文(參考版)

2025-06-30 17:14本頁面
  

【正文】 mpPlayerNowCardNum++。 pSpritesetPosition(NowPoint)。 TempIt++。 = + 。 pNowSpritesetPosition(NowPoint)。 //更改精靈屬性 pNowSpritesetDisplayFrame(frame)。 //當(dāng)前牌所在位置 while(TempIt!=()) { //替換(更新)牌圖片 CardSprite* pNowSprite = (CardSprite*)getChildByTag(*TempIt)。 if(mpPlayerNowCardNum%2==0) { mpPlayer = 。 //插入數(shù)據(jù)并排序 vectorint::iterator NowIt = mpPlayer()。 //創(chuàng)建發(fā)牌數(shù)據(jù)副本,用于數(shù)據(jù)對(duì)比修改 mpPlayer(mpPlayerOwnCardData[mpPlayerNowCardNum])。衷心祝愿你們?cè)诮窈蟮纳詈凸ぷ髦?,工作順利、健康幸??鞓?!參考文獻(xiàn)[1][M].北京:機(jī)械工業(yè)出版社,2013.[2][M].北京:電子工業(yè)出版社,2013.[3][M].北京:人民郵電出版社,2013.[4]Stanley ,JoseeLaijoie,C++Primer,FourthEdition[M].AddisonWesly Professional,Fedruary 14,2005.[5]孫鑫,++深入詳解[M].北京:電子工業(yè)出版社,2007.[6](第二版)[M].武漢:.[7]:跨iOS、Android和沃Phone平臺(tái)[M].北京:人民郵電出版社,2012.[8]—Cocos2dx引擎游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.[9][M].北京:人民郵電出版社,2008.[10]唐策善,—C語言描述[M].北京:高等教育出版社,1995.[11]++ STL基礎(chǔ)及應(yīng)用[M].北京:清華大學(xué)出版社,2010.[12] C++[M].北京:高等教育出版社,2002. [13]++:清華大學(xué)出版社,2005.[14]Jeffrey Richter. Windows Via C/C++[M].Fifth Edition,2008.[15]Stanley B. ++ Gems from The C++ Report[M]. Programming Pearls ,December 1997.附 錄動(dòng)態(tài)繪(發(fā))牌算法的實(shí)現(xiàn):void PlaygameScene::ActionDrawCard(float dt){ CCSize size = CCDirector::sharedDirector()getWinSize()。我為這個(gè)作品花費(fèi)了大量的時(shí)間與精力,有很多的淚水與心酸,我希望這個(gè)作品美好的。認(rèn)真詢問我的開發(fā)進(jìn)度以及開發(fā)過程遇到的苦難,對(duì)我提出的問題,提出了很多寶貴的意見。謝 辭經(jīng)過一個(gè)學(xué)期的努力,畢業(yè)設(shè)計(jì)終于完成,期間得到了很多的指點(diǎn)與幫助。此外,本軟件還可以實(shí)現(xiàn)玩家聊天互動(dòng)、表情、聲音等一些輔助功能。雖然本軟件實(shí)現(xiàn)了很多功能,也有自己的特色,但是還是存在諸多的問題。本游戲的特色功能主要有動(dòng)態(tài)發(fā)牌、智能托管及循環(huán)提示等。網(wǎng)絡(luò)版實(shí)現(xiàn)了用戶登錄注冊(cè)及驗(yàn)證、自動(dòng)發(fā)牌、玩家叫分、選牌出牌、重玩等基本模塊,這些功能都需要借助服務(wù)器與客戶端的通信(控制游戲邏輯)來輔助實(shí)現(xiàn)。圖 玩家單擊重選菜單項(xiàng)前 玩家單擊重選菜單項(xiàng)后 電腦智力的測試在玩家使用斗地主單機(jī)版游戲時(shí),電腦玩家會(huì)自動(dòng)叫分;其他玩家出牌后,電腦玩家會(huì)自動(dòng)跟牌;電腦玩家獲得主動(dòng)出牌權(quán)限后,會(huì)按照一定的優(yōu)先級(jí)選擇性地出牌。玩家可以通過多次單擊提示菜單項(xiàng)來獲取不同的提示牌,可循環(huán)提示,、。 本家開始叫分 下家輪換叫分 托管功能的測試當(dāng)玩家啟動(dòng)托管功能后,如果是跟牌會(huì)出大過上家牌的最小牌,;如果是主動(dòng)出牌會(huì)選擇性地出某種類型的牌。 登錄前與登錄后的界面 自動(dòng)發(fā)牌功能的測試在接受到服務(wù)器發(fā)送的發(fā)牌指令后,客戶端會(huì)自動(dòng)發(fā)牌至游戲界面,發(fā)牌過程具有動(dòng)態(tài)性(動(dòng)態(tài)添加牌)、抖動(dòng)性(牌的起始位置會(huì)隨牌的數(shù)量發(fā)生改變)、隨機(jī)插入行(不按大小發(fā)牌,發(fā)牌后插入到相應(yīng)位置)。登錄前若沒有賬號(hào)需先注冊(cè)。表61 測試環(huán)境及工具硬件要求配置良好的臺(tái)式機(jī)或筆記本一臺(tái)、Android手機(jī)一部()軟件要求安裝VS2010+測試平臺(tái)Win32(Windows XP和Windows 7)、Android 測試準(zhǔn)則軟件測試設(shè)定的一些標(biāo)準(zhǔn)及要求見表62。重玩設(shè)計(jì)起來比較簡單,在游戲結(jié)束后在游戲界面的中心位置添加準(zhǔn)備菜單項(xiàng),當(dāng)玩家單擊菜單項(xiàng)后先繪制準(zhǔn)備圖片提示重玩準(zhǔn)備中,然后讓準(zhǔn)備精靈執(zhí)行一個(gè)延時(shí)動(dòng)作跟回調(diào)動(dòng)作,在其回調(diào)函數(shù)ShowBack()中重選構(gòu)造一個(gè)PlaygameScene對(duì)象,然后讓導(dǎo)演類CCDirector重選運(yùn)行此場景,這樣玩家可重新此游戲。實(shí)現(xiàn)此算法首先構(gòu)造mapint,vectorint結(jié)構(gòu)用來保存牌值所對(duì)應(yīng)的所有索引值,因?yàn)榉祷刂敌枰氖蔷唧w的索引值,由于vectorint傳遞的牌數(shù)據(jù)是排好序的,所以將vectorint結(jié)構(gòu)轉(zhuǎn)換為mapint,vectorint結(jié)構(gòu)比較容易實(shí)現(xiàn);然后根據(jù)提供的牌類型及牌的張數(shù)組合出所有可能與提供牌的類型一樣的牌數(shù)據(jù),用vectorint線性保存返回其值即可?!靖鶕?jù)牌的類型和張數(shù)獲取同類型的牌】函數(shù)原型:vectorint getNeedCard(vectorint,int,int)?!精@取牌的關(guān)鍵值】函數(shù)原型:int getCardKeyValue(vectorint);算法設(shè)計(jì):構(gòu)造一個(gè)mapint,int結(jié)構(gòu)來統(tǒng)計(jì)牌的張數(shù),在張數(shù)最多的所有牌中找出牌值最大的便是此種牌類型的關(guān)鍵值。然后計(jì)算出需要判斷牌類型的張數(shù),知道張數(shù)后便可找出可能擁有這個(gè)張數(shù)的所有牌類型,然后挨個(gè)去判斷牌是否是那種類型即可。(3)主動(dòng)出牌主動(dòng)出牌時(shí)需要電腦作出綜合性的出牌策略,為了讓電腦變得更加強(qiáng)大,我們會(huì)讓電腦知道其他的玩家的牌,會(huì)對(duì)牌的類型和牌的完整性作出一些分析,出牌時(shí)會(huì)要么避開其他玩家牌的強(qiáng)勢類型牌或者出那些能破壞其他玩家牌完整性的牌。如果電腦玩家是地主,則電腦玩家會(huì)在不嚴(yán)重影響牌的完整性的情況下盡可能壓其他玩家的牌。如果玩家大牌數(shù)超過2張且有炸彈是叫3分,大牌數(shù)超3張或有炸彈時(shí)叫2分,大牌數(shù)超過2張但沒有炸彈時(shí)叫1分,其他情況則默認(rèn)不叫分。 return 0。 if(()!=0||Cards::getBigCardCount(NowCardData)=3) return 2。amp。 hombCard = Cards::getNeedCard(NowCardData,4,())。(1)叫分過程單機(jī)版默認(rèn)主動(dòng)叫分玩家是人類玩家,所以電腦玩家叫分需在要人類叫分后判斷是否有機(jī)會(huì)叫分,電腦玩家叫分的依據(jù)是根據(jù)Player類的getAIPlayerMaxScore()方法來獲取最大叫分?!倦娔X玩家】電腦玩家會(huì)在這個(gè)玩家調(diào)用與本家不同的出牌函數(shù)(沒有菜單可選,自動(dòng)判別),左邊電腦玩家跟右邊電腦玩家出牌函數(shù)類似,出牌前會(huì)銷毀上輪牌資源,出牌后會(huì)顯示玩家自己出的牌精靈并自動(dòng)終止本家打計(jì)時(shí)器,啟動(dòng)下家打牌計(jì)時(shí)器?!颈炯摇勘炯以谶@個(gè)環(huán)節(jié)同樣會(huì)創(chuàng)建出牌系列菜單項(xiàng),但是不需要通過通過服務(wù)器來獲取其他玩家的出牌數(shù)據(jù),直接從客戶端上提取即可。(2)單機(jī)版出牌選牌環(huán)節(jié)單機(jī)版的出牌選牌是在一個(gè)客戶端上進(jìn)行的,客戶端上保存著3位玩家的所有牌數(shù)據(jù)很玩家信息,所以在Player類的設(shè)計(jì)上與網(wǎng)絡(luò)版有些不同?!咎幚砥渌婕页雠啤糠謨煞N情況處理:左邊玩家和右邊玩家。先調(diào)用Cards::getNeedCard()函數(shù)獲取所有提示牌數(shù)據(jù),然后調(diào)用Cards::getCardByHitCard()函數(shù)獲取提示牌中打過上家的最小牌,然后將提示的牌設(shè)置為彈起狀態(tài)。重選操作:這個(gè)功能理解起來很簡單,將彈起的牌精靈設(shè)置為未彈起狀態(tài),取消所彈起的牌,重置本家出牌數(shù)據(jù)。托管操作:如果是跟牌則調(diào)用Cards::getCardByHitCard()函數(shù)獲取所有提示牌中大過上家的最小牌,出牌即可;如果是主動(dòng)出牌則需要調(diào)用Cards:getNeedOutCard()函數(shù)得到電腦玩家應(yīng)出的牌,出牌即可。接著設(shè)置出牌計(jì)時(shí)器,在出牌前還需要判斷其他玩家出牌的狀態(tài),如果其他玩家都Pass則清理出牌產(chǎn)生出牌產(chǎn)生的圖片,判斷本家是否有牌可以大過上家,如果有執(zhí)行Pass(不出)操作,等待玩家選牌出牌?!局鲃?dòng)出牌】先加載出牌系列菜單項(xiàng):托管、不出、重選、提示、出牌,設(shè)置每個(gè)菜單項(xiàng)的標(biāo)識(shí)(Tag值),此時(shí)可能會(huì)被禁用的菜單項(xiàng)是重選、提示和出牌菜單項(xiàng)。 //更新右邊玩家角色圖片 出牌選牌模塊出牌選牌模塊時(shí)非常復(fù)雜的一個(gè)模塊,網(wǎng)絡(luò)版與單機(jī)版都需要單獨(dú)設(shè)計(jì)。 //更新左邊玩家角色圖片void UpdataMidPlayerRoleImg(float dt)。 //繪制右邊玩家叫分圖片void DrawLeftJiaofenImg(float dt)。 //右邊玩家叫分倒計(jì)時(shí)void CleanJiaofenSprite(float dt)。 //設(shè)置右邊玩家叫分定時(shí)器void lShoutScoreCountDown(float dt)。 PlaygameScene類的成員函數(shù):void setLeftShoutScoreTimer(float dt)。如果是左邊玩家發(fā)送的叫分信息,則在本家所在的客戶端左邊玩家位置顯示左邊玩家的叫分圖片;如果是右邊玩家發(fā)送的叫分信息,則先在本家所在的客戶端右邊位置顯示右邊玩家的叫分圖片,然后設(shè)置左邊玩家的叫分計(jì)時(shí)器,等待左邊玩家叫分。至此,主動(dòng)叫分結(jié)束。添加一組叫分菜單項(xiàng):1分、2分、3分和不叫,設(shè)計(jì)每個(gè)菜單項(xiàng)的標(biāo)識(shí)(Tag值),然后根據(jù)上家所叫分?jǐn)?shù)對(duì)每個(gè)菜單項(xiàng)的禁用于可用做出一個(gè)判斷并更改菜單項(xiàng)的屬性,更新玩家的當(dāng)前角色為地主,接著創(chuàng)建叫分計(jì)時(shí)器,用于給玩家叫分計(jì)時(shí)。叫分模塊又為:玩家主動(dòng)叫分和處理其他玩家叫分。//判斷當(dāng)前牌是否被選中 bool IsTouchSprite( CCTouch *pTouch,CCPoint origin,int nIndex,int EndIndex}。 static CardSprite* create(const char *pszFileName, const CCRectamp。 //牌的權(quán)值public: CardSprite()。 //牌是否彈起 bool IsSelected。}接下來需要設(shè)計(jì)在ActionDrawCard設(shè)計(jì)繪制牌的算法,其核心算法描述如下:首先創(chuàng)建玩家當(dāng)前牌數(shù)據(jù)的副本,插入需要繪制的牌數(shù)據(jù)并排序(其比較函數(shù)為SortByPriority()),重新改邊繪制牌時(shí)的起始位置;然后對(duì)比當(dāng)前牌數(shù)據(jù)和其副本(上一次的牌數(shù)據(jù)),通過副本的索引找到想對(duì)應(yīng)的精靈,替換精靈的圖片為當(dāng)前牌索引值所對(duì)應(yīng)的圖片,更換精靈的Tag值為當(dāng)前牌的索引值,移動(dòng)牌的位置,如此循環(huán)直到結(jié)束;接著正常繪制多出的那一張牌,如果發(fā)牌張數(shù)達(dá)到17張,Kill對(duì)應(yīng)掉定時(shí)器,此模塊結(jié)束。439。amp。439。解決了服務(wù)器與客戶端的通信,還需要注意一個(gè)至關(guān)重要的問題:發(fā)送及接受到的數(shù)據(jù)分別代表什么含義呢?在這里,我們對(duì)傳輸數(shù)據(jù)的每個(gè)字節(jié)所代表的含義做一些特別的規(guī)定,見表57。CloseHandle(hThread)。natServer)。pthread_create(amp。recvThread2,NULL,ThreadProc2,(void*)amp。natServer)。pthread_create(amp。void* ThreadProc2(void* args)。strcmp((),pwdStr)==0){} 網(wǎng)絡(luò)通信模塊服務(wù)器:服務(wù)器是一個(gè)控制臺(tái)程序,只需要在后臺(tái)顯示數(shù)據(jù)的收發(fā)信息。if(!()amp。const char* pwdStr = pwdEditgetText()。CCEditBox* pwdEdit = (CCEditBox*)getChildByTag(MI_MA)。CCUserDefault::sharedUserDefault()setStringForKey(pwdStr, nickNameStr)。 //添加精靈圖片}注冊(cè)及驗(yàn)證功能則需要CCUserDefault來進(jìn)行數(shù)據(jù)的存取。 //添加賬號(hào)和密碼編輯框 AddMenuItemOrder1(this)。表53 CCUserDefault類的常用函數(shù)函數(shù)名返回類型描述getBoolForKey布爾型根據(jù)傳入的鍵值參數(shù)返回相應(yīng)的布爾值,第二個(gè)參數(shù)為可選的默認(rèn)值,一旦該鍵值的值不存在,將返回默認(rèn)值getIntergerForKey整型同上getFloatForKey浮點(diǎn)型同上getStringForKey字符串型同上setBoolForKey空第一個(gè)參數(shù)為鍵,第二參數(shù)為對(duì)應(yīng)的值,布爾型存檔setIntergerForKey空同上setFloatForKey空同上setStringForKey空同上flush空存儲(chǔ)為XML文檔使用此類來存儲(chǔ)及提取數(shù)據(jù)都是很容易實(shí)現(xiàn)的,存儲(chǔ)時(shí)調(diào)用setTypeForKey系列函數(shù)以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù),獲取時(shí)調(diào)用getTypeForKey系列函數(shù)傳遞鍵參數(shù)返回其值,最后調(diào)用flu
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1