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

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

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

      Java究竟怎么玩?

      天地程序已定棋,人間大數待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理
      這是一個吃豆游戲的Java實現,具體代碼較多請下載文件。

      下載地址:http://download.csdn.net/source/396925



      package org.loon.test;

      import java.awt.Color;
      import java.awt.Event;
      import java.awt.Frame;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Insets;
      import java.awt.MediaTracker;
      import java.awt.Panel;
      import java.awt.Toolkit;
      import java.awt.event.WindowAdapter;
      import java.awt.event.WindowEvent;
      import java.awt.image.BufferedImage;
      import java.awt.image.VolatileImage;

      /**
       * 
       * <p>
       * Title: LoonFramework
       * </p>
       * <p>
       * Description:
       * </p>
       * <p>
       * Copyright: Copyright (c) 2008
       * </p>
       * <p>
       * Company: LoonFramework
       * </p>
       * <p>
       * License: 
      http://www.apache.org/licenses/LICENSE-2.0
       * </p>
       * 
       * 
      @author chenpeng
       * @email:ceponline@yahoo.com.cn
       * 
      @version 0.1
       
      */

      class Timer implements Runnable {
          Pacgame ap;

          
      int duration;

          
      private Thread myThread;

          
      private boolean loopf = true;

          
      private long tickCount;

          
      public Timer(Pacgame ap, int duration) {
              
      this.ap = ap;
              
      this.duration = duration;
          }


          
      public Timer(Pacgame ap) {
              
      this(ap, 16);
          }


          
      public void on() {
              myThread 
      = new Thread(this);
              myThread.start();
          }


          
      public void off() {
              loopf 
      = false;
          }


          
      public void run() {
              loopf 
      = true;
              tickCount 
      = System.currentTimeMillis();
              
      while (loopf) {
                  
      try {
                      Thread.sleep(duration);
                  }
       catch (Exception e) {
                      e.printStackTrace();
                  }

                  ap.notifyFrame();
              }

          }


          
      public int frames() {
              
      long nowTick = System.currentTimeMillis();
              
      int frame = (int) (nowTick - tickCount) / duration;
              
      if (frame <= 0{
                  frame 
      = 1;
                  tickCount 
      = nowTick;
              }
       else if (frame > 5{
                  frame 
      = 5;
                  tickCount 
      = nowTick;
              }
       else {
                  tickCount 
      += frame * duration;
              }

              
      return frame;
          }

      }


      public class Pacgame extends Panel implements Runnable {
          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;

          
      private static int WIDTH = 256;

          
      private static int HEIGHT = 224;

          Thread thread;

          
      //構造一個雙緩沖的、可變的image
          VolatileImage offImage;

          Image bg, bg0;

          CGloader loader;

          MazeManager mzmanager;

          MapManager emanager;

          SpriteManager spmanager, chipmanager;

          MonsterSprite redmon, ao, pink, monster;

          PacSprite pac;

          AttractManager atMng;

          Timer timer;

          
      int key = 0;

          
      int score;

          
      int number1;

          
      boolean loadOK = false;

          
      boolean isAttr = false;

          
      public void init() {
              ClassLoader cl 
      = getClass().getClassLoader();
              Toolkit tk 
      = Toolkit.getDefaultToolkit();
              bg0 
      = tk.createImage(cl.getResource("main.png"));
              bg 
      = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB_PRE);
              MediaTracker mt 
      = new MediaTracker(this);
              mt.addImage(bg0, 
      0);
              
      try {
                  mt.waitForID(
      0);
              }
       catch (Exception e) {
                  e.printStackTrace();
              }

              loader 
      = new CGloader("pacchr.png"this);
              loader.setAlpha(
      08);

              mzmanager 
      = new MazeManager();

              emanager 
      = new MapManager();

              spmanager 
      = new SpriteManager(4);
              chipmanager 
      = new SpriteManager(5);

              pac 
      = new PacSprite(1020, loader);
              redmon 
      = new RedMonster(1010, mzmanager, loader);
              redmon.setTarget(pac);
              spmanager.add(redmon);
              ao 
      = new BlueMonster(913, mzmanager, loader);
              ao.setTarget(pac);
              spmanager.add(ao);
              pink 
      = new PinkMonster(1013, mzmanager, loader);
              pink.setTarget(pac);
              spmanager.add(pink);
              monster 
      = new Monster(1113, mzmanager, loader);
              monster.setTarget(pac);
              spmanager.add(monster);
              
      for (int i = 0; i < 5; i++{
                  chipmanager.add(
      new ChipSprite(i * 160, loader, i * 1613016,
                          
      16));
              }


              atMng 
      = new AttractManager(loader);
              timer 
      = new Timer(this16);

              setBackground(Color.black);
              setSize(WIDTH, HEIGHT);

              offImage 
      = createVolatileImage(WIDTH, HEIGHT);

          }


          
      public void paint(Graphics g) {
              
      if (!loadOK)
                  
      return;
              
      do {
                  
      int returnCode = offImage.validate(getGraphicsConfiguration());
                  
      if (returnCode == VolatileImage.IMAGE_INCOMPATIBLE){
                      offImage 
      = createVolatileImage(WIDTH, HEIGHT);
                  }

                  Graphics volG 
      = offImage.getGraphics();
                  volG.drawImage(bg, 
      00this);
                  spmanager.draw(volG, 
      this);
                  pac.draw(volG, 
      this);
                  chipmanager.draw(volG, 
      this);
                  
      if (isAttr)
                      atMng.draw(volG, 
      this);
                  volG.dispose();
                  g.drawImage(offImage, 
      00this);
              }
       while (offImage.contentsLost());
          }


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


          
      public void start() {
              System.gc();
              
      if (thread == null{
                  thread 
      = new Thread(this);
                  thread.start();
              }

          }


          @SuppressWarnings(
      "deprecation")
          
      public void stop() {
              
      if (thread != null{
                  thread.stop();
                  thread 
      = null;
              }

          }


          
      public void run() {

              
      while (true{
                  
      // MAIN LOOP
                  score = 0;
                  number1 
      = 3;
                  
      int stage = 1;
                  esaInit();
                  loadOK 
      = true;
                  
      while (number1 > 0{
                      
      while (gameMain(stage) == 2{
                          
      if (stage == 2)
                              gameTheater();
                          stage
      ++;
                          number1
      ++;// 1:DEAD 2:CLEAR
                          esaInit();
                      }

                  }

                  
      // GAME OVER
                  isAttr = true;
                  spmanager.setShow(
      false);
                  pac.setShow(
      false);
                  atMng.player 
      = true;
                  atMng.ready 
      = false;
                  atMng.gameover 
      = true;
                  repaint();

                  timer.on();
                  key 
      = 0;
                  
      while (true{
                      
      if (key > 0)
                          
      break;
                      waitFrame();
                  }

                  timer.off();
                  atMng.player 
      = false;
                  atMng.gameover 
      = false;
              }


          }


          
      public void esaInit() {
              Graphics g 
      = bg.getGraphics();
              g.drawImage(bg0, 
      00null);
              g.dispose();
              emanager.init(bg);
          }


          
      public int gameMain(int stage) {
              atMng.init(bg, score, number1);
              spmanager.init();
              pac.init();
              
      // 游戲狀態 1:DEAD 2:CLEAR
              int gamestat = 0;
              
      int renzoku = 0;
              
      boolean ispower = false;
              
      boolean iseyesnd = false;
              Sprite chip;

              isAttr 
      = true;
              
      int wait;
              
      if ((score == 0&& (number1 == 3)) {
                  wait 
      = 2000;
              }
       else {
                  wait 
      = 1000;
              }


              spmanager.setShow(
      false);
              pac.setShow(
      false);
              atMng.player 
      = true;
              atMng.ready 
      = true;
              repaint();
              sleep(wait);

              atMng.setBattle(
      --number1);
              spmanager.setShow(
      true);
              pac.setShow(
      true);
              atMng.player 
      = false;
              atMng.ready 
      = true;
              repaint();
              sleep(wait);
              isAttr 
      = false;

              
      int time = 0;
              timer.on();
              
      int frame = 1;
              
      while (gamestat == 0{
                  
      for (int l = 0; l < frame; l++{
                      
      int score0 = score;
                      
      if (time == 60 * 55{
                          spmanager.setNawabari(
      false);
                      }
       else if (time == 60 * 50{
                          spmanager.setNawabari(
      true);
                      }
       else if (time == 60 * 30{
                          spmanager.setNawabari(
      false);
                      }
       else if (time == 60 * 25{
                          spmanager.setNawabari(
      true);
                      }
       else if (time == 60 * 5{
                          spmanager.setNawabari(
      false);
                      }

                      spmanager.run();
                      MonsterSprite hitmon 
      = spmanager.isMonsterHit(pac);
                      
      if (hitmon != null{
                          
      int state = hitmon.getState();
                          
      if (state == 0)
                              gamestat 
      = 1;
                          
      if (state == 1{
                              renzoku
      ++;
                              score 
      = score + (1 << renzoku) * 100;
                              chip 
      = chipmanager.getSprite(renzoku);
                              
      int x = hitmon.getX();
                              
      int y = hitmon.getY();
                              chip.setXY(x, y);
                              chip.setShow(
      true);
                              hitmon.setShow(
      false);
                              pac.setShow(
      false);

                              
      try {
                                  Thread.sleep(
      50);
                              }
       catch (Exception e) {
                              }


                              repaint();
                              
      for (int i = 0; i < 50; i++{
                                  
      try {
                                      Thread.sleep(
      10);
                                  }
       catch (Exception e) {
                                  }

                              }

                              chip.setShow(
      false);
                              hitmon.setShow(
      true);
                              pac.setShow(
      true);
                              hitmon.activity();
                              iseyesnd 
      = true;

                              
      if (ispower) {
                                  
      if (iseyesnd)
                                      
      try {
                                          Thread.sleep(
      10);
                                      }
       catch (Exception e) {
                                      }


                              }

                          }

                      }


                      pac.setKey(key);
                      
      int esa = pac.run(mzmanager, emanager);
                      
      if (esa > 0{
                          
      int remain = emanager.getRemain();
                          score 
      += 10;
                          
      if (remain <= 0)
                              gamestat 
      = 2;
                      }

                      
      if (esa == 2{
                          redmon.state();
                          ao.state();
                          pink.state();
                          monster.state();
                          pac.powerup();
                          renzoku 
      = 0;
                          score 
      += 40;
                          ispower 
      = true;
                      }


                      
      if (ispower) {
                          
      if (!pac.isPower()
                                  
      || ((redmon.getState() != 1)
                                          
      && (ao.getState() != 1)
                                          
      && (pink.getState() != 1&& (monster
                                          .getState() 
      != 1))) {

                              ispower 
      = false;
                          }

                      }

                      
      if (iseyesnd) {
                          
      if ((redmon.getState() != 2&& (ao.getState() != 2)
                                  
      && (pink.getState() != 2)
                                  
      && (monster.getState() != 2)) {

                              iseyesnd 
      = false;
                          }

                      }


                      
      if (score != score0) {
                          atMng.setScore(score);
                      }

                      time
      ++;
                      score0 
      = score;
                      
      if (gamestat > 0)
                          
      break;
                  }
       // FPS LOOP END

                  repaint();
                  frame 
      = waitFrame();
                  System.gc();
              }

              timer.off();

              
      try {
                  Thread.sleep(
      2000);
              }
       catch (Exception e) {
              }


              
      return gamestat;
          }


          
      public void gameTheater() {
              Graphics g 
      = bg.getGraphics();
              g.setColor(Color.black);
              g.fillRect(
      00, WIDTH, HEIGHT);
              g.dispose();

              
      int pacx = WIDTH;
              
      int p;
              
      int index = 288;
              spmanager.setShow(
      false);
              pac.init();
              pac.setShow(
      true);
              redmon.init();
              redmon.setShow(
      true);

              timer.on();
              
      int frame = 1;
              
      int i = 0;
              
      while (i < 380{
                  
      for (int j = 0; j < frame; j++{
                      p 
      = 2;
                      
      switch ((i >> 2% 4{
                      
      case 1:
                          p 
      += 4;
                          
      break;
                      
      case 3:
                          p 
      = 8;
                          
      break;
                      }

                      pac.setP(p);
                      pac.setXY(pacx
      --100);
                      redmon.setXY(index
      --100);
                      i
      ++;
                      
      if (i >= 360)
                          
      break;
                  }

                  repaint();
                  frame 
      = waitFrame();
              }


              pacx 
      = -32;
              redmon.state();
              index 
      = 0;

              i 
      = 0;
              
      while (i < 380{
                  
      for (int j = 0; j < frame; j++{
                      p 
      = 0;
                      
      switch ((i >> 2% 4{
                      
      case 1:
                          p 
      += 4;
                          
      break;
                      
      case 3:
                          p 
      = 8;
                          
      break;
                      }

                      pac.setP(p);
                      pac.setXY(pacx
      ++100);
                      redmon.setXY(index
      ++100);
                      i
      ++;
                      
      if (i >= 360)
                          
      break;
                  }

                  repaint();
                  frame 
      = waitFrame();
              }


              timer.off();
          }


          
      public void sleep(int tm) {
              
      try {
                  Thread.sleep(tm);
              }
       catch (Exception e) {
                  e.printStackTrace();
              }

          }


          
      public boolean handleEvent(Event e) {
              
      switch (e.id) {
              
      case Event.KEY_PRESS:
              
      case Event.KEY_ACTION:
                  
      switch (e.key) {
                  
      case Event.RIGHT:
                      key 
      = 1;
                      
      break;
                  
      case Event.DOWN:
                      key 
      = 2;
                      
      break;
                  
      case Event.LEFT:
                      key 
      = 4;
                      
      break;
                  
      case Event.UP:
                      key 
      = 8;
                      
      break;
                  }

                  
      return true;
              
      case Event.KEY_RELEASE:
              
      case Event.KEY_ACTION_RELEASE:
              
      default:
              }

              
      return false;
          }


          
      /**
           * fps計算
           * 
           * 
      @return
           
      */

          
      private synchronized int waitFrame() {
              
      try {
                  wait();
              }
       catch (InterruptedException e) {
              }

              
      // 返回fps
              return timer.frames();
          }


          
      public synchronized final void notifyFrame() {
              notifyAll();
          }


          
      public static void main(String[] args) {
              
      final Pacgame ap = new Pacgame();
              ap.setSize(WIDTH, HEIGHT);
              Frame frm 
      = new Frame("Java吃豆游戲");
              frm.addWindowListener(
      new WindowAdapter() {
                  
      public void windowClosing(WindowEvent e) {
                      ap.stop();
                      System.exit(
      0);
                  }

              }
      );
              frm.addNotify();
              Insets inset 
      = frm.getInsets();
              
      int w0 = inset.left + inset.right;
              
      int h0 = inset.top + inset.bottom;
              frm.add(ap);
              frm.setSize(ap.getWidth() 
      + w0, ap.getHeight() + h0);
              frm.setResizable(
      false);
              frm.setLocationRelativeTo(
      null);
              frm.setVisible(
      true);
              ap.requestFocus();
              ap.init();
              ap.start();
          }


      }

      posted on 2008-03-27 12:03  cping  閱讀(482)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲AV蜜桃永久无码精品 | 日韩中文字幕国产精品| 国产精品亚洲综合网一区| 国产超级va在线观看视频| 亚洲熟妇久久精品| 拜泉县| 亚洲综合精品第一页| 六十路老熟妇乱子伦视频| 福鼎市| 丰满人妻被黑人猛烈进入| 精品综合久久久久久97| 久久久久免费看成人影片| 日韩高清国产中文字幕| 欧美疯狂xxxxbbbb喷潮| 亚洲高清aⅴ日本欧美视频| 午夜亚洲AV日韩AV无码大全| 国产在线午夜不卡精品影院| 亚洲激情av一区二区三区| 乱人伦人妻中文字幕| 亚洲欧洲一区二区综合精品| 精品亚洲国产成人av制服| 综合色一色综合久久网| 国产亚洲精品第一综合另类| 久久久久国产精品熟女影院| 国产一级二级三级毛片| 国内精品久久黄色三级乱| www亚洲精品| 中文字幕国产精品av| 好吊视频一区二区三区| 亚洲区一区二区三区精品| 国产高清在线男人的天堂| 99久久精品久久久久久婷婷| 女高中生强奷系列在线播放| 日韩精品亚洲aⅴ在线影院| 国产偷窥熟女精品视频大全 | 色吊丝中文字幕在线观看| 亚洲AV成人无码久久精品四虎| 精品久久久久久成人AV| 人妻丰满熟妇av无码处处不卡| 果冻传媒色av国产在线播放| 久久天天躁狠狠躁夜夜不卡|