最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java制作簡單的坦克大戰(zhàn)

 更新時間:2015年03月30日 14:45:06   投稿:hebedich  
坦克大戰(zhàn)是我們小時候玩紅白機(jī)時代的經(jīng)典游戲,看到有不少小伙伴都使用各種語言實現(xiàn)了一下,手癢癢,也使用java做的一個比較簡單的坦克大戰(zhàn),主要面向于學(xué)過Java的人群,與學(xué)了一段時間的人,有利于面向?qū)ο笏枷氲奶岣?,推薦給大家。

詳情請參照注釋,這里就不多廢話了,實現(xiàn)一下兒時的經(jīng)典而已。

Blood.java

package com.hkm.TankWar;
import java.awt.*;
/**
 * 血塊類,我方坦克吃了可回血;
 * @author Hekangmin
 *
 */
public class Blood {
  private int x,y,w,h;//血塊的位置和寬度高度;
   
  private TankWarClient tc;
   
  private int step=0;//紀(jì)錄血塊移動的步數(shù);
   
  private boolean live=true;
  public boolean isLive() {
    return live;
  }
 
  public void setLive(boolean live) {
    this.live = live;
  }
    /**
     * 紀(jì)錄血塊的位置;
     */
  private int[][] pos={{400,300},{400,320},{420,320},{440,300},{440,330},{480,400},{520,400},{540,400}};
        
  public Blood()
  {
    x=pos[0][0];
    y=pos[0][1];
    w=h=18;
  }
   
  public void draw(Graphics g)
  {
    if(!live) return;
     
    Color c=g.getColor();
    g.setColor(Color.CYAN);
    g.fillOval(x, y, w, h);
    g.setColor(c);
     
    move();
  }
  /**
   * 移動血塊
   */
  public void move()
  {
    step++;
    if(step>=pos.length) step=0;
    else{
    x=pos[step][0];
    y=pos[step][1];
    }
  }
   
   
  public Rectangle getRect()
  {
    return new Rectangle(x,y,w,h);
  }
   
   
}

Explode.java

package com.hkm.TankWar;
import java.awt.*;
/**
 * 爆炸類
 * @author Hekangmin
 *
 */
public class Explode {
  private int x,y;//爆炸發(fā)生的位置
   
  private boolean Live=true;
   
  int dia[]={4,8,12,16,32,40,20,14,4};//用園模擬,代表圓的直徑;
   
  int step=0;//區(qū)別移到第幾個直徑
   
  private TankWarClient tc;//持有引用
   
  public Explode(int x,int y,TankWarClient tc)
  {
    this.x=x;
    this.y=y;
    this.tc=tc;
  }
  public void draw(Graphics g)
  {
    if(!Live)
    {
      tc.explodes.remove(this);
      return;
    }
    if(step==dia.length)//如果到了最后一個直徑爆炸死亡;
    {
      Live=false;
      step=0;
      return;
    }
    Color c=g.getColor();
    g.setColor(Color.YELLOW);
    g.fillOval(x, y, dia[step], dia[step]);
    g.setColor(c);
    step++;
  }
   
}

Missile.java

package com.hkm.TankWar;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.KeyEvent;
import java.util.List;
/**
 * 子彈類
 * @author Hekangmin
 *
 */
 public class Missile {
    private int x,y;//子彈的位置
    private Tank.Direction dir;//坦克方向
     
    private static final int XSPEED=10;//坦克x方向的移動速度,
    private static final int YSPEED=10;//坦克y方向的移動速度,
     
    public static final int WIDTH=10;
    public static final int HEIGHT=10;
     
    private boolean Live=true;//判斷子彈是否活著
     
    private boolean good;//區(qū)分?jǐn)耻娮訌椇臀臆娮訌?
     
    private TankWarClient tc;
     
  public Missile(int x, int y, Tank.Direction dir) {
    this.x = x;
    this.y = y;
    this.dir = dir;
  }
   
  public Missile(int x,int y,boolean good,Tank.Direction dir,TankWarClient tc)
  {
    this(x,y,dir);
    this.good=good;//將坦克好壞的屬性與子彈還壞屬性設(shè)為相同;
    this.tc=tc;
  }
   
  /**
   * 畫出子彈
   * @param g為畫筆
   */
  public void draw(Graphics g)
  {
    if(!Live)
      {
      tc.missiles.remove(this);
      return;
      }
    Color c=g.getColor();
    if(good)
    {
      g.setColor(Color.BLUE);
    }
    else g.setColor(Color.ORANGE);
    g.fillOval(x, y, WIDTH, HEIGHT);
    g.setColor(c);
     
    move();
  }
   
  /**
   * 根據(jù)坦克的方向讓子彈移動
   */
  private void move() {
    switch(dir)
    {
    case L:
      x-=XSPEED;
      break;
    case LU:
      x-=XSPEED;
      y-=YSPEED;
      break;
    case U:
      y-=YSPEED;
      break;
    case RU:
      x+=XSPEED;
      y-=YSPEED;
      break;
    case R:
      x+=XSPEED;
      break;
    case RD:
      x+=XSPEED;
      y+=YSPEED;
      break;
    case D:
      y+=YSPEED;
      break;
    case LD:
      x-=XSPEED;
      y+=YSPEED;
      break;
    }
     
    if(x<0||y<0||x>TankWarClient.GAME_WIDTH||y>TankWarClient.GAME_HEIGHT)//子彈越界則讓其死亡;
    {
      Live=false;
    }
  }
   
   
  public boolean isLive()
  {
    return Live;
  }
 
  public Rectangle getRect()//獲取子彈的矩形區(qū)域;
  {
    return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);
  }
   
  /**
   * 判斷子彈與坦克碰撞;
   * @param t為坦克
   * @return返回true則表示發(fā)生碰撞,否則沒有碰撞;
   */
  public boolean hitTank(Tank t)
  {
    if(this.Live&&this.getRect().intersects(t.getRect())&&t.isLive()&&this.good!=t.isGood())
    {
      if(t.isGood())
      {
        t.setLife(t.getLife()-10);
        if(t.getLife()<=0) t.setLive(false); 
      }else{
        t.setLive(false);
      }
      this.Live=false;///將子彈設(shè)為死亡;
      Explode e=new Explode(x,y,tc);//發(fā)生爆炸;
      tc.explodes.add(e);
      return true;
       
    }
    return false;
  }
  /**
   * 判斷子彈與敵軍坦克相撞;
   * @param tanks敵軍坦克
   * @returntrue表示相撞,false沒有相撞;
   */
  public boolean hitTanks(List<Tank> tanks)
  {
    for(int i=0;i<tanks.size();i++)
    {
      if(hitTank(tc.tanks.get(i)))
      {
        return true;
      }
    }
     
    return false;
  }
   
  /**
   * 判斷子彈是否撞墻
   * @param w墻
   * @returntrue,撞上,false,未撞上;
   */
  public boolean hitsWall(Wall w)
  {
    if(this.Live&&this.getRect().intersects(w.getRect()))
    {
      Live=false;
      return true;
    }
    return false;
  }
   
   
}

Tank.java

package com.hkm.TankWar;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.util.*;
/**
 * 坦克類
 * @author Hekangmin
 *
 */
public class Tank {
  public static final int XSPEED=5;//坦克x方向速度
  public static final int YSPEED=5;
   
  public static final int WIDTH=30;
  public static final int HEIGHT=30;
   
  private BloodBar bb=new BloodBar();//血條
   
  private int life=100;
   
  public int getLife() {
    return life;
  }
 
  public void setLife(int life) {
    this.life = life;
  }
 
 
  private static Random r=new Random();
   
  private static int step=r.nextInt(12)+3;//定義一個數(shù)表示敵軍坦克隨機(jī)東的步數(shù);
   
  private boolean bL=false,bU=false,bR=false,bD=false;
   
  enum Direction{L,LU,U,RU,R,RD,D,LD,STOP};//利用枚舉類型定義坦克方向;
  private int x,y;
   
  private int oldX,oldY;//紀(jì)錄上一步坦克的位置;
   
  private boolean live=true;//判斷是否活著
   
  public boolean isLive() {
    return live;
  }
 
  public void setLive(boolean live) {
    this.live = live;
  }
 
 
  private boolean good;//坦克是好是壞
   
  public boolean isGood() {
    return good;
  }
 
 
  private Direction ptDir=Direction.D;//新增炮筒的方向;
   
  TankWarClient tc;//為了持有對方的引用以可以方便訪問其成員變量;
   
  Direction dir=Direction.STOP;//一開始將坦克方向設(shè)為stop;
   
   
   
  public Tank(int x,int y,boolean good,Direction dir,TankWarClient tc)
  {
    this.x=x;
    this.y=y;
    this.oldX=x;
    this.oldY=y;
    this.good=good;
    this.dir=dir;
    this.tc=tc;//持有對方的引用;
  }
   
   
  public void draw(Graphics g)
  {
    if(!live)//如果死亡則不再draw;
    {  
      if(!good)
      {
        tc.tanks.remove(this);
        if(tc.tanks.size()<5)//少于5輛坦克時添加坦克;
        {
          for(int i=0;i<10;i++)
          {
            int posX=r.nextInt(800);
            int posY=r.nextInt(600);
            tc.tanks.add(new Tank(posX,posY,false,Direction.D,tc));//使得坦克出現(xiàn)的位置隨機(jī)
          }
        }
      }
       
      return;
    }
     
    Color c=g.getColor();
    if(good) 
    {
      g.setColor(Color.RED);
      bb.draw(g);
    }
    else g.setColor(Color.BLACK);
    g.fillOval(x, y, WIDTH, HEIGHT);
    g.setColor(c);
     
    switch(ptDir)//畫出炮筒的方向;
    {
    case L:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x-10, y+Tank.HEIGHT/2);//畫出炮筒,畫一條直線代替;
      break;
    case LU:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x-7, y-7);
      break;
    case U:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH/2, y-10);
      break;
    case RU:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH+7, y-7);
      break;
    case R:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH+10, y+Tank.HEIGHT/2);
      break;
    case RD:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH+7, y+Tank.HEIGHT+7);
      break;
    case D:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH/2, y+Tank.HEIGHT+10);
      break;
    case LD:
       g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x-7, y+HEIGHT+7);
      break;
    }
    move();
  }
   
   
  public void move()
  {
    oldX=x;//紀(jì)錄坦克上一步的位置
    oldY=y;
     
    switch(dir)
    {
    case L:
      x-=XSPEED;
      break;
    case LU:
      x-=XSPEED;
      y-=YSPEED;
      break;
    case U:
      y-=YSPEED;
      break;
    case RU:
      x+=XSPEED;
      y-=YSPEED;
      break;
    case R:
      x+=XSPEED;
      break;
    case RD:
      x+=XSPEED;
      y+=YSPEED;
      break;
    case D:
      y+=YSPEED;
      break;
    case LD:
      x-=XSPEED;
      y+=YSPEED;
      break;
    case STOP:
      break;
    }
    if(this.dir!=Direction.STOP)
      this.ptDir=this.dir;
     
    /**
     * 防止坦克越界;
     */
    if(x<0) x=0;
    if(y<25) y=25;
    if(x+Tank.WIDTH>TankWarClient.GAME_WIDTH) x=TankWarClient.GAME_WIDTH-30;
    if(y+Tank.HEIGHT>TankWarClient.GAME_HEIGHT) y=TankWarClient.GAME_HEIGHT-30;
     
    if(!good)
    {
      Direction[] dirs=Direction.values();//將枚舉類型轉(zhuǎn)化成數(shù)組;
       
      if(step==0)
      {
        step=r.nextInt(12)+3;
        int rn=r.nextInt(dirs.length);//產(chǎn)生length以內(nèi)隨機(jī)的整數(shù);
        dir=dirs[rn];
      }
      step--;
      if(r.nextInt(40)>20) this.fire();//使敵軍坦克發(fā)射子彈;
    }
     
  }
   
  /**
   * 處理按鍵
   * @param e鍵盤事件;
   */
  public void KeyPressed(KeyEvent e)
  {
    int key=e.getKeyCode();
    switch(key)
    {
     
    case KeyEvent.VK_LEFT:
      bL=true;
      break;
    case KeyEvent.VK_RIGHT:
      bR=true;
      break;
    case KeyEvent.VK_UP:
      bU=true;
       break;
    case KeyEvent.VK_DOWN:
      bD=true;
      break;
    }
    locationDir();
  }
   
   
  public void keyReleased(KeyEvent e) {
    int key=e.getKeyCode();
    switch(key)
    {
    case KeyEvent.VK_CONTROL:
      fire();
      break;
    case KeyEvent.VK_LEFT:
      bL=false;
      break;
    case KeyEvent.VK_RIGHT:
      bR=false;
      break;
    case KeyEvent.VK_UP:
      bU=false;
       break;
    case KeyEvent.VK_DOWN:
      bD=false;
      break;
    case KeyEvent.VK_A:
      superFire();
      break;
    case KeyEvent.VK_F2:
      reBorn();
      break;
    }
    locationDir();
  }
   
  /**
   * 發(fā)射子彈
   * @return返回子彈類型
   */
  public Missile fire() {
    if(!live)
      return null;
    int mx=this.x+Tank.WIDTH/2-Missile.WIDTH/2;//計算子彈發(fā)射的位置;
    int my=this.y+Tank.HEIGHT/2-Missile.HEIGHT/2;
    Missile m=new Missile(mx,my,good,ptDir,this.tc);////根據(jù)炮筒方向發(fā)射子彈
    tc.missiles.add(m);
    return m;
  }
   
   
  public Missile fire(Direction dir)
  {
    if(!live)
      return null;
    int mx=this.x+Tank.WIDTH/2-Missile.WIDTH/2;
    int my=this.y+Tank.HEIGHT/2-Missile.HEIGHT/2;
    Missile m=new Missile(mx,my,good,dir,this.tc);//根據(jù)坦克的方向發(fā)射子彈;
    tc.missiles.add(m);
    return m;
  }
   
  public void superFire()
  {
    Direction[] dirs=Direction.values();
    for(int i=0;i<8;i++)
    {
      fire(dirs[i]);
    }
  }
   
   
  public void locationDir()
  {
    if(bL&&!bU&&!bR&&!bD)
      dir=Direction.L;
    else if(bL&&bU&&!bR&&!bD)
      dir=Direction.LU;
    else if(!bL&&bU&&!bR&&!bD)
      dir=Direction.U;
    else if(!bL&&bU&&bR&&!bD)
      dir=Direction.RU;
    else if(!bL&&!bU&&bR&&!bD)
      dir=Direction.R;
    else if(!bL&&!bU&&bR&&bD)
      dir=Direction.RD;
    else if(!bL&&!bU&&!bR&&bD)
      dir=Direction.D;
    else if(bL&&!bU&&!bR&&bD)
      dir=Direction.LD;
    else if(!bL&&!bU&&!bR&&!bD)
      dir=Direction.STOP;
  }
 
   
   
  public Rectangle getRect()//獲取tank的矩形區(qū)域
  {
    return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);
  }
   
  /**
   * 坦克撞墻
   * @param w墻
   * @returntrue撞上,false未撞上;
   */
  public boolean colliedsWithWall(Wall w)
  {
    if(this.live&&this.getRect().intersects(w.getRect()))
    {
      this.stay();
      return true;
    }
    return false;
  }
   
  /**
   * 處理坦克與坦克相撞,防止其互相穿越;
   * @param tanks敵軍坦克;
   * @return true撞上,false未撞上;
   */
  public boolean colliedsWithTanks(java.util.List<Tank> tanks)
  {
    for(int i=0;i<tanks.size();i++)
    {
      Tank t=tanks.get(i);
      if(this!=t)
      {
        if(this.live&&this.isLive()&&this.getRect().intersects(t.getRect()))
        {
          this.stay();//返回上一步的位置;
          t.stay();////返回上一步的位置
          return true;
        }
         
      }  
    }
    return false;
  }
   
 
  private void stay()
  {
    x=oldX;
    y=oldY;
  }
   
  /**
   * 為Tank的內(nèi)部類;血條,顯示在我方坦克的頭頂上;
   * @author Hekangmin
   *
   */
  private class BloodBar
  {
    public void draw(Graphics g)
    {
      Color c=g.getColor();
      g.setColor(Color.RED);
      g.drawRect(x,y-10,WIDTH,10);
      int w=WIDTH*life/100;
      g.fillRect(x,y-10,w,10);
    }
  }
   
  /**
   * 吃到血塊加血;
   * @param b血塊
   * @returntrue吃到,false未吃到;
   */
  public boolean eat(Blood b)
  {
    if(this.live&&b.isLive()&&this.getRect().intersects(b.getRect()))
    {
      this.life=100;
      b.setLive(false);
      return true;
    }
    return false;
  }
   
  /**
   * 我軍坦克死后復(fù)活;
   */
  public void reBorn()
  {
    if(this.isGood()&&!this.isLive())
    {
      this.setLive(true);
      this.setLife(100);
    }
  }
}

TankWarClient.java

package com.hkm.TankWar;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.ArrayList;
 
/**
 * 這個是游戲的運行窗口;
 * @author Hekangmin
 *
 */
public class TankWarClient extends Frame{
/**
 * 游戲窗口的寬度;
 */
  public static final int GAME_WIDTH=800;
   
  /**
   * 游戲窗口的高度;
   */
  public static final int GAME_HEIGHT=600;
   
  Tank MyTank=new Tank(700,400,true,Tank.Direction.STOP,this);
  List<Tank> tanks=new ArrayList<Tank>();
  List<Explode> explodes=new ArrayList<Explode>();
  List<Missile> missiles=new ArrayList<Missile>();
  Wall w1=new Wall(300,200,20,200,this);
  Wall w2=new Wall(600,300,30,150,this);
  Blood b=new Blood();
   
  /**
   * 畫一張?zhí)摂M圖片;
   */
  Image OffScreenImage=null;
   
  public TankWarClient(String name)//設(shè)置文字
  {
    super(name);
  }
   
  /**
   * 運行窗口;
   */
   
  public void launchFrame()
  {
    for(int i=0;i<10;i++)//添加十輛敵軍坦克
    {
      tanks.add(new Tank(50+40*(i+1),50,false,Tank.Direction.D,this));
    }
     
    this.setBounds(200,100,GAME_WIDTH,GAME_HEIGHT);
    this.setBackground(Color.GREEN);
    this.addWindowListener(new WindowAdapter()//匿名類
    {
      public void windowClosing(WindowEvent e)
      {
        System.exit(0);
      }
    });
    this.addKeyListener(new KeyMonitor());//加入鍵盤監(jiān)聽器;
    this.setResizable(false);//不可改變窗口的大?。?
     
    this.setVisible(true);
     
    new Thread(new PaintThread()).start();//新建一個線程;
  }
   
  public void paint(Graphics g)
  {
    g.drawString("Missile count: "+missiles.size(), 10, 50);//顯示字符串;
    g.drawString("Explodes count: "+explodes.size(),10,70);
    g.drawString("tanks count: "+tanks.size(),10,90);
    g.drawString("Mytank life: "+MyTank.getLife(),10,110);
    /**
     * 畫出墻;
     */
    w1.draw(g);
    w2.draw(g);
     
    /**
     * 檢測子彈與各類的事情;
     */
    for(int i=0;i<missiles.size();i++)
    {
      Missile m=missiles.get(i);
      m.hitsWall(w1);
      m.hitsWall(w2);
      m.hitTanks(tanks);
      m.hitTank(MyTank);
      m.draw(g);
       
      //if(!m.isLive())
        //missiles.remove(m);
      //else m.draw(g);
    }
    /**
     * 畫出爆炸;
     */
    for(int i=0;i<explodes.size();i++)
    {
      Explode e=explodes.get(i);
      e.draw(g);
    }
     
    for(int i=0;i<tanks.size();i++)
    {
      Tank t=tanks.get(i);
      t.colliedsWithWall(w1);
      t.colliedsWithWall(w2);
      t.colliedsWithTanks(tanks);
      t.draw(g);
    }
     
    b.draw(g);
    MyTank.eat(b);
    MyTank.draw(g);
  }
   
  /**
   * 利用雙緩沖技術(shù)消除坦克閃爍的現(xiàn)象;
   */
  public void update(Graphics g) //g為畫在屏幕上的畫筆;
  {
    if(OffScreenImage==null)
      OffScreenImage=this.createImage(GAME_WIDTH, GAME_HEIGHT);
    Graphics gOffScreen=OffScreenImage.getGraphics();//gOffScreen是OffScreenImage的畫筆;
    Color c=gOffScreen.getColor();
    gOffScreen.setColor(Color.GREEN);
    gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
    gOffScreen.setColor(c);
    paint(gOffScreen);//畫在虛擬圖片上;
    g.drawImage(OffScreenImage,0,0,null);//用g畫筆將虛擬圖片上的東西畫在屏幕上
     
  }
   
   
  private class PaintThread implements Runnable{
 
    public void run() {
      while(true)
      {
        repaint();//這里的repaint方法是Frame類的
        try{
        Thread.sleep(100);
        }catch(InterruptedException e){
          e.printStackTrace();
        }
      }
    }
  }
   
  private class KeyMonitor extends KeyAdapter
  {
    public void keyReleased(KeyEvent e) {
      MyTank.keyReleased(e);
    }
 
    public void keyPressed(KeyEvent e) {
      MyTank.KeyPressed(e);
      }
     
     
  }
   
   
   
  public static void main(String[] args) {
    new TankWarClient("My Tank World").launchFrame();
  }
   
   
   
   
}

Wall.java

package com.hkm.TankWar;
import java.awt.*;
/**
 * 生成阻礙物墻這個類;
 * @author Hekangmin
 *
 */
 
public class Wall {
  /**
   * x,y為墻的位置,w,h為寬度高度;
   */
  int x,y,w,h;
  /**
   * 持有引用
   */
  TankWarClient tc;
   
  public Wall(int x, int y, int w, int h, TankWarClient tc) {
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.tc = tc;
  }
   
  public void draw(Graphics g)
  {
    Color c=g.getColor();
    g.setColor(Color.GRAY);
    g.fillRect(x,y,w,h);
    g.setColor(c);
  }
   
  /**
   * 得到墻的矩形區(qū)域;
   * @return
   */
  public Rectangle getRect()
  {
    return new Rectangle(x,y,w,h);
  }
   
}

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • 七個Spring核心模塊詳解

    七個Spring核心模塊詳解

    這篇文章主要為大家詳細(xì)介紹了七個Spring的核心模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java語言實現(xiàn)掃雷游戲(2)

    Java語言實現(xiàn)掃雷游戲(2)

    這篇文章主要為大家詳細(xì)介紹了Java語言實現(xiàn)掃雷游戲第二部分代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Java中常用的四種引用類型詳解

    Java中常用的四種引用類型詳解

    Java中常用的四種引用類型,分別為,強引用、軟引用、弱引用以及虛引用,這篇文章主要為大家介紹了這四種引用的用法,需要的可以參考一下
    2023-06-06
  • Java算法實現(xiàn)楊輝三角的講解

    Java算法實現(xiàn)楊輝三角的講解

    今天小編就為大家分享一篇關(guān)于Java算法實現(xiàn)楊輝三角的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringBoot使用WebSocket的方法實例詳解

    SpringBoot使用WebSocket的方法實例詳解

    WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進(jìn)行全雙工通訊的協(xié)議。這篇文章主要介紹了SpringBoot使用WebSocket,需要的朋友可以參考下
    2019-06-06
  • Java 實戰(zhàn)項目之在線點餐系統(tǒng)的實現(xiàn)流程

    Java 實戰(zhàn)項目之在線點餐系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)在線點餐系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • Java?關(guān)鍵字break和continue的使用說明

    Java?關(guān)鍵字break和continue的使用說明

    這篇文章主要介紹了Java?關(guān)鍵字break和continue的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 初識Java設(shè)計模式適配器模式

    初識Java設(shè)計模式適配器模式

    這篇文章主要為大家詳細(xì)介紹了Java設(shè)計模式適配器模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 找不到正確的java_home路徑報錯解決

    找不到正確的java_home路徑報錯解決

    本文主要介紹了找不到正確的java_home路徑報錯解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • WebService教程詳解(二)

    WebService教程詳解(二)

    這篇文章主要介紹了WebService教程詳解(二) 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03

最新評論

贵溪市| 汽车| 新蔡县| 衡东县| 嘉禾县| 娱乐| 黔江区| 文水县| 蓝山县| 昌都县| 西乌珠穆沁旗| 如皋市| 乐安县| 满洲里市| 新沂市| 新乡县| 万载县| 弥勒县| 任丘市| 鄂托克旗| 建始县| 威信县| 乌鲁木齐县| 辽阳县| 榆树市| 苗栗县| 鄂托克旗| 漯河市| 沂水县| 黄梅县| 苏州市| 左权县| 兴业县| 柳河县| 嘉黎县| 海丰县| 将乐县| 元谋县| 甘南县| 九台市| 万宁市|