亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

游戲框架之心得體會(1)

2019-11-18 16:17:37
字體:
來源:轉載
供稿:網友

                                                    游戲框架之心得體會(1)

      最近研究的一段時間的游戲代碼,獲益不??!細節的掌握不多,但對游戲的框架有了一定的了解。
       現總結出幾套游戲框架,在此寫出供大家參考!
      文章僅代表個人觀點,如有觀點請在論壇討論

      MSN alfylove@hotmail.com


文章出自 J2MEDEV 轉載請注名出處


 合金代碼 下載地址 http://www.j2medev.com/Soft/src/game/200610/789.Html

Mid.java
 開始啟動線程
 
public class Mid extends MIDlet implements Runnable

public Mid() {
    mscreen = new Game();
    Display.getDisplay(this).setCurrent(mscreen);
  }

  public void run(){
    if(mscreen.PRocess()) this.notifyDestroyed();
  }
 
  public void startApp() {
     (new Thread(this)).start();
  }
 
  public void pauseApp() {
    mscreen.stayapp();
  }

  public void destroyApp(boolean unconditional) {
    mscreen.exitapp();
  }
}

    //游戲主體部分
Game.java

public class Game extends Canvas {

    public MScreen() {   
    face_load();//地圖數據
    sound_load();//聲音載入
    screen_index = SCREEN_RESSLOAD; //這個索引為游戲主索引
  }
  /////////////////////////////////
  ///////技巧部分/////////
  ///////////////////////////////
  public final void refresh() { repaint(); serviceRepaints(); } //刷新屏幕
  public final void stayapp() { running = false; }  //退出循環
  public final void exitapp() { exitapp = true; }   //退出程序
 
  //相對坐標的轉換
  private final int toScreenx(int x) { return x - position_x; }
  private final int toScreeny(int y) { return y - position_y; }
 
 
 ////////////////////////////////////////////
 /////////                           ////////////
 ////////    描繪                    ////////////
 ////////////////////////////////////////////
 protected void paint(Graphics g) {
    if(process_lock) return; //游戲關鍵進程鎖
    g.setClip(0,0,screen_w, screen_h);
    process_draw();
  }
 
 protected void process_draw() {
    if(process_lock) return;
    switch(screen_index){
      case SCREEN_MAINMENU: mainmenu_draw(); break;
      case SCREEN_HELPINFO: helpinfo_draw(); break;
      case SCREEN_COPYRIGH: copyrigh_draw(); break;
      case SCREEN_GAMEBODY: gamebody_draw(); break;
      case SCREEN_GAMEOVER: gameover_draw(); break;
      case SCREEN_HIGHLIST: highlist_draw(); break;
      case SCREEN_RESSLOAD: ressload_draw(); break;
      case SCREEN_SELEGATE: selegate_draw(); break;
    }
  }
 


 
//////////////////////////////////////////////
///////////////  按鍵處理//////////////
////////////////////////////////////////////
  protected void keyPressed(int keyCode) {
    setkeystate(keyConvert(keyCode), true);
    process_key(keyConvert(keyCode));
  }

  protected void keyRepeated(int keyCode) {
    setkeystate(keyConvert(keyCode), true);
  }
  protected void keyReleased(int keyCode) {
    setkeystate(keyConvert(keyCode), false);
  }
 
protected final void process_key(int keycode){
    if(process_lock) return;
    switch(screen_index){
      case SCREEN_GAMEBODY: gamebody_key(keycode); break;
      case SCREEN_MAINMENU: mainmenu_key(keycode); break;
      case SCREEN_HELPINFO: helpinfo_key(keycode); break;
      case SCREEN_COPYRIGH: copyrigh_key(keycode); break;
      case SCREEN_GAMEOVER: gameover_key(keycode); break;
      case SCREEN_HIGHLIST: highlist_key(keycode); break;
      case SCREEN_SELEGATE: selegate_key(keycode); break;
      case SCREEN_RESSLOAD: ressload_key(keycode); break;
    }
  }
 
/////////////////////////////////////////// 
/////  運行控制////////////////////
/////////////////////////////////////////
    public final boolean process(){
    int count = 0;
    long secon = 0;
    long timeold = 0;
    long timenow = 0;

    running = true;
    while (running && !exitapp) {
      if(exitapp) return true;
      timenow = System.currentTimeMillis();
      if (timenow >= interval + timeold) {//FPS控制參見文章 如何控制游戲中的FPS

    http://www.j2medev.com/code/j2me/gui/200611/3802.html
        timeold = timenow;
        framenum = (framenum < 9999)? framenum +1 : 0;

        process_tick();//轉入分支運行控制


        //計算當前的刷新幀數
        if(secon < (timenow / 1000)){
          secon = timenow/1000;
          framesec = count;
          count = 1;
        }else
          count ++;
      }
    }
    return exitapp;
  }
 
  public final void process_tick() {
    if(process_lock) return;
    switch(screen_index){
      case SCREEN_GAMEBODY: gamebody_run(); break;
      case SCREEN_MAINMENU: mainmenu_run(); break;
      case SCREEN_HELPINFO: helpinfo_run(); break;
      case SCREEN_COPYRIGH: copyrigh_run(); break;
      case SCREEN_GAMEOVER: gameover_run(); break;
      case SCREEN_HIGHLIST: highlist_run(); break;
      case SCREEN_RESSLOAD: ressload_exec(); break;
      case SCREEN_SELEGATE: selegate_run(); break;
    }
  }
 
 
  ////////////////////////////////
  ///////各部分方法/////////
  ///////////////////////////////
 
  游戲分為GAMEBODY//游戲主體
          MAINMENU//主菜單
          HELPINFO//幫助信息
          COPYRIGH//版權所有
          HIGHLIST//高分顯示
          RESSLOAD//載入畫面
          SELEGATE//關卡選擇
  7個部分       


  每個部分都有5個方法
  以mainmenu為例寫出
 
  //初使化
  private final void mainmenu_init(){初使化mainmenu_index
     mainmenu_index = 0;
   }
  ////響應按鍵
  private final void mainmenu_key(int keycode){/*里面內容省略*/
  case KEY_SOFT1:
         mainmenu_execute(mainmenu_index);//轉入按鍵執行
         break;
  }
   //按鍵執行
  private final void mainmenu_execute(int index){
                     /*按鍵響應相應命令   */  }
  //命令描繪
  private final void mainmenu_run(){
  refresh();
  //描繪部分
   private final void mainmenu_draw(){}
   }
  
  
  總結來看這個游戲的框架是
 
            主結構
           
   構造函數(聲音載入圖片載入)
   PAINT   (描繪-->分支描繪)
   RUN      (運行-->分支運行)
   KEY  (按鍵響應-->分支按鍵)
  
            分支結構
  
   init()
   key(int keycode)
   execute(int index)//轉入命令執行(注 不是所有的都需要此執行可以把這個命令歸  進key執行)
   run() //運行(描繪)
   draw()
  
  
   這個游戲很清晰的顯示游戲運行思路將大框架再小框架,便于修改和查找;
   這里所給出的只是游戲框架部分,具體的AI和游戲主體框架出于篇幅沒有給出,希望這篇文章能對新手有一定幫助!

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲bt天天射| 久久九九热免费视频| 午夜免费在线观看精品视频| 欧美日韩午夜视频在线观看| 欧美天天综合色影久久精品| 18一19gay欧美视频网站| 久久久久久这里只有精品| 欧美美女18p| 亚州精品天堂中文字幕| 国产精品678| 亚洲激情国产精品| 国内外成人免费激情在线视频网站| 久久天堂电影网| 亚洲久久久久久久久久| 国产成人久久久精品一区| 国产欧美精品一区二区| 亚洲影院色在线观看免费| 韩剧1988免费观看全集| 国产香蕉97碰碰久久人人| 成人午夜在线视频一区| 成人福利在线视频| 国产精品爽爽爽爽爽爽在线观看| 97超碰蝌蚪网人人做人人爽| 亚洲欧洲黄色网| 久久精品99久久香蕉国产色戒| 日韩久久免费视频| 福利视频导航一区| 永久免费毛片在线播放不卡| 丝袜亚洲另类欧美重口| 亚洲欧美一区二区三区在线| 亚洲成人免费在线视频| 亚洲一区二区三区sesese| 成人444kkkk在线观看| 日韩在线视频免费观看高清中文| 日韩中文字幕不卡视频| 91啪国产在线| 成人亚洲综合色就1024| 亚洲女人被黑人巨大进入| 国产日韩精品电影| 亚洲国产精品久久久久久| 成人网中文字幕| 777国产偷窥盗摄精品视频| 亚洲精品成a人在线观看| 欧美孕妇孕交黑巨大网站| 成人一区二区电影| 日韩av一区二区在线观看| 亚洲精品国产欧美| 久久国产加勒比精品无码| 大量国产精品视频| 在线精品高清中文字幕| 国产aⅴ夜夜欢一区二区三区| 亚洲精品aⅴ中文字幕乱码| 国产精品视频中文字幕91| 日韩精品视频在线观看免费| 亚洲第一精品久久忘忧草社区| 日韩av不卡在线| 91成人在线观看国产| 中文字幕免费精品一区| 国产91亚洲精品| 国产+成+人+亚洲欧洲| 日韩高清不卡av| 国产精品美女免费看| 欧美放荡办公室videos4k| 久久久久久久久久久av| 亚洲激情久久久| 欧美情侣性视频| 国产精品91久久| 日韩一区二区三区xxxx| 78m国产成人精品视频| 欧美日韩国产成人在线| 亚洲免费中文字幕| 国产偷亚洲偷欧美偷精品| 91精品久久久久久久久中文字幕| 亚洲国产精品va在线看黑人动漫| 久久69精品久久久久久久电影好| 久久成人国产精品| 欧美性69xxxx肥| 亚洲精品欧美极品| 日韩欧美在线视频日韩欧美在线视频| 亚洲国产欧美在线成人app| 国产欧美日韩最新| 欧美影院在线播放| 黑人巨大精品欧美一区二区免费| 欧美成aaa人片免费看| 青草成人免费视频| 欧美精品videofree1080p| 久久视频免费在线播放| 国产精品欧美一区二区三区奶水| 欧美成人在线影院| 国产视频亚洲精品| 国产一区二区三区欧美| 日韩欧美一区二区在线| 伊是香蕉大人久久| 亚洲国产天堂久久国产91| 日韩在线视频二区| 78m国产成人精品视频| 欧美亚洲在线观看| 国产成人鲁鲁免费视频a| 国外成人在线播放| 夜夜嗨av色综合久久久综合网| 欧美精品久久久久久久久久| 国产日韩在线一区| 草民午夜欧美限制a级福利片| 国产91精品久久久久久久| 热re99久久精品国产66热| 91情侣偷在线精品国产| 久久福利网址导航| 欧美肥婆姓交大片| 精品日韩美女的视频高清| 欧美电影免费观看高清| 57pao成人国产永久免费| 欧美性视频精品| 亚洲欧美日韩国产精品| 欧美裸身视频免费观看| 日韩一区二区福利| 久久久久国产精品免费网站| 日韩的一区二区| 国产成人精品电影久久久| 久久全国免费视频| 美日韩丰满少妇在线观看| 久久精品这里热有精品| 亚洲一级免费视频| 日韩精品在线播放| 久久久精品视频成人| 91在线高清免费观看| 九九九热精品免费视频观看网站| 日韩欧美高清在线视频| 综合136福利视频在线| 国产网站欧美日韩免费精品在线观看| 国产婷婷色综合av蜜臀av| 精品久久久久久久久久久| 亚洲精品国产美女| 欧美高清视频免费观看| 国产精品久久久久秋霞鲁丝| 国内精品模特av私拍在线观看| 欧美日韩中文在线观看| 久久香蕉频线观| 国产精品99久久久久久www| 国产日韩欧美视频| 欧美久久精品午夜青青大伊人| 国产免费成人av| 久久久久久九九九| 清纯唯美亚洲综合| 中文字幕av一区二区三区谷原希美| 亚洲久久久久久久久久久| 亚洲精品自拍第一页| 亚洲最大福利网| 欧美大肥婆大肥bbbbb| 日韩亚洲成人av在线| 亚洲剧情一区二区| 久热99视频在线观看| 日本高清不卡在线| 国产69精品久久久久9999| 91人人爽人人爽人人精88v| 日韩中文字幕久久| 亚洲一区中文字幕| 国产视频精品久久久| 国内精品一区二区三区| 精品久久久久久久久中文字幕| 亚洲最大成人在线| 91中文精品字幕在线视频| 热久久这里只有精品| 韩国精品久久久999| 国产精品免费看久久久香蕉|