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