<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java究竟怎么玩?

      天地程序已定棋,人間大數(shù)待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理
       沒有標題寫的那么大……真要用Java重寫太閣五不說別的,光整理原圖就夠累死我的……

      游戲截圖:



       只是一個太閣五中加農(nóng)業(yè)水平小游戲的再現(xiàn)……用本人loonframework-game包進行圖形處理,算是一個對jar包的測試程序,完整程序下載地址,僅將使用到的類和圖形打包:

      http://looframework.sourceforge.net/download/Tg.jar

      源碼如下:

      TgIrrigationScript.java
      package org.loon.framework.test.tg;

      import java.awt.Color;
      import java.awt.Frame;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Panel;
      import java.awt.event.KeyEvent;
      import java.awt.event.KeyListener;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      import java.util.Random;

      import javax.swing.JOptionPane;


      import org.loon.framework.game.collection.SimpleArray;
      import org.loon.framework.game.image.Bitmap;

      /**
       * <p>
       * Title: LoonFramework
       * </p>
       * <p>
       * Description:[太閣立志傳小游戲Java模擬之水渠貫通]loonframework-game包由于標準類及接口未完成暫不開源(我懶……目前只完成大約45%而已|||三月沒動……)
       * </p>
       * <p>
       * Copyright: Copyright (c) 2007
       * </p>
       * <p>
       * Company: LoonFramework
       * </p>
       * 
       * 
      @author chenpeng
       * @email:ceponline@yahoo.com.cn
       * 
      @version 0.1
       
      */

      public class TgIrrigationScript extends Panel implements KeyListener {

          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;

          
      // 生成緩存用背景Image
          Image _screen = new Bitmap(6404801).getImage();

          
      //獲得畫布
          Graphics _graphics = _screen.getGraphics();

          
      final private int _rs = 6;

          
      private int[][] _chess = null;

          
      private int[] _obj_block = null;
          
      // Bitmap為loonframework提供類,內(nèi)部混合封裝了Image和BufferedImage,提供了通用的處理方式
          
      // 背景圖
          Bitmap _back_bitmap = null;

          
      // 出水圖1
          Bitmap _water_start = null;

          
      // 出水圖2
          Bitmap _water_start2 = null;

          
      // 左邊框圖
          Bitmap _left_box = null;

          
      // 左側(cè)輔助框
          Bitmap[] _leftnew_sprites = null;

          
      // 磚塊地圖
          Bitmap[][] _character_sprites = null;

          
      // 光標
          Bitmap _cursor = null;

          
          Bitmap bitmap 
      = null;

          
      /**
           * 構(gòu)造函數(shù)
           *
           
      */

          
      public TgIrrigationScript() {
              initialize();
          }


          
      /**
           * 初始化
           *
           
      */

          
      public void initialize() {
              
              setBackground(Color.BLACK);
              setSize(
      640480);

              _leftnew_sprites 
      = new Bitmap[4];

              _character_sprites 
      = new Bitmap[_rs][_rs];

               _back_bitmap 
      = new Bitmap("./image/pano.png");

               _water_start 
      = new Bitmap("./image/water_start.png");

               _water_start2 
      = new Bitmap("./image/spr16.png");

               _left_box 
      = new Bitmap("./image/left_box.png");

               _cursor 
      = new Bitmap("./image/choose_box.png");

               bitmap 
      = new Bitmap("./image/mud.png");
              
      // 出水圖繪制坐標
              _water_start.setDrawXY(2722);
              
      // 左邊框繪制坐標
              _left_box.setDrawXY(2520);
              _water_start2.setDrawXY(
      30845);
              
      //游標繪制坐標
              _cursor.setDrawXY(30891);
              
      for (int i = 0; i < _leftnew_sprites.length; i++{
                  _leftnew_sprites[i] 
      = new Bitmap("./image/mud.png");
                  _leftnew_sprites[i].setDrawXY(
      42204 - i * 56);
              }

              _leftnew_sprites[
      0].setDrawY(212);
              
      for (int i = 0; i <_rs; i++{
                  
      for (int j = 0; j < _rs; j++{
                      _character_sprites[i][j] 
      = new Bitmap("./image/mud.png");
                      _character_sprites[i][j].setDrawXY(i 
      * 48 + 164, j * 48 + 91);
                  }

              }


               _chess 
      = new int[_rs][_rs];

               _obj_block 
      = new int[4];
                  
      // 左側(cè)輔助欄讀取圖形
                  for (int i = 0; i < 4; i++{
                      down();
                  }

              
      // 設(shè)定監(jiān)聽
              setFocusable(true);
              addKeyListener(
      this);
          }


          
      public void update(Graphics g) {
              paint(g);
          }


          
      public void paint(Graphics g) {
          

              
      // 背景繪制
              _back_bitmap.draw(_graphics);
              
      // 出水圖繪制
              _water_start.draw(_graphics);
              
      //
              _water_start2.draw(_graphics);
              
      // 左邊框圖繪制
              _left_box.draw(_graphics);
              
      // 左側(cè)輔助框繪制
              for (int i = 0; i < _leftnew_sprites.length; i++{
                  _leftnew_sprites[i].draw(_graphics);
              }

              
      // 繪制磚塊
              for (int i = 0; i < _character_sprites.length; i++{
                  
      for (int j = 0; j < _character_sprites[i].length; j++{
                      _character_sprites[i][j].draw(_graphics);
                  }

              }

              
      // 繪制選中光標
              _cursor.draw(_graphics);
              g.drawImage(_screen, 
      00this);
          }


          

          
      public void down() {
              
      int steps = 0;
              _obj_block[
      0= _obj_block[1];
              _leftnew_sprites[
      0].setBufferedImage(_leftnew_sprites[1]
                      .getBufferedImage());
              _obj_block[
      1= _obj_block[2];
              _leftnew_sprites[
      1].setBufferedImage(_leftnew_sprites[2]
                      .getBufferedImage());
              _obj_block[
      2= _obj_block[3];
              _leftnew_sprites[
      2].setBufferedImage(_leftnew_sprites[3]
                      .getBufferedImage());
              
      if (steps < (_rs * _rs)) {
                  
      // 位圖
                  int[] tmparr = new int[] {3,5,6,7,9,10,11,12,13,14,15};
                  
      // 隨即選取
                  int tmpint = tmparr[new Random().nextInt(11)];

                  _obj_block[
      3= tmpint;

                  _leftnew_sprites[
      3].setBufferedImage(new Bitmap("./image/spr"
                          
      + tmpint + ".png").getBufferedImage());
              }
       else {
                  _obj_block[
      3= 0;
                  _leftnew_sprites[
      3].setBufferedImage(bitmap.getBufferedImage());
              }

              steps 
      += 1;
          }


          
      /**
           * 放下事件處理
           * 
      @param x
           * 
      @param y
           
      */

          
      public void putCase(int x, int y) {
              
      if (this._chess[x][y] == 0{
                  _character_sprites[x][y].setBufferedImage(_leftnew_sprites[
      0]
                          .getBufferedImage());
                  _chess[x][y] 
      = _obj_block[0];
                  down();
                  
      //_obj_block[0]為最后的渠道方塊,所以為0時代表數(shù)據(jù)讀完
                  if (_obj_block[0== 0{
                      endCase();
                  }

              }

          }



          
      /**
           * 判斷選中圖形能否貫通
           * 
      @param x
           * 
      @param y
           * 
      @param dire
           * 
      @return
           
      */

          
      public boolean crossInclude(int x, int y, int dire) {
              
      boolean flag = false;

              
      switch (dire) {
              
      case 1:
                  flag 
      = SimpleArray.include("3,5,7,9,11,13,15", _chess[x][y]);
                  
      break;
              
      case 2:
                  flag 
      = SimpleArray.include("3,6,7,10,11,14,15", _chess[x][y]);
                  
      break;
              
      case 3:
                  flag 
      = SimpleArray.include("5,6,7,12,13,14,15", _chess[x][y]);
                  
      break;
              
      case 4:
                  flag 
      = SimpleArray.include("9,10,11,12,13,14,15", _chess[x][y]);
                  
      break;
              }


              
      return flag;
          }


          
      public int tableToObject(int x, int y) {
              
      return (y * _rs) + x;
          }


          
      public int[] objectToTable(int pos) {
              
      int iy = pos / _rs;
              
      int ix = pos - (iy * _rs);
              
      return new int[] { ix, iy };
          }




          
      public void keyPressed(KeyEvent e) {
              
      int keyCode = e.getKeyCode();

              
      switch (keyCode) {

              
      case KeyEvent.VK_LEFT:

                  
      if (this._cursor.getDrawX() > 164{
                      _cursor.setDrawX(_cursor.getDrawX() 
      - 48);
                  }


                  
      break;

              
      case KeyEvent.VK_RIGHT:

                  
      if (this._cursor.getDrawX() < (_rs * 48 + 164 - 48)) {
                      _cursor.setDrawX(_cursor.getDrawX() 
      + 48);
                  }

                  
      break;

              
      case KeyEvent.VK_UP:

                  
      if (this._cursor.getDrawY() > 91{
                      _cursor.setDrawY(_cursor.getDrawY() 
      - 48);
                  }


                  
      break;

              
      case KeyEvent.VK_DOWN:
                  
      if (this._cursor.getDrawY() < (_rs * 48 + 91 - 48)) {
                      _cursor.setDrawY(_cursor.getDrawY() 
      + 48);
                  }


                  
      break;

              
      case KeyEvent.VK_ENTER:
                  
                  putCase((_cursor.getDrawX() 
      - 164/ 48,
                          (_cursor.getDrawY() 
      - 91/ 48);
                  
                  
      break;
              
      case KeyEvent.VK_ESCAPE:
                  endCase();
                  
      break;

              }


              repaint();

          }


          
      public void keyReleased(KeyEvent e) {

          }


          
      public void keyTyped(KeyEvent e) {


          }


          
      public void endCase() {

              
      int allscore = 0;
              
      int allsum = _rs * _rs;
              
      //SimpleArray為loonframework-game提供集合類,以字符串方式操作字符數(shù)組
              SimpleArray sia1=new SimpleArray(0,35);
              SimpleArray sia2
      =new SimpleArray();
              _water_start2.setBufferedImage(
      new Bitmap("./image/wspr16.png")
                      .getBufferedImage());
              
      if (crossInclude(301)) {
                  sia2.pushAll(sia1.delete(tableToObject(
      30)));
              }

              
      while ((sia2.all()!=null)) {
                  
      int tmp = Integer.parseInt(sia2.pop());
                  
      int[] result = objectToTable(tmp);
                  
      int tx = result[0];
                  
      int ty = result[1];
                    
      if(crossInclude(tx,ty,1&& ty > 0){
                        
      if(crossInclude(tx,ty-1,3&& (sia1.include(tableToObject(tx,ty-1)))){
                            sia2.pushAll(sia1.delete(tableToObject(tx,ty
      -1)));
                        }

                    }

                    
      if(crossInclude(tx,ty,2&& tx < _rs-1){
                        
      if(crossInclude(tx+1,ty,4&& (sia1.include(tableToObject(tx+1,ty)))){
                            sia2.pushAll(sia1.delete(tableToObject(tx
      +1,ty))); 
                        }

                      
                    }

                    
      if(crossInclude(tx,ty,3&& ty < _rs-1){
                        
      if(crossInclude(tx,ty+1,1&& sia1.include(tableToObject(tx,ty+1))){
                            sia2.pushAll(sia1.delete(tableToObject(tx,ty
      +1)));
                        }

                    }

                    
      if(crossInclude(tx,ty,4&& tx > 0 ){
                        
      if(crossInclude(tx-1,ty,2&& sia1.include(tableToObject(tx-1,ty))){
                            sia2.pushAll(sia1.delete(tableToObject(tx
      -1,ty))); 
                        }

                    }

              
                  
      int tmpint = _chess[tx][ty];
                  
                  _character_sprites[tx][ty].setBufferedImage(
      new Bitmap(
                          
      "./image/wspr" + tmpint + ".png").getBufferedImage());
                  allscore 
      = allscore+1;

              }


              
      // 刷新
              repaint();
              
      int pscore = allscore * 100 / allsum;
              
      int rscore = pscore < 70 ? 1 : (pscore < 82 ? 2 : (pscore < 92 ? 3
                      : (pscore 
      < 100 ? 4 : 5)));
              String result 
      = "";
              
      switch (rscore) {
              
      case 1:
                  result 
      = "完成率:"
                          
      + pscore
                          
      + "%  級別:[小白] 你在挑戰(zhàn)小白的極致嗎?!!!!";
                  
      break;
              
      case 2:
                  result 
      = "完成率:" + pscore
                          
      + "%  級別:[庸才] 嗯,我想你對這個游戲的規(guī)則已經(jīng)基本了解,剩下的可能只是積累經(jīng)驗了。";
                  
      break;
              
      case 3:
                  result 
      = "完成率:"
                          
      + pscore
                          
      + "%  級別:[中智] 作為一個普通人,我覺得你在這個游戲來說做的已經(jīng)不錯了,但是你相信你或許是個天才么?記得不要只看著即將落下的那塊,也要多考慮以后的情況喲^_^";
                  
      break;
              
      case 4:
                  result 
      = "完成率:"
                          
      + pscore
                          
      + "%  級別:[上品] 你離開盡善盡美只有一步之遙,除了運氣以外,你可能還需要掌握一個訣竅:為最后幾塊留下一個萬能的空格。";
                  
      break;
              
      case 5:
                  result 
      = "完成率:" + pscore + "%  級別:[天之驕子] 想當年我玩太閣,也就這樣了……(^^)b";
                  
      break;

              }

          
              
      //雖然做了Message類,但是為了演示打包方便所以不用……(其實是關(guān)聯(lián)太雜不好單用|||)
              JOptionPane.showMessageDialog(this,result, "完成", JOptionPane.INFORMATION_MESSAGE); 
          }

          
          
      public static void main(String[] args) {
              java.awt.EventQueue.invokeLater(
      new Runnable() {
                  
      public void run() {
                      Frame frm 
      = new Frame("Java模擬太閣立志傳灌溉游戲");
                      frm.add(
      new TgIrrigationScript());
                      frm.setResizable(
      false);
                      frm.setSize(
      640480);
                      frm.addWindowListener(
      new WindowAdapter(){
                          
      public void windowClosing(WindowEvent e){
                              System.exit(
      0);
                          }

                      }
      );
                      frm.setLocationRelativeTo(
      null);
                      frm.setVisible(
      true);
                  }

              }
      );
          }


      }


      PS:自從9月發(fā)布loonframework-game包的演示例子以后,超過3個月一直沒有連續(xù)的時間寫,所以一直沒動手完成,目前完成率只有大約45%……爭取過年寫,明年年底前一定發(fā)布整套源碼……殘念……||||
      posted on 2008-01-23 10:38  cping  閱讀(259)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 不卡一区二区三区四区视频| 国产午夜亚洲精品国产成人| 日韩狼人精品在线观看| 在线a级毛片无码免费真人| 91色老久久精品偷偷性色| 亚洲av午夜福利精品一区二区| 在线a亚洲老鸭窝天堂| 少妇被粗大的猛烈进出动视频| 风韵丰满熟妇啪啪区老熟熟女| 99热久久这里只有精品| 99视频在线精品国自产拍| 久久毛片少妇高潮| 马公市| 樱花草视频www日本韩国| 国产在线精品中文字幕| 国产一区二区三中文字幕| 国产福利在线观看免费第一福利| 久久精品中文字幕免费| 久久国产乱子精品免费女| 日本高清视频网站www| 亚洲第一区二区三区av| 国产亚洲精品2021自在线| 国内精品久久人妻无码不卡| 亚洲性日韩精品一区二区| 亚洲黄色成人网在线观看| 成全影视大全在线观看| 浮山县| 亚洲av一本二本三本| 人妻av中文字幕无码专区| 丝袜人妖av在线一区二区| 日本一区二区三区专线| 日韩美女一区二区三区视频| 久久精品国产再热青青青| 亚洲天堂视频网| 人妻少妇无码精品专区| 四虎库影成人在线播放| 国产精品中文字幕日韩| 成人国产永久福利看片| 久久国产免费观看精品3| 国产桃色在线成免费视频| 日韩av天堂综合网久久|