飛翔的小鳥游戲

GameApp類?


package App;import main.GameFrame;public class GameApp {public static void main(String[] args) {//游戲的入口new GameFrame();}
}

?

main

Barrier 類


package main;import util.Constant;
import util.GameUtil;import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;/*** 障礙物類*/
public class Barrier {//矩形參數private Rectangle rect;private boolean mob = true;//障礙物移動速度private int speed = 3;//障礙物需要的三個圖片private static BufferedImage[] img;//障礙物的狀態private boolean visible;static {final int COUNT = 3;//類加載的時候將三個圖片初始化img = new BufferedImage[COUNT];for (int i = 0; i < COUNT; i++) {img[i] = GameUtil.loadBufferedImage(Constant.BARRIER_IMG_PATH[i]);}}//位置private int x, y;//寬度和高度private int width, height;//障礙物的類型private int type;public static final int TYPE_TOP_NORMAL = 0;public static final int TYPE_BOTTOM_NORMAL = 2;public static final int TYPE_HOVER_NORMAL = 4;public static final int TYPE_MOBILE = 6;//獲得障礙物的寬度和高度public static final int BARRIRE_WIDTH = img[0].getWidth();public static final int BARRIRE_HEIGHT = img[0].getHeight();public static final int BARRIRE_HEAD_WIDTH = img[1].getWidth();public static final int BARRIRE_HEAD_HEIGHT = img[1].getHeight();public Barrier() {rect = new Rectangle();}public Barrier(int x, int y, int height, int type) {this.x = x;this.y = y;this.height = height;this.type = type;this.width = BARRIRE_WIDTH;}//根據不同的類型繪制障礙物public void draw(Graphics g) {switch (type) {case TYPE_TOP_NORMAL:drawTopMormal(g);break;case TYPE_BOTTOM_NORMAL:drawNomalTop(g);break;case TYPE_HOVER_NORMAL:drawHoverNormal(g);break;case TYPE_MOBILE:drawMobile(g);break;}}//繪制從上向下的障礙物private void drawTopMormal(Graphics g) {//求出所需要的障礙物的塊數int count = (height - BARRIRE_HEAD_HEIGHT) / BARRIRE_HEIGHT + 1;//for循壞繪制障礙物for (int i = 0; i < count; i++) {g.drawImage(img[0], x, y + i * BARRIRE_HEIGHT, null);}//繪制頭int y = height - BARRIRE_HEAD_HEIGHT;g.drawImage(img[2], x - (BARRIRE_HEAD_WIDTH - BARRIRE_WIDTH) / 2, y, null);x -= speed;if (x < 50) {visible = false;}rect(g);}//繪制從下向上的障礙物private void drawNomalTop(Graphics g) {//求出所需要的障礙物的塊數int count = height / BARRIRE_HEIGHT + 1;//for循環繪制障礙物for (int i = 0; i < count; i++) {g.drawImage(img[0], x, Constant.FRAM_HEIGNT - i * BARRIRE_HEIGHT, null);}//繪制頭int y = Constant.FRAM_HEIGNT - height;g.drawImage(img[1], x - (BARRIRE_HEAD_WIDTH - BARRIRE_WIDTH) / 2, y, null);x -= speed;if (x < -50) {visible = false;}rect(g);}//繪制中間的障礙物private void drawHoverNormal(Graphics g) {//求出所需要的障礙物的塊數int count = (height-BARRIRE_HEAD_HEIGHT)/BARRIRE_HEIGHT;//繪制上頭g.drawImage(img[1],x,y,null);//for循環繪制障礙物for (int i = 0; i < count; i++) {g.drawImage(img[0], x, y+BARRIRE_HEAD_HEIGHT+i*BARRIRE_HEIGHT, null);}rect(g);//繪制下頭int y11 = y+height-BARRIRE_HEAD_HEIGHT;g.drawImage(img[2],x,y11,null);x -= speed;if (x < -50) {visible = false;}}//繪制移動的障礙物private void drawMobile(Graphics g) {//求出所需要的障礙物的塊數int count = (height-BARRIRE_HEAD_HEIGHT)/BARRIRE_HEIGHT;//繪制上頭g.drawImage(img[1],x,y,null);//for循環繪制障礙物for (int i = 0; i < count; i++) {g.drawImage(img[0], x, y+BARRIRE_HEAD_HEIGHT+i*BARRIRE_HEIGHT, null);}rect(g);//繪制下頭int y11 = y+height-BARRIRE_HEAD_HEIGHT;g.drawImage(img[2],x,y11,null);x -= speed;if (x < -50) {visible = false;}if (mob) {y+=5;if (y >= 250) {mob=false;}}else if (!mob){y-=5;if (y <= 100) {mob=true;}}}/*** 繪制障礙物碰撞矩形** @return*/public void rect(Graphics g) {int x1 = this.x;int y1 = this.y;int w1 = img[0].getWidth();
//        g.setColor(Color.blue);
//        g.drawRect(x1, y1, w1, height);setRecyangle(x1, y1, w1, height);}/*** 障礙物的碰撞矩形參數** @return*/public void setRecyangle(int x, int y, int width, int height) {rect.x = x;rect.y = y;rect.width = width;rect.height = height;}//判斷什么時候繪制下一組障礙物public boolean isInFrame() {return 600 - x > 150;}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}public int getType() {return type;}public void setType(int type) {this.type = type;}public boolean isVisible() {return visible;}public void setVisible(boolean visible) {this.visible = visible;}public Rectangle getRect() {return rect;}
}

Barrierpool 類?

package main;import java.util.ArrayList;
import java.util.List;/*** 為了避免反復的創建和銷毀對象,使用對象池來提前創建好一些對象。* 使用的時候從池中獲得,使用完畢后,歸還*/
public class Barrierpool {//用于管理池中所有對象的容器private static List<Barrier> pool = new ArrayList<>();//池中初始的對象個數public static final int initCount = 16;//對象池中最大個數public static final int maxCOunt = 20;static {//初始化池中的對象for (int i = 0; i < initCount; i++) {pool.add(new Barrier());}}/*** 從池中獲取一個對象*/public static Barrier getPool(){int size = pool.size();//如果池中有對象才可以拿if (size > 0) {//移除并返回對象System.out.println("拿走一個");return pool.remove(size-1);}else {//池中沒有對象了 只能newSystem.out.println("新的對象");return new Barrier();}}/*** 將對象歸還容器中*/public static void setPool(Barrier barrier){if (pool.size() < maxCOunt) {pool.add(barrier);System.out.println("容器歸還了");}}}

Bird 類

package main;import static util.Constant.*;
import util.GameUtil;
import java.awt.*;
import java.awt.image.BufferedImage;/*** 小鳥類*/
public class Bird {//小鳥矩形對象private Rectangle rect;//小鳥加速度private int acceleration;//小鳥的生命public boolean life = true;//存放小鳥圖片private BufferedImage[] images;public static final int BIRD_IMG_COUNT = 3;//鳥的狀態private int state;public static final int STATE_NORMAR = 0;//平著飛public static final int STATE_UP = 1;//向上飛public static final int STATE_DOWN = 2;//向下飛//小鳥的位置private int x=200,y=200;//小鳥移動方向 上下private boolean up=false,down=false;//小鳥移動速度private int speed=4;//構造方法中對資源初始化public Bird() {images = new BufferedImage[BIRD_IMG_COUNT];for (int i = 0; i < BIRD_IMG_COUNT; i++) {images[i] = GameUtil.loadBufferedImage(BIRD_IMG[i]);}int w = images[0].getWidth();int h = images[0].getHeight();rect = new Rectangle(w,h);}//繪制小鳥public void draw(Graphics g) {flyLogic();g.drawImage(images [state], x, y, null);//繪制小鳥的矩形g.drawRect(x,y,(int)rect.getWidth(), rect.height);rect.x=this.x;rect.y=this.y;}//控制小鳥移動方向public void flyLogic(){if (up){acceleration--;y+=acceleration;if (acceleration < -10) {acceleration=-10;}if (y<20){y=20;acceleration=0;}}if (!up){acceleration++;y+=acceleration;if (acceleration > 10) {acceleration=10;}if (y>475){y=475;acceleration=0;}}}public void fly(int fly){switch (fly){case 1:state=1;up=true;break;case 5:state=2;up=false;break;}}public Rectangle getRect() {return rect;}/*** 重新繪制小鳥的位置*/
public void  restartDraw(){life=true;x=200;y=200;
}}

Cloud 類

package main;import java.awt.*;
import java.awt.image.BufferedImage;/*** 云彩類*/
public class Cloud {//云彩圖片private BufferedImage img;//云彩速度private  int speed;//云彩的位置private  int x,y;public Cloud(){}public Cloud(BufferedImage img, int speed, int x, int y) {this.img = img;this.speed = speed;this.x = x;this.y = y;}public void draw(Graphics g){x-=speed;g.drawImage(img,x,y,null);}/*** 用于判斷云彩是否飛出屏幕以外*/public boolean isOutFrame(){if (x < -100) {return true;}return false;}}

GameBackGround 類

package main;import static util.Constant.*;import util.Constant;
import util.GameUtil;import java.awt.*;
import java.awt.image.BufferedImage;/*** 游戲背景類*/
public class GameBackGround {//背景需要的資源圖片private BufferedImage bkimg;//構造器初始化資源public GameBackGround(){bkimg = GameUtil.loadBufferedImage(Constant.BK_IMG_OATH);}//繪制圖片public void draw(Graphics g){//填充背景色g.setColor(BK_COLOR);g.fillRect(0,0,FRAM_WIDTH,FRAM_HEIGNT);g.setColor(Color.black);//得到圖片的高度和寬度int height = bkimg.getHeight();int weight = bkimg.getWidth();//循環的次數int count = Constant.FRAM_WIDTH/weight+1;for (int i = 0; i < count; i++) {g.drawImage(bkimg,weight*i,Constant.FRAM_HEIGNT-height,null);}}
}

GameBarrierLayer? 類

package main;import util.Constant;import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** 游戲中障礙物層*/
public class GameBarrierLayer {private GameTime gameTime;private int txt;private Random random = new Random();private List<Barrier> barriers;public GameBarrierLayer() {barriers = new ArrayList<>();gameTime = new GameTime();}//繪制障礙物public void draw(Graphics g, Bird bird) {for (int i = 0; i < barriers.size(); i++) {Barrier barrier = barriers.get(i);if (barrier.isVisible()) {barrier.draw(g);} else {Barrier remove = barriers.remove(i);Barrierpool.setPool(remove);i--;}}collideBird(bird);logic(g);}public void logic(Graphics g) {if (barriers.size() == 0) {ran();gameTime.begin();insert(600, 0, numberTop, 0);insert(600, 500 - numberDown, numberDown, 2);} else {long differ = gameTime.differ();g.setColor(Color.white);g.setFont(new Font("微軟雅黑", 1, 20));g.drawString("堅持了:" + differ + "秒", 30, 50);//顯示最高成績txt = getTxt();if (differ <= txt){g.drawString("最高成績:" + txt , 200, 50);}else {setTxt(String.valueOf(differ));g.drawString("最高成績:" + getTxt() , 200, 50);}//判斷最后一個障礙物是否完全進入屏幕內Barrier last = barriers.get(barriers.size() - 1);if (last.isInFrame()) {ran();if (number < 50){insert(600,32,440,4);}else if (number>450){insert(600,125,200,6);}else {insert(600, 0, numberTop, 0);insert(600, 500 - numberDown, numberDown, 2);}}}}//用于儲存游戲數據File file = new File("C:\\game.txt");/*** 從文件獲取數據* @return*/public int getTxt()   {BufferedReader in = null;try {in = new BufferedReader(new FileReader(file));} catch (FileNotFoundException e) {e.printStackTrace();}int read = 0;try {read = Integer.parseInt(in.readLine());} catch (IOException e) {e.printStackTrace();}try {in.close();} catch (IOException e) {e.printStackTrace();}return read;}/*** 寫入數據到文件* @param str*/public void setTxt(String str)   {FileWriter out = null;try {out = new FileWriter(file);} catch (IOException e) {e.printStackTrace();}try {out.write(str);} catch (IOException e) {e.printStackTrace();}try {out.close();} catch (IOException e) {e.printStackTrace();}}/*** 用于從池中獲取對象,并吧參數封裝成barrier 存入barriers數組中*/public void insert(int x, int y, int num, int type) {Barrier top = Barrierpool.getPool();top.setX(x);top.setY(y);top.setHeight(num);top.setType(type);top.setVisible(true);barriers.add(top);}//上方障礙物高度private int numberTop;//下方障礙物高度private int numberDown;private int number;//產生兩個100-500之間的隨機高度public void ran() {numberTop = random.nextInt(400) + 100;numberDown = random.nextInt(400) + 100;number = random.nextInt(500);//如果管道重合,則重新隨機if (numberTop + numberDown > 450) {ran();}}/*** 判斷障礙物和小鳥發生碰撞*/public boolean collideBird(Bird bird) {for (int i = 0; i < barriers.size(); i++) {Barrier barrier = barriers.get(i);//判斷矩形是否相交if (barrier.getRect().intersects(bird.getRect())) {System.out.println("裝上啦");bird.life = false;}}return false;}/*** 用于清空障礙物的池子*/public void restant(){barriers.clear();}}

GameFrame 類

package main;import static util.Constant.*;import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;/*** 游戲的主窗口類,所有的關于游戲中繪制的內容都在此類中完成。*/
public class GameFrame extends Frame {//實例化gamebackGround類private GameBackGround gameBackGround;//實例化Bird類private Bird bird;//實例化GameBarrierLayer類private GameBarrierLayer gameBarrierLayer;//實例化GameFrontGround類private GameFrontGround gameFrontGround;//存放圖片的圖片private BufferedImage buffimg = new BufferedImage(FRAM_WIDTH,FRAM_HEIGNT,BufferedImage.TYPE_4BYTE_ABGR);//構造方法中初始化一些參數public GameFrame(){//窗口是否可見setVisible(true);//窗口的大小setSize(FRAM_WIDTH,FRAM_HEIGNT);//窗口的標題setTitle(FRAM_TITLE);//窗口的初始化位置setLocation(FRAM_X,FRAM_Y);//窗口的大小不可改變setResizable(false);//窗口的關閉事件addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);//結束程序}});//初始化游戲對象initGamg();new run().start();//添加按鍵監聽addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {add(e);}@Overridepublic void keyReleased(KeyEvent e) {minu(e);}});}//對游戲中的對象初始化public void initGamg(){gameBackGround = new GameBackGround();bird = new Bird();gameFrontGround = new GameFrontGround();gameBarrierLayer = new GameBarrierLayer();}class run extends Thread{@Overridepublic void run() {while (true) {repaint();try {Thread.sleep(33);} catch (InterruptedException e) {e.printStackTrace();}}}}/*** 所有的我們需要繪制的內容都在此方法中進行調用繪制*/@Overridepublic void update(Graphics g) {if(bird.life){//得到圖片的畫筆Graphics graphics = buffimg.getGraphics();gameBackGround.draw(graphics);bird.draw(graphics);gameFrontGround.draw(graphics);gameBarrierLayer.draw(graphics,bird);//一次性的將圖片繪制到屏幕中g.drawImage(buffimg,0,0,null);}else {String over = "游戲結束";g.setColor(Color.red);g.setFont(new Font("微軟雅黑",1,60));g.drawString(over,180,250);String reset = "Space Reset Game";g.drawString(reset,25,350);}}//按鍵public void add(KeyEvent e){switch (e.getKeyCode()){case KeyEvent.VK_UP:bird.fly(1);break;case KeyEvent.VK_SPACE:if (bird.life == false) {restart();}break;}}//抬鍵public void minu(KeyEvent e){switch (e.getKeyCode()){case KeyEvent.VK_UP:bird.fly(5);break;}}/*** 重置游戲*/public void restart(){gameBarrierLayer.restant();bird.restartDraw();}}

GameFrontGround 類

package main;import util.Constant;
import util.GameUtil;import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** 游戲的前景類*/
public class GameFrontGround {//云彩的個數private static final int CLOUND_COUNT = 2;//存放云彩的容器private List<Cloud> clouds;//云彩的飛行速度private static final int CLOUNG_SPEED = 1;//使用到圖片資源private BufferedImage[] img;//用于產生隨機數private Random random;// 構造器初始化數據public GameFrontGround() {clouds = new ArrayList<>();img = new BufferedImage[CLOUND_COUNT];//容器中添加云彩的圖片for (int i = 0; i < CLOUND_COUNT; i++) {img[i] = GameUtil.loadBufferedImage("img/cloud0" + i + ".png");}random = new Random();}//繪制云彩public void draw(Graphics g) {logic();for (int i = 0; i < clouds.size(); i++) {clouds.get(i).draw(g);}}/*** 用于云彩的個數控制*/private void logic() {if ((int) (500 * Math.random()) < 5) {Cloud cloud = new Cloud(img[random.nextInt(CLOUND_COUNT)], CLOUNG_SPEED, 600, random.nextInt(150));clouds.add(cloud);}for (int i = 0; i < clouds.size(); i++) {Cloud cloud = clouds.get(i);if (cloud.isOutFrame()){clouds.remove(i);i--;System.out.println("移除了"+cloud);}}}
}

GameTime 類

package main;/*** 游戲計時器*/
public class GameTime {//開始private long beginTime;//結束private long endTime;//時間差private long differ;public GameTime(){}public void  begin(){beginTime = System.currentTimeMillis();}public long differ(){endTime = System.currentTimeMillis();return differ=(endTime-beginTime)/1000;}}

untl

Constant 類

package util;import java.awt.*;/*** @author* @create*/
public class Constant {//窗口的大小public static final int FRAM_WIDTH= 600;public static final int FRAM_HEIGNT= 500;//窗口標題public static final String FRAM_TITLE= "飛翔的小鳥";//窗口的初始化位置public static final int FRAM_X= 200;public static final int FRAM_Y= 200;//背景圖片public static final String BK_IMG_OATH = "img/bird_bk.png";//背景色public static final Color BK_COLOR = new Color(0x4BC4CF);//小鳥圖片資源public static final String[] BIRD_IMG={"img/bird_normal.png","img/bird_up.png","img/bird_down.png"};//障礙物圖片資源public static final String[] BARRIER_IMG_PATH ={"img/barrier.png","img/barrier_up.png","img/barrier_down.png"};
}

GameUtil 類

package util;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;/*** 游戲工具類*/
public class GameUtil {/***該方法傳入一個圖片路徑 讀取圖片*/public static BufferedImage loadBufferedImage(String ImgPath){try {return ImageIO.read(new FileInputStream(ImgPath));} catch (IOException e) {e.printStackTrace();}return null;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163715.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163715.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

gitea倉庫鏡像同步至gitlab

1、參考文檔&#xff1a;倉庫鏡像 | Gitea Documentation 2、錯誤一&#xff1a;賬號密碼錯誤問題 解決方法&#xff1a; 出現以上錯誤為第三步用戶名&#xff08;Oauth2應用名稱&#xff09;或者密碼&#xff08;Gitlab個人訪問令牌&#xff09;錯誤。 1&#xff09;如下圖1…

【UE4虛幻】UTexture2D紋理裁剪函數

參數說明&#xff1a; 源2D紋理圖片&#xff1a;UTexture2D* SourceTexture 裁剪區域的左上角&#xff1a;const FVector2D TopLeft 裁剪區域的右下角&#xff1a;const FVector2D BottomRight 返回值是裁剪之后的紋理圖片 UTexture2D* APointProjection::CropPicture(UTextur…

洗地機哪個牌子好用?洗地機選購攻略

傳統的清潔方式都是掃把拖把的結合&#xff0c;既繁瑣也勞累&#xff0c;每次清潔完后還得累的腰酸背痛的&#xff0c;像廚房這種地方甚至會不容易清潔干凈&#xff0c;總感覺地板灰蒙蒙的。洗地機的誕生就很好的解決了這些問題&#xff0c;不用一遍遍的重復掃地拖地擦地&#…

1410. HTML 實體解析器 --力扣 --JAVA

題目 「HTML 實體解析器」 是一種特殊的解析器&#xff0c;它將 HTML 代碼作為輸入&#xff0c;并用字符本身替換掉所有這些特殊的字符實體。 HTML 里這些特殊字符和它們對應的字符實體包括&#xff1a; 雙引號&#xff1a;字符實體為 &quot; &#xff0c;對應的字符是 &qu…

JOSEF約瑟 過電流繼電器 JL15-300/11 觸點形式一開一閉 板前接線

系列型號 JL15-1.5/11電流繼電器JL15-2.5/11電流繼電器 JL15-5/11電流繼電器JL15-10/11電流繼電器 JL15-15/11電流繼電器JL15-20/11電流繼電器 JL15-30/11電流繼電器JL15-40/11電流繼電器 JL15-60/11電流繼電器JL15-80/11電流繼電器 JL15-100/11電流繼電器JL15-150/11電流繼電…

linux的系統

10.4 I2C 系統的重要結構體 參考資料&#xff1a; ? Linux 驅動程序:&#xff08;某版本的 Linux&#xff0c;比如 Linux-4.9.88&#xff09;/drivers/i2c ? I2CTools: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 284 / 577 10.4.1 重要結構體 使用一句…

母嬰團隊半年破億秘訣揭秘,合規經營成就輝煌

這支母嬰產品銷售團隊在短短半年內實現了過億的銷售額&#xff0c;這是一個令人矚目的成就。他們既不依賴線下門店&#xff0c;也不是傳統的電商平臺&#xff0c;那么他們是如何做到這一點的呢&#xff1f; 這個團隊從16年10月開始經營母嬰產品&#xff0c;如今已經過去了6年時…

生成式AI:SEO的末日?

由于在搜索結果中引入生成式AI (GAI)&#xff0c;以 SEO 為主導的內容的未來成為最近的熱門話題&#xff0c;這是有充分理由的。 對于出版商和網站所有者&#xff08;從現在開始我們將他們稱為內容創建者&#xff09;的影響可能是毀滅性的。 如下圖所示&#xff0c;谷歌新的搜…

成為AI產品經理——模型構建過程(上)

目錄 一、背景 1.對內 2.對外 二、模型構建過程 1.模型設計 2.特征工程 ① 數據清洗 ② 特征提取 數值型數據 標簽/描述類數據特征 非結構化數據&#xff08;處理文本特征&#xff09; 網絡關系型數據 ③ 特征選擇 ④ 訓練集/測試集 一、背景 雖然產品經理不…

Linux應用開發基礎知識——I2C應用編程(十二)

前言&#xff1a; I2C&#xff08;Inter-Integrated Circuit BUS&#xff09;是集成電路總線&#xff0c;是目前應用最廣泛的總線之一&#xff0c;最初由PHILIPS&#xff08;現為NXP&#xff09;設計。它使用多主從架構&#xff0c;主要用于連接低速周邊設備。I2C總線在硬件物理…

WorkPlus即時通訊,打通上下游產業鏈,構建企業生態圈

如今&#xff0c;隨著信息技術的迅速發展&#xff0c;智慧水務、智慧醫療、智慧城市、智慧教育、智慧政務等領域正蓬勃發展。在這個智慧時代&#xff0c;企業需要一個具備開放性和擴展性的平臺級產品&#xff0c;以滿足多樣化的業務需求。WorkPlus作為一款全新的移動底座產品&a…

String 真的不可變嗎?

為什么 String 類不可變 final修飾符&#xff1a; String類被聲明為final&#xff0c;這意味著它不能被繼承。因此&#xff0c;無法創建String的子類來修改其行為。私有字符數組&#xff08;char[]&#xff09;&#xff1a; String類內部使用私有的字符數組來存儲字符串的內容…

Excel文件比較不再繁瑣,xlCompare助您快速找出差異

概要 在現代職場中&#xff0c;Excel 已成為工作中不可或缺的利器。 在日常操作中&#xff0c;我們會遇到需要對兩個或多個 Excel 文件進行比較的情況&#xff0c;此時&#xff0c;一款高效的 Excel 文件比較工具就顯得尤為重要。 本文將為您介紹一款功能強大、優勢明顯的 Exc…

創新建筑形式:氣膜體育館助力校園體育設施革新

體育場館在校園中扮演著重要的角色&#xff0c;是學生們進行體育鍛煉、比賽和各類體育活動的場所。傳統的室內體育館建設往往需要大量資金和漫長的建設周期&#xff0c;但隨著氣膜體育館的嶄露頭角&#xff0c;校園體育設施的面貌正迎來一場革新。 快速搭建&#xff0c;靈活性極…

電機應用開發-直流有刷電機電流環控制實現

目錄 直流有刷電機電流環控制實現 硬件設計 直流電機電流環控制-位置式PID實現 編程要點 配置ADC可讀取電流值 配置基本定時器6產生定時中斷讀取當前電路中驅動電機的電流值并執行PID運算 配置定時器1輸出PWM控制電機 ADC數據處理 編寫位置式PID算法 直流電機電流環控…

3、領導跟你談話,講到你的團隊里面的好友,公司會進行觀察裁員,你會去傳話么?

作為一個團隊成員&#xff0c;我會認真聽取領導的意見&#xff0c;并尊重公司的決定。然而&#xff0c;作為一個好友&#xff0c;我也會考慮他們的利益&#xff0c;我會與他們溝通&#xff0c;提醒他們注意自己的表現和工作&#xff0c;努力提高業績和工作質量&#xff0c;以確…

5個免費在線工具推薦

NSDT 三維場景建模工具GLTF/GLB在線編輯器Three.js AI自動紋理化開發包YOLO 虛幻合成數據生成器3D模型在線轉換 1、NSDT 三維場景建模 訪問地址&#xff1a;NSDT 編輯器 2、GLTF/GLB在線編輯器 訪問地址&#xff1a;GLTF 編輯器 3、Three.js AI自動紋理化開發包 圖一為原始模…

Linux下安裝兩個版本python

1 python下載&#xff1a; 官網地址&#xff1a;Download Python | Python.org 第一&#xff1a;點擊下載如下圖&#xff1a; 第二&#xff1a;找到對應的python版本源碼包&#xff1a; 點擊右鍵復制下載地址&#xff0c;如下圖 例如我的是&#xff1a;https://www.python.org/…

【鴻蒙應用ArkTS開發系列】- 云開發入門實戰二 實現省市地區聯動地址選擇器組件(上)

目錄 概述 云數據庫開發 一、創建云數據庫的對象類型。 二、預置數據&#xff08;為對象類型添加數據條目&#xff09;。 三、部署云數據庫 云函數實現業務邏輯 一、創建云函數 二、云函數目錄講解 三、創建resources目錄 四、獲取云端憑據 五、導出之前創建的元數據…

企業如何通過軟文推廣提高競爭力

數字時代我們每天接收到的信息遠遠超過可接受的量&#xff0c;且技術進步帶來的“信息繭房”使用戶很難獲取真正有效的信息&#xff0c;但越是雜亂的信息環境&#xff0c;有價值信息的穿透力就越強&#xff0c;軟文推廣正是憑借價值感信息助力企業提高競爭力&#xff0c;接下來…