曹煒卿
摘 要 本人寫該論文的構(gòu)思便是站在一個軟件開發(fā)者的角度來思考的,從項目的需求,分析,設(shè)計,一直到實現(xiàn),走的就是軟件工程的體系那一套。無論是游戲的需求,還是游戲的分析,游戲的設(shè)計以及游戲的實現(xiàn)開發(fā),都經(jīng)過了精細(xì)的討論與思考。整個軟件的開發(fā)過程思路明確,條理清晰。
【關(guān)鍵詞】微信 游戲 開發(fā) 技術(shù)
1 前言
文章主要敘述了微信平臺游戲的設(shè)計與實現(xiàn),當(dāng)然里面也有到了一些java的框架,如hibernate,還有一些關(guān)鍵性的技術(shù)如css,jquery等,尤其是jquery,這個神奇的東西可以讓JSP頁面變得炫酷起來。另外還有java流的應(yīng)用,java語言的開發(fā),mysql數(shù)據(jù)庫的應(yīng)用,xml和json的數(shù)據(jù)格式的傳遞。這些技術(shù)每一個看似比較容易,其實用到實際的開發(fā)當(dāng)中還是相當(dāng)有用的,我的游戲模塊基本上用到了上述所說的每一個技術(shù)。所以權(quán)當(dāng)熟悉這些技術(shù),也是讓人受益匪淺。至于java語言和微信平臺的特點(diǎn)我在此就不贅述了,在此簡單介紹下JSP。向傳統(tǒng)的html中加入java程序片段和JSP標(biāo)簽,就可以構(gòu)成JSP網(wǎng)頁java程序片段就可以操縱數(shù)據(jù)庫,重定向或者實現(xiàn)建立動態(tài)網(wǎng)站所需要的功能。所有的程序操作都在服務(wù)器端執(zhí)行。
2 益智類游戲的設(shè)計
JSP就根本來說就是一個簡化的servlet設(shè)計,也是在服務(wù)器端執(zhí)行,web服務(wù)器在遇到訪問JSP頁面的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連通JSP中的html代碼一起返回給客戶端。JSP通常很少進(jìn)行數(shù)據(jù)處理,只是用來實現(xiàn)網(wǎng)頁的靜態(tài)化處理,不會進(jìn)行業(yè)務(wù)處理。大型的web開發(fā)都需要JSP與servlet進(jìn)行配合才能完成,JSP具備java技術(shù)的簡單易用,完全的面向?qū)ο蟮奶攸c(diǎn)。
Picword.java封裝了游戲的基本單位,因為游戲本身為瘋狂猜圖類的游戲,所以圖文必須給封裝成類。Gamer.java這個封裝了游戲者的游戲狀態(tài),記錄了游戲者的玩游戲的臨時狀態(tài),里面可以存一些用戶的基本信息和當(dāng)前游戲狀態(tài),如積分情況和過關(guān)情況。Picworddao.java這個dao類很明顯是與數(shù)據(jù)庫進(jìn)行交互的類,里面封裝了一個sessionfactory對象,可以產(chǎn)生session對象,來利用hibernate對數(shù)據(jù)庫進(jìn)行操作,或者從數(shù)據(jù)中取出自己想要的數(shù)據(jù)或者向數(shù)據(jù)庫中存入數(shù)據(jù)。GameServlet.java這個類是個servlet,封裝了對游戲發(fā)來的請求的響應(yīng),接收了game.jsp發(fā)來的json數(shù)據(jù)包,然后對其進(jìn)行處理以后,從數(shù)據(jù)庫里調(diào)用一些新的數(shù)據(jù)過來,再向jsp頁面發(fā)送一些json數(shù)據(jù)包,繼而封裝成消息的響應(yīng)。當(dāng)用戶點(diǎn)擊菜單中的“微游戲”后,可以向用戶發(fā)送一個newsmessage消息,里面有兩個url參數(shù),一個是存放圖片路徑的,一個是存放點(diǎn)擊后轉(zhuǎn)移的網(wǎng)址。點(diǎn)擊進(jìn)入的頁面為game.jsp,里面用到了很多css的框架代碼,比如圖片和按鈕的設(shè)置位置與鉆石和關(guān)數(shù),都用到了css的樣式顯示。Css中的margin,padding還有l(wèi)eft,right,up,down,relative,absolutely等參數(shù)可以控制好一個元素的位置和顯示。
既然是jsp頁面,服務(wù)器這邊必然會有一個servlet來處理從jsp這邊傳來的消息。然后在服務(wù)器這邊編寫了一個servlet,類名為gameServlet。首先會在數(shù)據(jù)庫中創(chuàng)建一個新表為picword,存圖片的有關(guān)信息,如圖片路徑,圖片的猜圖答案等,還有一個表為gamer,字段有圖片的url,圖片的猜圖答案,過關(guān)數(shù),鉆石數(shù),以及用戶的基本信息如用戶openid以及昵稱。
數(shù)據(jù)庫表創(chuàng)建好,現(xiàn)在需要從數(shù)據(jù)庫中取出數(shù)據(jù)并且傳給game.jsp.這樣可以利用ajax,直接從jsp頁面調(diào)用從數(shù)據(jù)庫取來的數(shù)據(jù)。這可以用到j(luò)query的一個方法$.get(url,function(data){})url要填寫服務(wù)器的servlet,function為對傳遞過來的數(shù)據(jù)進(jìn)行的處理的方法。
下面對游戲功能進(jìn)行詳解:
確定功能:在點(diǎn)擊“確定”的時候,首先要判斷用戶的輸入與正確答案是否一致,如果一致則進(jìn)入下一關(guān),并且鉆石數(shù)加三,如果不一致則提示答案錯誤,繼續(xù)答題!于是在點(diǎn)擊確定按鈕的時候需要onclick=“queding()”,queding()函數(shù)先判斷如果答案正確,就用$.get()方法訪問到數(shù)據(jù)庫,從數(shù)據(jù)庫里取出新的圖片消息,然后一個一個替代掉game.jsp中的圖片,猜的字,并且鉆石數(shù)加三,關(guān)數(shù)加一,還有圖片的類別屬性。替換可以用jquery的css()方法,可以設(shè)置。
提示功能:提示是從當(dāng)前的答案空格中跳出一個正確答案的字,利用jquery的each()方法,遍歷每個猜圖的字,把對應(yīng)的字消除后在上面的空白處顯示出來,這個用jquery十分容易實現(xiàn)。不過前提也是要訪問到數(shù)據(jù)庫的數(shù)據(jù),同樣要用$.get()方法訪問數(shù)據(jù)庫,從表gamer當(dāng)中讀取當(dāng)前的游戲狀態(tài),得到想要的答案和鉆石數(shù)。并且由于游戲設(shè)定,在提示一個字后會減少10個鉆石。于是會在訪問數(shù)據(jù)庫的同時,更改鉆石數(shù)目減10。
除錯功能:在下面的猜圖的字中,如果要除掉一個錯誤的答案的字,便需要減少10個鉆石。為了實現(xiàn)這個功能,必須同樣的訪問數(shù)據(jù)庫,用each()方法遍歷每個猜圖的字,直到找到一個錯誤的答案的字,便將它設(shè)為不可見。并且由于游戲設(shè)定,在提示一個字后會減少10個鉆石。于是會在訪問數(shù)據(jù)庫的同時,更改鉆石數(shù)目減10.提示和除錯功能每次點(diǎn)擊都會彈出一個對話框,確認(rèn)是否要扣掉十個鉆石。
3 總結(jié)
本文主要講述了項目的總體概況,項目的產(chǎn)品簡介,運(yùn)行環(huán)境和約定。以及本人在項目做的主要功能實現(xiàn),系統(tǒng)功能實現(xiàn)。本人寫該論文的構(gòu)思便是站在一個軟件開發(fā)者的角度來思考的,從項目的需求,分析,設(shè)計,一直到實現(xiàn),走的就是軟件工程的體系那一套。無論是游戲的需求,還是游戲的分析,游戲的設(shè)計以及游戲的實現(xiàn)開發(fā),都經(jīng)過了精細(xì)的討論與思考。整個軟件的開發(fā)過程思路明確,條理清晰。
作者單位
上海交通大學(xué) 上海市 200433