用VC編程完成“幸運52”猜價格游戲
發表時間:2023-08-16 來源:明輝站整理相關軟件相關文章人氣:
[摘要]文/王楨 看過中央電視臺李詠主持的“幸運52”的觀眾一定不會忘記一個有趣的環節——“看商品猜價格”,整個過程緊張、扣人心弦,讓人有一種很強的參與感。想上電視臺?不太容易,編個程序自己玩玩,是個好主...
文/王楨
看過中央電視臺李詠主持的“幸運52”的觀眾一定不會忘記一個有趣的環節——“看商品猜價格”,整個過程緊張、扣人心弦,讓人有一種很強的參與感。想上電視臺?不太容易,編個程序自己玩玩,是個好主意。快快試一下吧!
游戲設計規則
按“開始游戲”后,商品展臺將出現一款產品,計時器開始計時,必須在一分鐘內猜出商品的價格。將所猜的價格輸入到編輯框中,按回車鍵或[確認輸入]鍵,計算機將對輸入值進行判斷,給出三種結果,即“高了”、“低了”及“完全正確”。根據提示做下一步判斷,如果判斷正確,則給出下一件商品,直到耗時結束。除了時間限制,限制每種商品競猜的次數不超過十五次。要想過關可不那么容易!
原理及功能實現
本程序可以分成幾個功能模塊,游戲啟動模塊、計時模塊、提交答案模塊、商品顯示模塊。下面具體介紹一個各模塊的功能。
成員變量:
int Imagecounter; //控制計時器
int random[9]; //實現記憶已選商品
int totalnum=0; //控制猜價次數
int tmprandom; //標識當前商品號
int recordersuccess; //標識猜對次數
IDI_time1~IDI_time13代表了每隔5秒的各種計時器狀態圖標ID號;
IDI_commondity1~IDI_commondity10代表以上十種商品的圖標ID號;
1、游戲啟動模塊
該模塊的啟動是對應于圖1中的[開始游戲]按鈕,主要是設置計時時鐘,初始化一些變量參數,并激活價格輸入編輯控件框,同時為玩家隨機調入第一件商品。
2、計時模塊
它利用發送的WM_TIMER消息,來處理關于游戲計時方面的事務,在該消息的響應函數OnTimer()中處理每隔5秒的圖標動態調入,這樣在對話框界面上會出現時鐘,直觀地提示玩家用時量,當出現超時,計時器消失,輸入編輯控件轉成非激活狀態,同時彈出一個對話框提示。
3、提交答案模塊
該模塊的啟動是對應于圖1中的[確定輸入]按鈕,它負責處理用戶輸入的價格,并將它同商品的實際價格比較,并做出提示。如果正確,它將調用“商品顯示模塊”再次在商品展臺上顯示另一種商品,在這個模塊中我們加入了對一件商品所猜次數的記錄,并做出了相應的處理,這也是為了增加游戲的難度。
//判斷結果
void CMyguessDlg::Onyes()
{
double tmpinputprice,tmprealprice;
char tmpcharinputprice[10],*end;
CString mystate;
//將對話框輸入傳給它所捆綁的變量
totalnum++;
UpdateData(TRUE);
m_digitalcontrol.SetFocus();
m_digitalcontrol.SetSel(0,-1,FALSE);
//如果沒有輸入價格則提示出錯
if(m_mydigital=="")
{
MessageBox("請輸入您猜的價格!","猜價格",MB_OK);
return ;
}
//真實價格可以用API函數直接轉換
tmprealprice=strtod(priceandname[tmprandom][0],&&end);
//首先將CString型轉成Char型,再由Char型轉成Double類型;
for(int i=0;i
tmpcharinputprice[i]=m_mydigital.GetAt(i);
tmpinputprice=strtod(tmpcharinputprice,&&end);
//如果15次沒有猜中,中止游戲
if(totalnum<=15){
//做價格判斷!
if(tmpinputprice>tmprealprice)
{mystate="高了!";}
else if(tmpinputprice
{mystate="低了!";}
else
{
//完全正確后應作新的商品猜價處理!初始化并保存一些設置
MessageBox("完全正確!","猜價格",MB_OK);
//記錄猜中的次數;
recordersuccess++;
continueguess();
return ;
}
//......此處略,讀者應加入判斷結果顯示代碼;
}
else
{
MessageBox("對不起,您已超過允許次數了!","警告提示",MB_OK);
return ;
}
m_digitalcontrol.SetFocus();
m_digitalcontrol.SetSel(0,-1,FALSE);
}
4、商品顯示模塊
如果玩家在沒有超時或超次數的情況下猜對了價格,那么在“提交答案模塊”中將調用這一模塊,它會顯示出下一個不同的商品,同時調用“游戲啟動模塊”。
我們用random[9]數組來記錄商品的號,用recordersuccess來記錄猜中的次數,對不同的次數作相應的商品選擇的處理,以達到顯示不同的商品的目的。
結束語
本程序還可以做更進一步修改,比如現在的商品及價格都是以一種硬代碼的方式寫入程序之中這樣顯得不太靈活,讀者可以設計一個“加入商品”的功能項,另外還可以加上一個難度設置,對時間和所猜的次數作一些動態調整,這些工作就留給聰明的讀者自己實現吧!