命運跟我開了一場玩笑,一個不喜歡很多游戲的人,卻寫起了游戲。。。
參加工作與在學(xué)校,有一點不同是:是否為強迫性的——對于工作,即使你不喜歡,同樣要做。
既然在做,那就得盡力做,每個人都應(yīng)該如此。
努力思考,學(xué)習(xí)。
筆記還是要做的:

筆記一:
發(fā)牌程序,對程序員來說,發(fā)牌的過程只是一個將本來排好序的數(shù)組的順序打亂而已,這個方法耍的只是一個小聰明,使得 Random.nextInt() 方法的運行次數(shù)只等于牌的數(shù)量
?1?????/**
?2??????*?@author?liltos
?3??????*?@param?length?要發(fā)的牌數(shù)
?4??????*?
?5??????*?隨機發(fā)牌的程序,它的特點在于發(fā)length張牌的話
?6??????*?只要運行l(wèi)ength次Random.nextInt()方法!
?7??????*?程序中的4個for循環(huán),有2個用于輸出,1個用于數(shù)組的初始化
?8??????*?只有一個for循環(huán)是用于發(fā)牌的
?9??????*/
10?????public?static?void?randomDeliverCard(int?length)?{
11?????????int[]?card1?=?new?int[length];
12?????????int[]?result?=?new?int[length];
13?
14?????????for?(int?i?=?0;?i?<?card1.length;?i++)
15?????????????card1[i]?=?i?+?1;
16?????????for?(int?i?=?0;?i?<?card1.length;?i++)?{
17?????????????System.out.print(card1[i]?+?"\t");
18?????????????if?((i?+?1)?%?9?==?0)
19?????????????????System.out.println();
20?????????}
21?
22?????????Random?rand?=?new?Random(System.currentTimeMillis());
23?
24?????????int?rand_index?=?0;
25?????????int?remain?=?card1.length;
26?
27?????????/*
28??????????*?當(dāng)將rand_index上的數(shù)取出后,為防止再次取到該數(shù),
29??????????*?便將數(shù)組末尾的數(shù)填充到該位置上,并將數(shù)組末尾的標(biāo)志remain減1
30??????????*?而下標(biāo)隨機數(shù)的取值一直是在remain范圍之內(nèi)的
31??????????*/
32?????????for?(int?i?=?0;?i?<?card1.length;?i++)?{
33?????????????rand_index?=?Math.abs(rand.nextInt()?%?remain);
34?????????????result[i]?=?card1[rand_index];
35?????????????card1[rand_index]?=?card1[remain?-?1];
36?????????????remain--;
37?????????}
38?
39?????????System.out.println("\n\n");
40?????????for?(int?i?=?0;?i?<?result.length;?i++)?{
41?????????????System.out.print(result[i]?+?"\t");
42?????????????if?((i?+?1)?%?10?==?0)
43?????????????????System.out.println();
44?????????}
45?????}

筆記二:
初始化一個 TiledLayer 地圖,一般情況下的 TiledLayer 地圖只是一個二維數(shù)組,這個方法只是將這個二維數(shù)組正確地轉(zhuǎn)化成期望的地圖。
?1?/**
?2??*?@parm?array?代表地圖的數(shù)組
?3??*/
?4?public?void?initMap(int[][]?array)?{
?5?????map?=?new?TiledLayer(array[0].length,?array.length,?image,?w,?h);
?6?????for?(int?i?=?0;?i?<?array.length;?i++)?{
?7????????for?(int?j?=?0;?j?<?array[0].length;?j++)?{
?8????????????map.setCell(j,?i,?array[i][j]);
?9????????}
10?????}
11?}
這個方法的關(guān)鍵之處在于調(diào)用 構(gòu)造方法和 setCell() 方法時前兩個參數(shù)的順序。

筆記三:
關(guān)于一個J2ME程序的框架,在第一次寫J2ME的游戲時,只是感覺一頭霧水。下面這個是總結(jié)的一點點東東:

MIDlet
  GameCanvas gameCanvas;
  GameThread gameThread;//如果有其它的一些事情,可以在此定義更多的線程,并在 startApp() 方法內(nèi)啟動線程
  Display display;

  startApp(){
    gameThread.start();
    display.setCurrent(gameCanvas);//如果有必要,可以調(diào)整顯示對象
  }
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
GameCanvas
  LayerManager layerManager;

  GameCanvas(){
    super(false);
    layerManager = new LayerManager(this);
  }

  paint(Graphics g){
    switch(gameState){
      case GAMING:
        layerManager.paint(g, x_view, y_view);
    }
  }

  refresh(){
    layerManager.refresh();
    zepaint();
  }

  doKeyEvent(){
    int keyState = this.getKeyStates();
    switch(gameState){
      case GAMING:
        layerManager.doKeyEvent(keyState);
        break;
??????????? case ...:(other state)
        //畫面變化不大/非游戲狀態(tài)下,調(diào)用本類的事件處理方法
        break;
    }
  }

  zepaint(){
    paint(g);
    flushGraphics();
  }

  處理靜止畫面在本類中

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
?LayerManager
  GameCanvas gameCanvas;

  LayerManager(GameCanvas gameCanvas){}

  refresh(){
   ...refresh sprites...
  }

  doKeyEvent(int key){
    switch(key){
      case ...:
        handle data;
    }
  }

  paint(Graphics g, int x, y){
    super();
   ...paint sprites...
  }
? 很多程序會只調(diào)用 append(Layer) 方法而不重載父類的 paint(Graphics, int, int) 方法,同樣可以實現(xiàn)游戲中的繪畫功能。而當(dāng)用的是 TiledLayer 作背景時,我還不知道如果重載該方法 -_-! 本質(zhì)上是對坐標(biāo)系的認(rèn)識不清!
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
GameThread
  GameCanvas gameCanvas;
  GameThread(GameCanvas gameCanvas){}
  run(){
    while(true){
      gameCanvas.doKeyEvent();
      gameCanvas.refresh();
      Thread.sleep(100);
    }
  }
------------------------
  這只是我一般程序里的框架,可不是死框架,但從我接觸過的來看,這個框架還是比較經(jīng)典的。

  如此的筆記希望讓別人能夠看懂。