專利名稱:一種具有搖骰子功能的手機與手機搖骰子的方法
技術領域:
本發明涉及一種手機,尤其是涉及一種具有搖骰子功能的手機與手機搖骰子的方法。
背景技術:
CDMA(Code-Division Multiple Access),碼分多址,是近年來在數字移動通信進程中出現 的一種先進的無線擴頻通信技術。CDMA的基本技術之一是擴頻,因此這一多址技術具有很 強的保密性,并早在第二次世界大戰期間就在軍事通信和電子對抗中予以采用,60年代以后 又在軍用衛星通訊中采用。20世紀90年代第二代(2G) CDMA蜂窩移動通信系統問世,其 較TDMA之優點己見端倪,在系統容量、通信質量和保密性方面均有優于TDMA之處,ITU 推出的IMT-2000 (3G)標準及之后批準的幾個3G標準均系采用CDMA多址方式。正是基 于CDMA上述技術性能上的優勢,CDMA通信技術被引入我國,然而CDMA終端手機在前 期引入我國的時候,手機在功能和娛樂性上對比目前的GSM手機差距較大,中國電信作為 重組后的CDMA運營商,需要手機設備制造商推出更具娛樂性的CDMA終端手機。
參考文獻如下
1. 丘仲潘編譯.游戲核心算法編程內幕[M].北京希望電子出版社,2004年12月。
2. 楊大成著.CDMA2000 IX移動通信系統[M].機械工業出版社,2005年1月。
3. (美)埃克爾著,劉宗田等譯.0++編程思想[厘].機械工業出版社,2003年4月。
發明內容
本發明的目的在于提供一種增強CDMA手機娛樂性的具有搖骰子功能的手機與手機搖 骰子的方法。
本發明所述的具有搖骰子功能的手機是采用高通CDMA系列芯片方案的CDMA手機, 其軟件架構采用BREW架構。
本發明所述的手機搖骰子的方法包括以下步驟
1) 進入游戲菜單界面,選擇搖骰子,按確定鍵啟動搖骰子游戲;
2) 在搖骰子游戲界面,按OK鍵啟動骰子的搖動音效和搖動界面;
3) 搖骰子游戲應用在收到OK鍵事件后,產生骰子的隨機點數;
4) 根據隨機點數,產生幸運點數提示語。在步驟2)中,所述的在搖骰子游戲界面,按OK鍵啟動骰子的搖動音效和搖動界面, 其具體步驟如下-
1) 釆用按鍵來模擬手動搖動骰子;
2) 采用;MIDI音來模擬搖骰子碰撞骰盅的聲音;
3) 采用6張JPEG圖片來模擬顯示骰子的點數,之所以是6張是因為骰子的最大點數是 6點。
在步驟3)中,所述的產生骰子的隨機點數的具體步驟如下 采用如下的隨機算法來產生每顆骰子的點數 GETRAND((byte*)&Dest, sizeof(uint8)); pThis->nDice
= (pThis->nDice
+ Dest % 5 + 1) % 6。
在步驟4)中,所述的根據隨機點數,產生幸運點數提示語的具體步驟如下
根據隨機點數,生成幸運指數提示語的游戲形式。比如當您搖到18點的時候提示您
"新一年,你扎實的專業根基和辛苦播種,將得到豐碩的回報"等。
本發明基于CDMA技術性能上的優勢,克服CDMA終端手機在前期引入我國的時候, 手機在功能和娛樂性上對比目前的GSM手機差距較大等問題,為需要手機設備制造商推出 更具娛樂性的CDMA終端手機,不僅增強了CDMA手機的娛樂性,而且使CDMA手機具有 搖骰子游戲功能。
圖1為BREW的軟件架構圖。 圖2為BREW的消息處理流程圖。
具體實施例方式
以下實施例將結合附圖對本發明作進一步的說明。
一、如圖1所示,搖骰子應用就是運行在該BREW的軟件架構下,BREW的軟件架構 是高通提出并實現的一套軟件開發架構,搖骰子應用在該架構下進行的應用游戲的開發,對 于采用高通芯片開發CDMA手機來說,該軟件架構已經實現。在此不對BREW軟件架構的 實現進行深入分析,只對其核心思想進行簡單闡述,以利于說明搖骰子游戲應用的開發。
(1) 應用(APP):指的應用程序本身,搖骰子應用就是該BREW軟件架構下的一個應用。
(2) 窗口管理(FORM):以窗口的形式來管理需要顯示的界面,它為上層應用提供界 面的顯示服務。(3)界面元素(Widget):指的是用于構成一個窗口的元素,比如說,在一個窗口里 可能有文本,有圖象。這些都可以作為界面元素(Widget)來放置到窗口 (FORM)里。 搖骰子游戲應用正是基于以上的軟件架構來實現的。
二、 如圖2所示,該圖詳細描述了事件在BREW軟件架構下是如何經過各個模塊的。事 件先會到達應用(APP),然后由應用傳給根窗口 (ROOTFORM),再由根窗口傳給Widget, 每個Widget決定有哪些事件需要傳給當前顯示的窗口來進行處理。搖骰子游戲應用正是基于 該消息流程來實現的。
三、 搖骰子游戲的軟件代碼實現步驟如下
(1)應用實體的創建 如下所示,定義了搖骰子游戲的數據結構, typedef struct _CGamblingApp
并對該結構元素進行必要說明
AEEApplet IUTKRootForm IUTKListForm ICBUTKListForm IMessageBox* ICBMessageBox IUTKForm
a; 〃應用; *pIUTKRootForm; *pIUTKListForm; myICBListForm;
〃根窗口,用來管理Form的; 〃ListForm,實現游戲菜單的顯示; 〃按鍵,TP觸摸的處理接口函數; pIMessageBox; 〃彈出窗口,用來實現幫助等的提示信息; myICBMessageBox; 〃彈出窗口的事件處理接口 ;
*pIUTKForm; //普通窗口,用來實現游戲界面的顯示; ICBUTKForm myICBUTKForm;〃普通窗口的事件處理接口 , 用來實現游戲操作,比如說按了 OK鍵后就啟動搖搖骰子游戲過程; IRingPlayer *pIRingPlayer; 〃鈴聲組件,用來實現搖骰子的音效;
uint8 nDice[3];〃實現了 3顆骰子,用于存放骰子的隨機點數;
CGambling—Status GamblingStatus; uint 16 RunningTimes;
CFG—CGambling *pGamblingCFG; 〃配置信息,用來保存該游戲的一些配置信息, 比如該游戲是否啟動音效。
uint 16 nSelectltem; } CGambling App;
(2)搖骰子游戲應用的事件處理函數示例代碼,這是整個應用處理的入口。static boolean CGamblingApp—HandleEvent(CGamblingApp* pThis, AEEEvent eCode, uintl6 wParam, uirit32 dwParam)
int result = SUCCESS; switch (eCode)
〃和用戶交互操作的處理主要通過下面的處理函數來實現。
case EVT—KEY:
case EVT—KEY—PRESS:
case EVT—KEY—RELEASE:
if(IUTKRootForm—HandleEvent(pThis-〉pIUTKRootForm, eCode, wParam, dwParam》
return TRUE;
return(TRUE); default: breakj
return FALSE;
(3)游戲主菜單界面的顯示,其基本的實現原理是基于(1)所描述的軟件架構代碼的
體現如下,并做適當的注釋說明。
static int CGamblingApp—CreateMainForm(CGamblingApp *pThis)
{ 一
TUTKListFormltem Item = {0};
uintl 6 i =0;
if(pThis->pIUTKListForm !=NULL)
IUTKListForm—Show(pThis->pIUTKListForm, FALSE);RELEASEIF(pThis->pIUTKListForm);
〃創建搖骰子游戲主菜單界面;
IUTKRootForm—CreateUTKListForm(pThis->pIUTKRootForm,
&pThis->pIUTKListForm, CGAMBLING—MAINFORM—ID, NUIX,
LFS—NORMAL, &pThis->myICBListForm,
o);
〃在游戲主菜單界面里,插入界面元素;
for(i = T—CGAMBLING—NEWGAME; i <= T—CGAMBLING—HELP; i++)
Item.bCheck = FALSE; Item.CmdID =i; Item.nTxtID = i; ' Item.pszText = NULL;
Item.nImgID = CGamblingSetIcon[i-T—CGAMBLING一NEWGAME]; Item.pII咖ge = NULL;
IUTKListForm—InsertItem(pThis->pIUTKListForm,&Item, (uintl 6)(i-T—CGAMBLING—NEWGAME));
lUTKListForm—SetSelectedByIndex(pThis->pIUTKListForm, pThis->nSelectItem); lUTKListForm—SetTitle(pThis-〉pIUTKListForm,T一CGAMBLING一MA證ORM,
NUIX);
IUTKListForm_SetSoftKeys(pThis->pIUTKListForm, (uintl6)NULL, T一Ok, T一Back);
〃顯示游戲主泰單界面;
IUTKListForm—Show(pThis-〉pIUTKListForm,TRUE); return SUCCESS;
(4)游戲主界面的生成 static int CGamblingApp—CreateGameForm(CGamblingApp *pThis)
〃界面元素; WidgetlnfoWidgetlnfo[]=
CGAMBLING—WIDGET—BACKGROUND—ID, IMAGE_WIDGET, 0, 0, 176, 202, TRUE, DEFAULT—STYLE
},CGAMBLING_WIDGET—DICE1JD, IMAGE—WIDGET,59, 129 , 29, 26, TRUE, DEFAULT—STYLE
},
CGAMBLING—WIDGET—DICE2一ID, IMAGE—WIDGET,90, 129 , 29, 26, TRUE, DEFAULT—STYLE
},
{
CGAMBLING—WIDGET—DICE3—ID, IMAGE_WIDGET,121,129, 29, 26, TRUE, DEFAULT—STYLE
},
CGAMBLING—WIDGET—TEXT—ID, STATIC—WIDGET,32, 54 , 128, 64, TRUE, DEFAULT—STYLE
},
};
int32 Result = SUCCESS;
int32 WidgetCount = 5;
TWidgetParam wParam = {0};RELEASEIF(pThis國〉pIUTKForm);
〃創建游戲主界面窗口
lUTKRootForm—CreateUTKForm(pThis->pIUTKRootForm,
&pThis->pIUTKForm,CGAMBLING_GAMEFORM—ID,UFS—FUIXFORM,&pThis->myICBUTKForm,
o);
〃插入界面元素;
IUTKForm—InsertWidgets(pThis->pIUTKForm, Widgetlnfo, WidgetCount);
8〃設置元素的屬性;
wParam.WidgetID = CGAMBLING—WIDGET—BACKGROUND—ID;wParam.u.ImgParam.ImgResID = IDIPNG—GAMBLING—BG—IDLE;wParam.u.ImgParam.pIImage = NULL;
lUTKForm—SetWidgetParam(pThis->pIUTKForm,wParam.WidgetID,&wParam);IUTKForm—SetWidgetVisible(pThis->pIUTKForm,
CGAMBLING—WIDGET一DICE1—ID,FALSE》IUTKForm一SetWidgetVisible(pThis-〉pIUTKForm,
CGAMBLING—WIDGET—DICE2 ID,FALSE);lUTKForm—SetWidgetVisible(pThis國〉pIUTKForm,
CGAMBLING_WIDGET—DICE3ID,FALSE);IUTKForm_EnableAllKeyEvent(pThis->pIUTKForm,TRUE);〃顯示游戲主界面。
IUTKForm_Show(pThis->pIUTKForm,TRUE);pThis-〉GamblingStatus = CGAMBLING—STATUS_IDLE;pThis->nDice
= 0;pThis->nDice[l] = 0;pThis->nDice[2] = 0;return SUCCESS;
(5)用戶游戲時,處理用戶交互的處理函數static int32 CGambling—ICBUTKForm_OnMessage(void *pUser, uint32 ObjID,AEEEventevt,uint16 wParam,uint32 dwParam,uint32 ClientData)
CGamblingApp *pThis = (CGamblingApp *)pUser;
.....................省略部分代碼...................
switch(ObjID)
{
case CGAMBLING—GAMEFORM—ID:switch(wParam)
case AVK—SELECT: 〃按中間OK鍵開始游戲; switch(pThis->GamblingStatus) case CGAMBLING—STATUS—IDLE: if(NULL == pThis->pIRingPlayer)
〃創建鈴聲接口函數;
ISHELL_CreateInstance(pThis->a.m_pIShell,
AMOI—CLSID—I腿GPLAYER, (void* *)&pThis->pIRingPlayer);
if(pThis-〉pGamblingCFG隱〉SoundSetting)
//播放鈴聲,這樣就能模擬骰子的撞擊聲;
IRingPlayer—Play(pThis-〉pIRingPlayer, NULL, PLAY—IMAGEVIEW,
CGAMBLING—GAME—VOICE—PATH, 0);
〃設置個界面元素的屬性; .......................〃cancel the part code.....................
IUTKForm_SetWidgetParam(pThis->pIUTKForm,WidgetParam.WidgetID,&WidgetParam); IUTKForm—SetWidgetVisible(pThis->pIUTKForm,
CGAMBLING—WIDGET—DICE1—ID,TRUE);
//創建3顆骰子,各初始點數;
GETRAND((byte*)&Dest,sizeof(uint8》; pThis->nDice
= (pThis->nDice
+ Dest % 5 + 1) % 6; GETRAND((byte*)&Dest, sizeof(uint8)); pThis->nDice[l] = (pThis->nDice[l] +Dest % 5 + 1) % 6;GETRAND((byte*)&Dest, sizeof(uint8)); pThis->nDice[2] = (pThis->nDice[2] + Dest % 5 + 1) % 6; 〃利用3個IMAGE—WIDGET來實現3顆骰子的顯示; WidgetParam.WidgetID = CGAMBLING—WIDGET—DICEl—ID;
WidgetParam.u.ImgParam.ImgResID = IDI—PNG—G AMBLING—DICEl + pThis陽〉nDice
; WidgetParam.u.ImgParam.pIImage = NULL;
IUTKForm_SetWidgetParam(pThis->pIUTKForm,WidgetParam.WidgetID,&WidgetParam);
WidgetParam.WidgetID = CGAMBLING—WIDGET—DICE2」D; WidgetParam.u.ImgPar咖.ImgResID = IDI—PNG—GAMBLING—DICEl + pThis->nDice[l]; WidgetParam.u.ImgParam.pIImage = NULL;
IUTKForm—SetWidgetParam(pThis->pIUTKForm,WidgetParam.WidgetID,&WidgetParam);
WidgetPar咖.WidgetID = CGAMBLING—WIDGET—DICE3」D; WidgetParam.u.ImgParam.ImgResID = IDI—PNG—GAMBLING—DICEl + pThis->nDice[2]; WidgetParam.u.ImgParam.pIImage = NULL;
IUTKForm_SetWidgetParam(pThis->pIUTKForm,WidgetParam.WidgetID,&WidgetParam);
pThis->GamblingStatus = CGAMBLING—STATUS—RUNNING; pThis->RunningTimes = 0; 〃通過啟動TIMER來模擬骰子的搖動過程; ISHELL—SetTimer(pThis->a.m_pIShell, 100,
(PFNNOTIFY)CGamblingApp—ICBShell—onTimeOut,pThis);
break;
case CGAMBLING—STATUS—RUNNING: break;
case CGAMBLING—STATUS—RESULT:
〃對搖骰子的最后結果進行顯示,并提示相關的幸運語句;
IUTKForm一SetWidgetVisible(pThis-〉pIUTKForm,
CGAMBLING—WIDGET—DICE 1一ID,FALSE); IUTKForm一SetWidgetVisible(pThis-〉pIUTKForm,CGAMBLING—WIDGET_DICE2_ID,FALSE); IUTKForm—SetWidgetVisible(pThis-〉pIUTKForm,
CGAMBLING—WIDGET一DICE3—ID,FALSE); IUTKForm—SetWidgetVisible(pThis-〉pIUTKForm,
CGAMBLING—WIDGET TEXT—ID,FALSE); WidgetParam.WidgetID = CGAMBLING—WIDGET—BACKGROUND—ID; WidgetParam.u.ImgPar咖.ImgResID = IDI—PNG—GAMBLING—BG—IDLE; WidgetParam.u.ImgParam.pnmage = NULL;
IUTKForm—SetWidgetParam(pThis->pIUTKForm,WidgetParam.WidgetID,&WidgetParam); pThis->GamblingStatus = CGAMBLING—STATUS—IDLE;
break;
return SUCCESS;
(6 )散子的隨機產生的算法和散子的隨機顯示機制 搖骰子游戲里核心的實現在于骰子點數的隨機產生,和根據沒顆骰子的點數進行顯示。 在搖骰子游戲里實現了 3顆骰子,每顆骰子的隨機點數按以下算法生成。 GETRAND((byte*)&Dest, sizeof(uint8));
pThis->nDice
= (pThis->nDice
+ Dest % 5 + 1) % 6;〃第一顆骰子點數; GETRAND((byte*)&Dest, sizeof(uint8));
pThis->nDice[l] = (pThis->nDice[l] +Dest % 5 + 1) % 6; 〃第二顆骰子點數; GETRAND((byte*)&Dest, sizeof(uint8));
pThis->nDice[2] = (pThis->nDice[2] + Dest % 5 + 1) % 6; 〃第三顆骰子點數; 由于每顆骰子的最大點數為6,所以需要6幅圖片來對應相應的點數。這樣在通過 BREW架構下的WIDGET機制,就可以實現搖骰子結果的隨機顯示。 (7)幸運語句的提示
通過staticwidget來實現提示幸運語句的提示,當搖骰子結果出來后,通過點數獲得相應 的提示文本索引,并由staticwidget來顯示。算法代碼如下 〃獲得點數;
nResult = pThis->nDice
+ pThis->nDice[l] + pThis-〉nDice[2];〃根據點數獲得文本ID; WidgetParam.WidgetlD = CGAMBLING—WIDGET—TEXT—ID; WidgetParam.u.TxtParam.TxtResID = T一CGAMBLING—RESULT3 + nResult; WidgetParam.u.TxtParam.pszText = NULL; 〃設置staticwidget屬性,顯示出相應的幸運語句。
lUTKForm—SetWidgetParam(pThis->pIUTKForm,WidgetParam.WidgetID,&WidgetParam);
權利要求
1. 一種具有搖骰子功能的手機,其特征在于是采用高通CDMA系列芯片方案的CDMA手機,其軟件架構采用BREW架構。
2. 手機搖骰子的方法,其特征在于包含以下步驟1) 進入游戲菜單界面,選擇搖骰子,按確定鍵啟動搖骰子游戲;2) 在搖骰子游戲界面,按OK鍵啟動骰子的搖動音效和搖動界面;3) 搖骰子游戲應用在收到OK鍵事件后,產生骰子的隨機點數;4) 根據隨機點數,產生幸運點數提示語。
3. 如權利要求書2所述的手機搖骰子的方法,其特征在于在步驟2)中,所述的在搖骰 子游戲界面,按OK鍵啟動骰子的搖動音效和搖動界面,其具體步驟如下1) 采用按鍵來模擬手動搖動骰子;2) 采用;MIDI音來模擬搖骰子碰撞骰盅的聲音;3) 采用6張JPEG圖片來模擬顯示骰子的點數。
4. 如權利要求書2所述的手機搖骰子的方法,其特征在于在步驟3)中,所述的產生骰子的隨機點數的具體步驟如下采用如下的隨機算法來產生每顆骰子的點數GETRAND((byte*)&Dest, sizeof(uint8)); pThis-〉nDice
= (pThis-〉nDice
+ Dest % 5 + 1) % 6。
5. 如權利要求書2所述的手機搖骰子的方法,其特征在于在步驟4)中,所述的根據隨 機點數,產生幸運點數提示語的具體步驟為根據隨機點數,生成幸運指數提示語的游戲形
全文摘要
一種具有搖骰子功能的手機與手機搖骰子的方法,涉及一種手機。提供一種增強CDMA手機娛樂性的具有搖骰子功能的手機與手機搖骰子的方法。具有搖骰子功能的手機是采用高通CDMA系列芯片方案的CDMA手機,其軟件架構采用BREW架構。進入游戲菜單界面,選擇搖骰子,按確定鍵啟動搖骰子游戲;在搖骰子游戲界面,按OK鍵啟動骰子的搖動音效和搖動界面;搖骰子游戲應用在收到OK鍵事件后,產生骰子的隨機點數;根據隨機點數,產生幸運點數提示語。
文檔編號H04M1/725GK101478606SQ20091011095
公開日2009年7月8日 申請日期2009年1月22日 優先權日2009年1月22日
發明者嚴易強, 余鵬輝, 吳俊清, 唐志評 申請人:廈門市卓易科技有限公司