【Java項目介紹和界面搭建】拼圖小游戲——鍵盤、鼠標事件

🍬 博主介紹👨?🎓 博主介紹:大家好,我是 hacker-routing ,很高興認識大家~
?主攻領域:【滲透領域】【應急響應】 【Java】 【VulnHub靶場復現】【面試分析】
🎉點贊?評論?收藏 == 養成習慣(一鍵三連)😋
🎉歡迎關注💗一起學習👍一起討論??一起進步📝文末有彩蛋
🙏作者水平有限,歡迎各位大佬指點,相互學習進步!

目錄

拼圖小游戲

練習

1、創建主界面1

代碼

2、創建主界面2

菜單制作

3、在游戲界面中添加菜單

代碼

4、添加圖片

游戲主界面添加組件

代碼

5、打亂圖片順序

練習

6、事件

1、動作監聽

2、鼠標監聽機制

3、鍵盤監聽


拼圖小游戲

練習

1、創建主界面1

  • 到idea中創建一個寬603像素,高680像素的游戲主界面
  • 到idea中創建一個寬488像素,高430像素的登錄界面
  • 到idea中創建一個寬488像素,高500像素的注冊界面

代碼

測試類:test ,在這個測試類中,我們直接把三個Java用戶圖形化界面生成了,但是這樣三個功能界面全部都寫在同一個main函數里面,對于我們以后的代碼修改很不方便。

所以我們這里進行修改下,分別寫成單獨的類中。

package ui;import javax.swing.*;public class test {public static void main(String[] args) {//JFrame是JavaBean類描述界面的//屬性 (寬 高)  行為//1.創建一個游戲的主界面JFrame gameJFrame = new JFrame();gameJFrame.setSize(603,680);//單位是像素gameJFrame.setVisible(true);//2.創建一個登陸界面JFrame loginJFrame = new JFrame();loginJFrame.setSize(488,430);loginJFrame.setVisible(true);//3.創建一個注冊界面JFrame registerJFrame = new JFrame();registerJFrame.setSize(488,500);registerJFrame.setVisible(true);}
}

注冊界面:RegisterJFrame

package ui;import javax.swing.*;public class RegisterJFrame extends JFrame {//跟相關注冊界面的代碼,都寫里面public RegisterJFrame(){this.setSize(488,500);this.setVisible(true);}}

登錄界面:loginJFrame

package ui;import javax.swing.*;public class loginJFrame extends JFrame {//loginJFrame 表示登錄界面//以后所以跟登錄相關的代碼,都寫里面public loginJFrame(){this.setSize(488,430);this.setVisible(true);}}

游戲界面:GameJFrame

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗體//子類呢?也表示界面,窗體//規定:GameJFrame這個界面表示的就是游戲的主界面//以后跟游戲相關的所有邏輯都寫在這個類中public GameJFrame(){this.setSize(603,680);//單位是像素this.setVisible(true);}}

程序的啟動入口:App

我們可以把test這個類刪掉了,我們可以直接俄利用App這個程序的啟動入口,我們需要啟動哪個界面,我們直接創建誰就可以了。

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new RegisterJFrame();new GameJFrame();new loginJFrame();}
}

2、創建主界面2

簡單初始化界面

    public RegisterJFrame(){this.setSize(488,500);//設置界面的標題this.setTitle("拼圖 注冊");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//讓界面顯示出來this.setVisible(true);
菜單制作

3、在游戲界面中添加菜單

代碼

游戲界面:GameJFrame

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗體//子類呢?也表示界面,窗體//規定:GameJFrame這個界面表示的就是游戲的主界面//以后跟游戲相關的所有邏輯都寫在這個類中public GameJFrame(){//初始化界面initJFrame();//初始化菜單initJMenuBar();//讓界面顯示出來,最后寫this.setVisible(true);}private void initJMenuBar() {//初始化菜單//創建整個的菜單對象JMenuBar jMenuBar = new JMenuBar();//創建菜單上面的兩個選項的對象  (功能  關于我們)JMenu fuctionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("關于我們");//創建選項下面的條目對象JMenuItem replayItem = new JMenuItem("重新游戲");JMenuItem reloginItem = new JMenuItem("重新登錄");JMenuItem closeItem = new JMenuItem("關閉游戲");JMenuItem accountItem = new JMenuItem("公眾號");//將每一個選項下的條目添加到對應的選項中fuctionJMenu.add(replayItem);fuctionJMenu.add(reloginItem);fuctionJMenu.add(closeItem);aboutJMenu.add(accountItem);//將菜單里面的兩個選項添加到菜單中jMenuBar.add(fuctionJMenu);jMenuBar.add(aboutJMenu);//給整個界面設置菜單this.setJMenuBar(jMenuBar);}private void initJFrame() {//設置界面的寬高this.setSize(603,680);//單位是像素//設置界面的標題this.setTitle("拼圖單機版 v1.0");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}}

測試類:App

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

4、添加圖片

  • 默認添加圖片顯示在正中央

多寫一個初始化圖片

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗體//子類呢?也表示界面,窗體//規定:GameJFrame這個界面表示的就是游戲的主界面//以后跟游戲相關的所有邏輯都寫在這個類中public GameJFrame(){//初始化界面initJFrame();//初始化菜單initJMenuBar();//初始化圖片initimage();//讓界面顯示出來,最后寫mthis.setVisible(true);}//---------------------------------- ---------------------//初始化圖片private void initimage() {//1.創建一個圖片imageicon的對象ImageIcon icon = new ImageIcon("E:\\tool\\IDEA-java\\java代碼\\routing\\image\\animal\\animal3\\3.jpg");//2.創建一個Jlabel的對象(管理容器)JLabel JLabel = new JLabel(icon);//3.把管理容器添加到界面中this.add(JLabel);}private void initJMenuBar() {//初始化菜單//創建整個的菜單對象JMenuBar jMenuBar = new JMenuBar();//創建菜單上面的兩個選項的對象  (功能  關于我們)JMenu fuctionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("關于我們");//創建選項下面的條目對象JMenuItem replayItem = new JMenuItem("重新游戲");JMenuItem reloginItem = new JMenuItem("重新登錄");JMenuItem closeItem = new JMenuItem("關閉游戲");JMenuItem accountItem = new JMenuItem("公眾號");//將每一個選項下的條目添加到對應的選項中fuctionJMenu.add(replayItem);fuctionJMenu.add(reloginItem);fuctionJMenu.add(closeItem);aboutJMenu.add(accountItem);//將菜單里面的兩個選項添加到菜單中jMenuBar.add(fuctionJMenu);jMenuBar.add(aboutJMenu);//給整個界面設置菜單this.setJMenuBar(jMenuBar);}private void initJFrame() {//設置界面的寬高this.setSize(603,680);//單位是像素//設置界面的標題this.setTitle("拼圖單機版 v1.0");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}}

app運行:

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

游戲主界面添加組件

代碼
    //初始化圖片private void initimage() {//外循環  --把內循環重復執行了4次int number = 1;for (int i = 0; i < 4; i++) {//內循環  --表示在一行添加4張圖片for (int j = 0; j < 4; j++) {//1.創建一個Jlabel的對象(管理容器)JLabel JLabel = new JLabel(new ImageIcon("E:\\\\tool\\\\IDEA-java\\\\java代碼\\\\routing\\\\image\\\\animal\\\\animal3\\\\" + number +".jpg"));//2.指定圖片的位置JLabel.setBounds(105 * i,105 * j,105,105);//3.把管理容器添加到界面中this.getContentPane().add(JLabel);number++;}}

App 運行

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

5、打亂圖片順序

練習

打亂一維數組中的數據

int[] tempArr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

要求:打亂一維數組中的數據,并按照4個一組的方式添加到二維數組中。

解法一:

package test;import java.util.Random;public class test1 {public static void main(String[] args) {//1.定義一個一維數組int[] temArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打亂數組中的順序//遍歷數組,得到每一個元素,拿著每一個元素跟隨機索引上的數據進行交換Random r = new Random();for (int i = 0; i < temArr.length; i++) {//獲取到隨機索引int index = r.nextInt(temArr.length);//拿著每一個元素跟隨機索引上的數據進行交換int temp = temArr[i];temArr[i] = temArr[index];temArr[index] = temp;}//3.遍歷數組for (int i = 0; i < temArr.length; i++) {System.out.print(temArr[i] + " ");}System.out.println();//4.創建一個二維數組int[][] data = new int[4][4];//5.給二維數組添加數據//解法一://遍歷一維數組tempArr得到每一個元素,把每一個元素依次添加到數組當中for (int i = 0; i < temArr.length; i++) {data[i / 4][i % 4] = temArr[i];}//遍歷二維數組for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {System.out.print(data[i][j] + " ");}System.out.println();}}
}

解法二:

package test;import java.util.Random;public class test2 {public static void main(String[] args) {//1.定義一個一維數組int[] temArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打亂數組中的順序//遍歷數組,得到每一個元素,拿著每一個元素跟隨機索引上的數據進行交換Random r = new Random();for (int i = 0; i < temArr.length; i++) {//獲取到隨機索引int index = r.nextInt(temArr.length);//拿著每一個元素跟隨機索引上的數據進行交換int temp = temArr[i];temArr[i] = temArr[index];temArr[index] = temp;}//3.遍歷數組for (int i = 0; i < temArr.length; i++) {System.out.print(temArr[i] + " ");}System.out.println();//4.創建一個二維數組int[][] data = new int[4][4];//5.給二維數組添加數據//解法二://遍歷二維數組,給里面的每一個數據賦值int index = 0;for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {data[i][j] = temArr[index];index++;}}//遍歷二維數組for (int i = 0; i < data.length; i++) {for (int j = 0; j < data[i].length; j++) {System.out.print(data[i][j] + " ");}System.out.println();}}
}

在GameJFrame編寫

package ui;import javax.swing.*;
import java.util.Random;public class GameJFrame extends JFrame {//JFrame 界面,窗體//子類呢?也表示界面,窗體//規定:GameJFrame這個界面表示的就是游戲的主界面//以后跟游戲相關的所有邏輯都寫在這個類中//創建一個二維數組//目的:加載圖片int[][] data = new int[4][4];public GameJFrame(){//初始化界面initJFrame();//初始化菜單initJMenuBar();//初始化數據(打亂)initdata();//初始化圖片(根據打亂之后的數據結果加載圖片)initimage();//讓界面顯示出來,最后寫mthis.setVisible(true);}//---------------------------------- ---------------------private void initdata() {//1.定義一個一維數組int[] temArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打亂數組中的順序//遍歷數組,得到每一個元素,拿著每一個元素跟隨機索引上的數據進行交換Random r = new Random();for (int i = 0; i < temArr.length; i++) {//獲取到隨機索引int index = r.nextInt(temArr.length);//拿著每一個元素跟隨機索引上的數據進行交換int temp = temArr[i];temArr[i] = temArr[index];temArr[index] = temp;}//3.給二維數組添加數據//遍歷一維數組tempArr得到每一個元素,把每一個元素依次添加到數組當中for (int i = 0; i < temArr.length; i++) {data[i / 4][i % 4] = temArr[i];}}//初始化圖片private void initimage() {//外循環  --把內循環重復執行了4次for (int i = 0; i < 4; i++) {//內循環  --表示在一行添加4張圖片for (int j = 0; j < 4; j++) {//獲取當前要加載圖片的序號int num = data[i][j];//創建一個Jlabel的對象(管理容器)JLabel JLabel = new JLabel(new ImageIcon("E:\\\\tool\\\\IDEA-java\\\\java代碼\\\\routing\\\\image\\\\animal\\\\animal3\\\\" + num +".jpg"));//指定圖片的位置JLabel.setBounds(105 * i,105 * j,105,105);//把管理容器添加到界面中this.getContentPane().add(JLabel);}}//------------------------------------------------------}private void initJMenuBar() {//初始化菜單//創建整個的菜單對象JMenuBar jMenuBar = new JMenuBar();//創建菜單上面的兩個選項的對象  (功能  關于我們)JMenu fuctionJMenu = new JMenu("功能");JMenu aboutJMenu = new JMenu("關于我們");//創建選項下面的條目對象JMenuItem replayItem = new JMenuItem("重新游戲");JMenuItem reloginItem = new JMenuItem("重新登錄");JMenuItem closeItem = new JMenuItem("關閉游戲");JMenuItem accountItem = new JMenuItem("公眾號");//將每一個選項下的條目添加到對應的選項中fuctionJMenu.add(replayItem);fuctionJMenu.add(reloginItem);fuctionJMenu.add(closeItem);aboutJMenu.add(accountItem);//將菜單里面的兩個選項添加到菜單中jMenuBar.add(fuctionJMenu);jMenuBar.add(aboutJMenu);//給整個界面設置菜單this.setJMenuBar(jMenuBar);}private void initJFrame() {//設置界面的寬高this.setSize(603,680);//單位是像素//設置界面的標題this.setTitle("拼圖單機版 v1.0");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默認的居中位置,只有取消了才會按照XY軸的形式添加組件this.setLayout(null);}}

App 測試

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

現在就每次運行的結果都不一樣了

6、事件

1、動作監聽

創建myjFrame 界面

package test;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;public class myjFrame extends JFrame implements ActionListener {//創建第一個按鈕對象JButton jbt1 = new JButton("點我啊");//創建第二個按鈕對象JButton jbt2 = new JButton("再點我啊");public myjFrame() {JFrame jFrame = new JFrame();//設置界面的寬高jFrame.setSize(603,680);//設置界面的標題jFrame.setTitle("事件演示");//設置界面置頂jFrame.setAlwaysOnTop(true);//設置界面居中jFrame.setLocationRelativeTo(null);//設置關閉模式jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默認居中模式,只有取消了,才可以按照xy軸的形式添加組件jFrame.setLayout(null);//設置位置和寬高jbt1.setBounds(0,0,100,50);jbt1.addActionListener(this);//設置位置和寬高jbt2.setBounds(0,0,100,50);jbt2.addActionListener(this);//把按鈕添加到界面this.getContentPane().add(jbt1);this.getContentPane().add(jbt2);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {//對當前的按鈕進行判斷//獲取當前被操作的哪個按鈕對象Object source = e.getSource();if (source == jbt1) {jbt1.setSize(200,200);}else if (source == jbt2) {Random r = new Random();jbt2.setLocation(r.nextInt(500),r.nextInt(500));}}
}

測試類:test4

package test;public class test4 {public static void main(String[] args) {new myjFrame();}
}

2、鼠標監聽機制

創建myjFrame2 界面

package test;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;public class myjFrame2 extends JFrame implements MouseListener {//創建一個按鈕對象JButton jtb1 = new JButton("點我啊");public myjFrame2(){//設置界面的寬高this.setSize(603, 680);//設置界面的標題this.setTitle("拼圖單機版 v1.0");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默認的居中放置,只有取消了才會按照XY軸的形式添加組件this.setLayout(null);//給按鈕設置位置和寬高jtb1.setBounds(0,0,100,50);//給按鈕綁定鼠標事件jtb1.addMouseListener(this);//那按鈕添加到整個界面當中this.getContentPane().add(jtb1);//讓整個界面顯示出來this.setVisible(true);}@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("單擊");}@Overridepublic void mousePressed(MouseEvent e) {System.out.println("按下不松");}@Overridepublic void mouseReleased(MouseEvent e) {System.out.println("松開");}@Overridepublic void mouseEntered(MouseEvent e) {System.out.println("劃入");}@Overridepublic void mouseExited(MouseEvent e) {System.out.println("劃出");}
}

測試:test4

package test;public class test4 {public static void main(String[] args) {new myjFrame2();}
}

3、鍵盤監聽

創建界面myjFrame3

package test;import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class myjFrame3 extends JFrame implements KeyListener {public myjFrame3(){//設置界面的寬高this.setSize(603, 680);//設置界面的標題this.setTitle("拼圖單機版 v1.0");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//取消默認的居中放置,只有取消了才會按照XY軸的形式添加組件this.setLayout(null);//給整個窗體添加鍵盤監聽this.addKeyListener(this);//讓界面顯示出來this.setVisible(true);}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {System.out.println("按下不松");}@Overridepublic void keyReleased(KeyEvent e) {System.out.println("松開按鍵");//獲取鍵盤上每一個按鍵的編號int code = e.getKeyCode();System.out.println(code);}
}

測試:test4

package test;public class test4 {public static void main(String[] args) {new myjFrame3();}
}

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

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

相關文章

DDS數據分發服務——提升汽車領域數據傳輸效率

1.引言 隨著智能化技術的快速發展&#xff0c;汽車行業正經歷著一場革命性的變革。如今的分布式系統變得越來越復雜且龐大&#xff0c;對網絡通信基數要求在功能和性能層面越來越高。數據分發服務&#xff08;DDS&#xff09;作為一項先進的數據傳輸解決方案&#xff0c;在汽車…

2369. 檢查數組是否存在有效劃分(動態規劃)

2024-3-1 文章目錄 [2369. 檢查數組是否存在有效劃分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路&#xff1a;代碼&#xff1a; 2369. 檢查數組是否存在有效劃分 思路&#xff1a; 1.狀態定義:f[i]代表考慮將[0,i]是否能被有效劃…

電腦要用多少V的電源?電腦電源輸入電壓是市電

臺式電源的輸出電壓是多少&#xff1f; 電腦電源輸出一般有三種不同的電壓&#xff0c;分別是&#xff1a; 12V、5V、3.3V。 電腦電源負責給電腦配件供電&#xff0c;如CPU、主板、內存條、硬盤、顯卡等&#xff0c;是電腦的重要組成部分。 工作電流根據不同的硬件及其使用狀…

LeetCode15:三數之和

題目描述 給你一個整數數組 nums &#xff0c;判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k 且 j ! k &#xff0c;同時還滿足 nums[i] nums[j] nums[k] 0 。請 你返回所有和為 0 且不重復的三元組。 注意&#xff1a;答案中不可以包含重復的三元組…

【48天筆試強訓】day04

計算糖果 描述 A,B,C三個人是好朋友,每個人手里都有一些糖果,我們不知道他們每個人手上具體有多少個糖果,但是我們知道以下的信息&#xff1a; A - B, B - C, A B, B C. 這四個數值.每個字母代表每個人所擁有的糖果數. 現在需要通過這四個數值計算出每個人手里有多少個糖果…

編程語言:SQL Server數據庫使用教程,SQL Server增刪改查語句

「作者主頁」&#xff1a;士別三日wyx 「作者簡介」&#xff1a;CSDN top100、阿里云博客專家、華為云享專家、網絡安全領域優質創作者 「推薦專欄」&#xff1a;對網絡安全感興趣的小伙伴可以關注專欄《網絡安全自學教程》 SQL Server是微軟提供的一種關系型數據庫&#xff0c…

Python算法100例-3.3 阿姆斯特朗數

完整源代碼項目地址&#xff0c;關注博主私信源代碼后可獲取 1.問題描述2.問題分析3.算法設計4.確定程序框架5.完整的程序6.問題拓展 1&#xff0e;問題描述 如果一個整數等于其各個數字的立方和&#xff0c;則該數稱為“阿姆斯特朗數”&#xff08;亦稱為自戀性數&#xff…

nacos開啟鑒權+springboot配置用戶名密碼

nacos默認沒有開啟鑒權&#xff0c;springboot無需用戶名密碼即可連接nacos。從2.2.2版本開始&#xff0c;默認控制臺也無需登錄直接可進行操作。 因此本文記錄一下如何開啟鑒權&#xff0c;基于nacos2.3.0版本。 編輯nacos服務端的application.properties&#xff1a; # 開…

Linux/Docker 修改系統時區

目錄 1. Linux 系統1.1 通過 timedatectl 命令操作1.2 直接修改 /etc/localtime 文件 2. Docker 容器中的 Linux 操作環境&#xff1a; CentOS / AlmaOSMySQL Docker 鏡像 1. Linux 系統 1.1 通過 timedatectl 命令操作 使用 timedatectl list-timezones 命令列出可用的時區…

uniapp 地圖行車軌跡

文章目錄 uniapp 地圖行車軌跡1、畫地圖2、切換地圖中心點3、畫路線4、軌跡移動5、標記點及自定義內容 uniapp 地圖行車軌跡 官網地圖組件&#xff1a;https://uniapp.dcloud.net.cn/component/map.html 官網地圖組件控制&#xff1a;https://uniapp.dcloud.net.cn/api/locati…

【Java數據結構 -- 二叉樹的基本操作】

二叉樹的基本操作 1.獲取樹中節點的個數1.1 計數器遞歸的思路1.2 子問題思路&#xff1a; 2. 獲取葉子個數3. 獲取第k層節點的個數4.獲取二叉樹的高度5.檢測值為value的元素是否存在 1.獲取樹中節點的個數 思路&#xff1a;整棵樹的節點個數 左子樹的節點個數&#xff0b;右子…

休息日的思考與額外題——雙指針、原地哈希day28

文章目錄 前言一、11. 盛最多水的容器二、41. 缺失的第一個正數三、42. 接雨水總結 前言 一個本碩雙非的小菜雞&#xff0c;備戰24年秋招&#xff0c;計劃二刷完卡子哥的刷題計劃&#xff0c;加油&#xff01; 二刷決定精刷了&#xff0c;于是參加了卡子哥的刷題班&#xff0c…

32單片機基礎:旋轉編碼器計次

接線圖如上圖所示。 我們初始化一下PB0和PB1兩個GPIO口外設中斷&#xff0c;當然&#xff0c;這里只初始化一個外部中斷也能完成功能的對于編碼器而言&#xff0c;下圖所示為正轉的波形。如果把一相的下降沿用作觸發中斷&#xff0c;在中斷時刻讀取另一相的電平&#xff0c;正…

【EXCEL】SUMIFS多次條件篩選數據

問題案例 有如下兩個工作表&#xff08;Sheet1和Sheet2&#xff09;&#xff1a; 在sheet1中的C2行獲得一個結果&#xff08;項目1的1月收入&#xff09;&#xff0c;是對sheet2中的A列篩選出“項目1”B列篩選出“202401”而獲得對應C列的結果。借助excel的公式如何實現。 S…

【算法科目】2024年第二屆全國大學生信息技術認證挑戰賽 題解

圖像壓縮 曾經看到過&#xff0c;這是一道洛谷原題&#xff0c;很可惜我沒做過&#xff0c;有點看不懂就沒嘗試。 原題鏈接&#xff1a;B3851 [GESP202306 四級] 圖像壓縮 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 因數分解 直接枚舉就行了&#xff0c;從2開始找因子&a…

Spring:EnclosingClass工具類分辨

Spring&#xff1a;EnclosingClass工具類分辨 1 前言 通過Spring的工具分辨EnclosingClass類。 測試類如下&#xff1a; package com.xiaoxu.test.enclosingClass;/*** author xiaoxu* date 2024-01-18* java_demo2:com.xiaoxu.test.enclosingClass.Outter*/ public class …

微信小程序(四十六)登入界面-進階版

注釋很詳細&#xff0c;直接上代碼 上一篇 此文使用了vant組件庫&#xff0c;沒有安裝配置的可以參考此篇vant組件的安裝與配置 新增內容&#xff1a; 1.手機號與驗證碼格式驗證 2.驗證碼的網絡申請和校驗 wechat-http模塊在好幾篇以前已經講了咋安裝的&#xff0c;不記得的友…

為什么要用Python?

為什么要用Python&#xff1f; Python簡單易用&#xff1a;提供大量的簡單易用數據結構和內置庫&#xff0c;語法結構也很簡單易讀&#xff0c;不需要使用括號來進行代碼塊分組&#xff0c;也不需要預聲明變量或參數。Python開發效率高&#xff1a;簡單易用的前提下&#xff0…

vue3輸入單號和張數,自動生成連號的單號

需求&#xff1a; 輸入連號事件&#xff0c;需要在表格中輸入物流單號&#xff0c;物流號碼&#xff0c;生成的數量&#xff0c;名稱&#xff0c;點擊確定自動生成固定數量的連號物流單號 1.頁面布局 <div><el-button type"primary" size"default&quo…

最新版阿里云Linux CentOS7 ecs-user用戶安裝Mysql8詳細教程(超簡單)

經過兩天的踩坑后&#xff0c;終于成功安裝&#xff0c;并找到了最快捷的安裝方式。接下來就由我來給大家介紹不踩坑安裝大法&#xff01; 一、下載Mysql 首先前往Mysql官網下載 MySQL官方下載地址 第一步&#xff0c;選擇安裝包&#xff0c;這是最關鍵的一步&#xff0c;選錯安…