一、遊戲開發策略
1 遊戲動作(action)的使用
midp的canvas類讓程式設計師處理某些按鍵事件,要麼作為特定的低階鍵控**事件要麼作為抽象的遊戲動作。fullcanvas是nokia的全屏畫布(fullcanvas)類,它是從canvas類繼承而來的。
在回合制遊戲或者不需要超過四個方向鍵(上、下、左、右)的遊戲中,最好使用直接的鍵盤**來控制遊戲動作。可以使用抽象遊戲動作的遊戲例子包括西洋棋和知識測驗以及解謎遊戲,這些都是使用方向鍵來滾動螢幕或者移動。
遊戲動作應該只在不需要快速反應的遊戲中使用。這是因為所選擇的裝置的遊戲動作對映可能對於要求快速動作的遊戲並不適用。並且,如果乙個遊戲要求斜的方向鍵或者這個遊戲是乙個快節奏的動作遊戲,那時遊戲者乙隻手需要移動遊戲角色,另乙隻手需要執行其他操作,比如射擊、開門等等,那麼就需要使用直接鍵盤**。原因是在midp中沒有斜向的遊戲動作,並且遊戲動作對映是為乙隻手使用設計的。
當使用直接鍵盤**事件的時候,必須特別注意應用程式的可移植性。
在不同的裝置之間鍵盤的布局有很大區別。開發者可以通過允許使用者在遊戲中自己定義按鍵的方式來解決這個問題。這可以在遊戲開始之前或者在遊戲的"選項"頁面中完成。
鍵盤**和遊戲動作在同乙個應用程式中決不應該混合使用。
2 關於遊戲動作的說明
乙個midlet應用程式通過呼叫canvas方法來探測哪些鍵盤**對映到執行的應用程式中的抽象遊戲動作:
public static int getgameaction(int keycode);
canvas類定義抽象遊戲動作集:up、down、left、right、fire等等。
遊戲開發者應該知道midp 1.0規範中的乙個問題。這個類定義了轉化鍵盤**到遊戲動作的方法,同樣也定義了轉化遊戲動作到鍵盤**的方法。
public int getgameaction(int keycode)
public int getkeycode(int gameaction)
方法getkeycode(int gameaction)可能會導致一些問題,因為它只能返回基於遊戲動作的乙個鍵盤**,即使midp 1.0允許超過乙個鍵盤**被實現。在nokia手機中,個別的一些鍵盤**被對映到相同的遊戲動作,比如"up鍵"和"2鍵"都被對映為向上的遊戲動作。而這個方法只能返回其中之一;返回的值是特定的實現。然而,如果方法getgameaction(int keycode)使用"up鍵"和"2鍵"的鍵盤**作為引數,這個方法將返回正確的向上的遊戲動作。下面來看乙個不好的例子,以加深我們的印象:
//不好的例子,不要這麼做:
class tetriscanvas extends canvas
public void keypressed(int keycode) else if (keycode = rightkey) }}
下面是更好的解決方案:
class tetriscanvas extends canvas
public void keypressed(int keycode) }}
這個例子是midp 1.0規範中的例子,使用getkeycode ( int gameaction)處理鍵盤**值,只能返回乙個值。如果這樣的話,其它可能的按鍵對映就不能在midlet中使用了。比如說,在nokia 7650中就會出現問題,nokia 7650有五個方向鍵和乙個操縱桿以及普通的鍵盤布局,上面這個例子就會返回操縱桿的值而不是鍵盤的值。這是處理事件的一種與裝置無關的方法,也是一種不好的方法。更好的解決方法是在keypressed ()方法內使用getgameaction ( int keycode)。通常,應用程式應該避免使用getkeycode ( int gameaction)方法並且總是使用getgameaction ( int keycode)。
基於Nokia手機的移動遊戲開發步步通(三)
二 實現遊戲的步驟 下圖顯示的是乙個遊戲midlet在成功安裝和執行之後使用者介面狀態的典型的變化流程。我們想通過乙個遊戲者的視角來闡述開發移動遊戲的過程。圖3 使用者介面狀態圖表 1 開始遊戲 在使用者啟動midlet之後,將顯示遊戲特定的閃動螢幕。閃動螢幕是fullcanvas的乙個例項。它可用...
基於Nokia手機的移動遊戲開發步步通(三)
二 實現遊戲的步驟 下圖顯示的是乙個遊戲midlet在成功安裝和執行之後使用者介面狀態的典型的變化流程。我們想通過乙個遊戲者的視角來闡述開發移動遊戲的過程。圖3 使用者介面狀態圖表 1 開始遊戲 在使用者啟動midlet之後,將顯示遊戲特定的閃動螢幕。閃動螢幕是fullcanvas的乙個例項。它可用...
基於WIFI和android的智慧型手機開門設計
一 概述 android 安卓 是一種以linux為基礎的開源 作業系統,用於各種移動便攜裝置。其優點是擴充套件性強,應用程式豐富,現已發展到5.0版本。android的市場份額已躍居全球第一,為此基於安卓平台的各種應用也在迅速發展著。基於wifi和android的智慧型手機開門系統採用wifi轉串...