Java GUI制作双人对打游戏(上)

文章目录

  • 前言
  • 什么是Java GUI
  • 一、打开IDEA 新建一个Maven项目(后续可以打包、引入相关依赖也很容易)
  • 二、引入依赖
  • 三.绘制UI界面
  • 四.绘制JPanel面板
  • 总结


前言

什么是Java GUI

Java UI,即Java用户界面,是指使用Java编程语言创建的图形用户界面(GUI)。Java提供了多种工具和技术来创建和管理用户界面,使得开发者能够构建具有丰富交互性和吸引力的应用程序。

在Java中,用于构建UI的主要库和框架包括:

Swing:Swing是Java平台标准版(Java SE)的一部分,它提供了一组丰富的GUI组件和布局管理器,用于构建跨平台的桌面应用程序。Swing组件包括按钮、文本框、标签、滑块等,以及更复杂的组件如表格和树形结构。
JavaFX:JavaFX是一个用于构建富客户端应用程序的图形和媒体库。它提供了现代化的UI组件、动画、Web集成和媒体支持。与Swing相比,JavaFX更加现代和灵活,适用于构建复杂的用户界面和多媒体应用程序。
AWT:AWT(Abstract Window Toolkit)是Java中最早的GUI工具包,提供了基本的窗口、按钮和文本框等组件。然而,随着Swing和JavaFX的出现,AWT的使用逐渐减少,但仍在一些旧的或特定的应用程序中使用。
在构建Java UI时,开发者通常会遵循以下步骤:

设计界面:首先,开发者需要设计应用程序的用户界面,确定所需的组件、布局和交互方式。
选择库和框架:根据应用程序的需求和目标平台,选择适合的Java UI库和框架。
创建组件:使用所选库和框架提供的API创建所需的UI组件,并设置它们的属性(如大小、颜色、字体等)。
布局管理:使用布局管理器来组织和管理组件在界面上的位置和大小。Java提供了多种布局管理器,如边界布局、网格布局和流式布局等。
事件处理:为组件添加事件监听器,以便在用户与界面交互时执行相应的操作(如点击按钮、选择菜单项等)。
测试和调试:在开发过程中不断测试和调试UI,确保其正常运行并符合设计要求。
通过Java UI技术,开发者可以创建出功能强大、外观美观的应用程序,提供丰富的用户体验。这些应用程序可以运行在桌面、移动设备或其他Java支持的平台上。

在这里插入图片描述

上图是制作成功的效果图 通过A、D来控制蓝色人物前进防御和后退,J、K、L来控制拳、防御、踢腿
红色人物对应的是左箭头、右箭头以及1、2、3.


制作这个小游戏 作者打算用2篇博文来分享整个过程 本文作为一个引入

一、打开IDEA 新建一个Maven项目(后续可以打包、引入相关依赖也很容易)

建完之后的整体结构如下:
在这里插入图片描述

二、引入依赖

因为需要播放MP3格式的背景音乐于是要引入相关依赖:
在pom.xml中添加下面的代码

    <dependencies>
        <dependency>
            <groupId>javazoom</groupId>
            <artifactId>jlayer</artifactId>
            <version>1.0.1</version>
        </dependency>

    </dependencies>

三.绘制UI界面

代码如下:

package src;
import javazoom.jl.player.Player;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
public class UI extends JFrame implements KeyListener {
    WarPanel warPanel=new WarPanel();
    Player player;
    public UI(){
        this.setTitle("赤色妖精花2.0");
        this.setLocation(0,0);
        this.setSize(1024,680);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.add(warPanel);
        this.addKeyListener(this);
        warPanel.action();
    }
    public static void main(String[] args) {
        UI ui=new UI();
        ui.init();
    }
    public void init(){
        while(true)
        {
            try
            {
               InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/bgm12.mp3");
             playmusic(resourceAsStream);
                Thread.sleep(82800);
            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
    public void playmusic(InputStream inputStream) throws Exception{
//        BufferedInputStream bufferedInputStream=new BufferedInputStream(inputStream);
        player=new Player(inputStream);
        player.play();
    }
    public void playmusic(String music) throws Exception{
        BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(music));
        player=new Player(bufferedInputStream);
        player.play();
    }
    public void sound(String str)
    {
        try {
            FileInputStream in = new FileInputStream(str);
            AudioStream as=new
                    AudioStream(in);
            AudioPlayer.player.start(as);
        }catch(Exception e)
        {
            e.printStackTrace();
        }
}
    public void sound(InputStream inputStream)
    {
        try {
            AudioStream as=new
                    AudioStream(inputStream);
            AudioPlayer.player.start(as);
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
//        System.out.println(e.getKeyCode());
        warPanel.restart(e.getKeyCode());
        warPanel.manmove(e.getKeyCode());
        warPanel.mastermove(e.getKeyCode());

    }

    @Override
    public void keyReleased(KeyEvent e) {
        warPanel.mastercancel(e.getKeyCode());
        warPanel.mancancel(e.getKeyCode());

    }
}

四.绘制JPanel面板

JPanel是Java Swing库中的一个关键组件,它提供了许多优点,使得开发者能够更高效地创建复杂的图形用户界面(GUI)。以下是JPanel的一些主要优点:
轻量级容器:JPanel是一个轻量级的容器,这意味着它使用了本地窗口系统的较少资源,因此更加高效。轻量级组件的绘制通常比重量级组件更快,并且更易于管理。
灵活的布局管理:JPanel允许使用各种布局管理器来控制其内部组件的布局。例如,你可以使用FlowLayout、BorderLayout、GridLayout等,这使得开发者能够轻松地排列和调整组件的位置和大小,以满足不同的界面设计需求。
嵌套和组合:JPanel可以嵌套在其他Swing容器中,如JFrame、JDialog等,这使得开发者能够创建复杂的界面结构。通过组合多个JPanel,你可以实现更精细的界面布局和组件组织。
事件处理:JPanel支持事件监听器,使得开发者能够响应用户与界面的交互,如按钮点击、鼠标移动等。这使得应用程序能够更加响应用户的操作,提供更好的用户体验。
自定义绘制:JPanel提供了绘制自定义图形、图像或文本的功能。你可以通过重写paintComponent方法来实现自定义绘制逻辑,从而创建独特的视觉效果。
易于扩展和集成:由于JPanel是Swing库的一部分,它与其他Swing组件具有良好的集成性。此外,由于其开源性质,开发者可以根据需要扩展JPanel的功能,以满足特定的应用需求。
综上所述,JPanel作为Java Swing库中的一个核心组件,具有轻量级、灵活布局、嵌套组合、事件处理、自定义绘制以及易于扩展和集成等优点,使得开发者能够高效地创建复杂的图形用户界面。

package src;

import javazoom.jl.player.Player;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;

public class WarPanel extends JPanel {
    private static String LEFT="left";
    private static String RIGHT="right";
    private static String STATIC="static";
    String path=null;
    int x;
    int y;
    int bloodMan=430;
    int bloodMaster=413;
    int time=600;
    InputStream AsStream=this.getClass().getClassLoader().getResourceAsStream("music/victorymaster.mp3");
    InputStream AsStream1=this.getClass().getClassLoader().getResourceAsStream("music/victoryman.mp3");

    SuperMan superMan=new SuperMan();
    Matser matser=new Matser();
    public BufferedImage StreamToImage(String str){
        InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(str);
        BufferedImage bufferedImage=null;
        try {
            bufferedImage= ImageIO.read(resourceAsStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bufferedImage;

    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);


        InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("image/background1.jpg");
        BufferedImage read=null;
        try {
             read= ImageIO.read(resourceAsStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Image image = new ImageIcon(read).getImage();
        g.drawImage(image, 0, 0, 1024, 680, null);
        if(time>0) {
            if(bloodMan>0&&bloodMaster>0){
                BufferedImage image11 = StreamToImage("image/bloodliang.png");


                Image image1 = new ImageIcon(image11).getImage();

                g.drawImage(image1, 10, 20, null);
                g.drawImage(image1, 510, 20, null);


                drawSuperMan(g);
                drawMaster(g);
                drawblood(g);


                g.setColor(Color.BLUE);
                Font font1 = new Font("黑体", Font.BOLD, 20);
                g.setFont(font1);
                g.fillRect(44, 38, bloodMan, 20);

                g.setColor(Color.RED);
                Font font = new Font("黑体", Font.BOLD, 20);
                g.setFont(font);
                g.fillRect(550, 38, bloodMaster, 20);

                g.setColor(Color.CYAN);
                Font font2 = new Font("黑体", Font.BOLD, 20);
                g.setFont(font2);
                g.drawString("" + time / 10, 502, 100);

            }
            else if(bloodMan<=0&&bloodMaster>0)
            {
                g.setColor(Color.WHITE);
                Font font3 = new Font("黑体", Font.BOLD, 80);
                g.setFont(font3);
                g.drawString(" The red side ",200,300);
                g.drawString("won  the  game.",200,400);

                try {
                    if(AsStream == null)
                    {

                    }
                    else {


                        playmusic(AsStream);
                        AsStream=null;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
            else if(bloodMaster<=0&&bloodMan>0)
            {
                g.setColor(Color.WHITE);
                Font font3 = new Font("黑体", Font.BOLD, 80);
                g.setFont(font3);
                g.drawString(" The blue side ",200,300);
                g.drawString("won   the   game.",200,400);

                try {
                    if(AsStream1 == null)
                    {

                    }
                    else {


                        playmusic(AsStream1);
                        AsStream1=null;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }


        }
        else
        {
            if(bloodMaster>bloodMan)
            {
                g.setColor(Color.WHITE);
                Font font3 = new Font("黑体", Font.BOLD, 80);
                g.setFont(font3);
                g.drawString(" The red side ",200,300);
                g.drawString("won  the  game.",200,400);



                try {
                    if(AsStream == null)
                    {

                    }
                    else {


                        playmusic(AsStream);
                        AsStream=null;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
            else{
                g.setColor(Color.WHITE);
                Font font3 = new Font("黑体", Font.BOLD, 80);
                g.setFont(font3);
                g.drawString(" The blue    side ",200,300);
                g.drawString("won  the  game.",200,400);

                try {
                    if(AsStream1 == null)
                    {

                    }
                    else {


                        playmusic(AsStream1);
                        AsStream1=null;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }

        }

        time--;

    }

    public void drawblood(Graphics g)
    {

        if (path ==null) {


        }
        else
        {
            BufferedImage image11 = StreamToImage(path);
            Image image = new ImageIcon(image11).getImage();
            g.drawImage(image, x, y, null);

        }



    }

    private void drawMaster(Graphics g) {
        matser.drawMe(g);
    }

    private void drawSuperMan(Graphics g)
    {

        superMan.drawMe(g);

    }
    public void playmusic(InputStream inputStream) throws Exception{
//        BufferedInputStream bufferedInputStream=new BufferedInputStream(inputStream);
        Player player=new Player(inputStream);
        player.play();


    }

    public void manmove(int keyCode) {
        switch (keyCode){
            case KeyEvent.VK_A:
                superMan.setPose("left");
                break;
            case KeyEvent.VK_D:
                superMan.setPose("right");
                break;
            case KeyEvent.VK_J:
                if(superMan.getPose().equals("foot"))
                {

                }else{

                    superMan.setPose("hand");


                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/handhit.wav");
                    sound(resourceAsStream);

                }
            case KeyEvent.VK_K:
                if(superMan.getPose().equals("foot")||superMan.getPose().equals("hand"))
                {

                }else{
                    superMan.setPose("defense");
                }
                break;
            case KeyEvent.VK_L:
                if(superMan.getPose().equals("hand"))
                {

                }else{
                    superMan.setPose("foot");


                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/footman.wav");
                    sound(resourceAsStream);
                }


                break;


        }
    }
    public void mastermove(int keyCode) {
        switch (keyCode){
            case KeyEvent.VK_RIGHT:
                matser.setPose("right");
                break;
            case KeyEvent.VK_LEFT:
                matser.setPose("left");
                break;
            case KeyEvent.VK_NUMPAD1:
                if(matser.getPose().equals("hand"))
                {

                }else{
                    matser.setPose("foot");
                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/footmaster.wav");
                    sound(resourceAsStream);
                }


                break;
            case KeyEvent.VK_NUMPAD3:

                if(matser.getPose().equals("foot"))
                {

                }else{
                    matser.setPose("hand");
                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/hithand.wav");
                    sound(resourceAsStream);
                }
                break;
            case KeyEvent.VK_NUMPAD2:
                if(matser.getPose().equals("foot")||matser.getPose().equals("hand"))
                {

                }else{
                    matser.setPose("defense");
                }

                break;


        }
    }
    public void mastercancel(int keyCode) {
        switch(keyCode){
            case KeyEvent.VK_NUMPAD2:
                if(matser.getPose().equals("foot")||matser.getPose().equals("hand"))
                {

                }else{
                    matser.setPose(STATIC);
                }

                break;
        }

    }
    public void action(){
        Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                    hit();
                    repaint();


            }
        },20,100);//delay延迟20毫秒后,period每隔10毫秒执行一次run里面的内容

    }


    public void mancancel(int keyCode) {
        switch(keyCode){
            case KeyEvent.VK_K:
                if(superMan.getPose().equals("foot")||superMan.getPose().equals("hand"))
                {

                }else{
                    superMan.setPose(STATIC);

                }

                break;
        }
    }
    //碰撞检测
    int j=0;
    public void hit(){
        boolean toright1=superMan.toright;
        boolean toright2=matser.toright;

        Image image1;
        String imagePath1 = superMan.getImagePath();
        if(imagePath1==null){
            BufferedImage image11 = StreamToImage("master/toright1.png");
             image1= new ImageIcon(image11).getImage();


        }
        else{
            BufferedImage image11 = StreamToImage(imagePath1);
            image1 = new ImageIcon(image11).getImage();

        }


        int width1 = image1.getWidth(null);
        int height1 = image1.getHeight(null);
        int x1=superMan.getManx();
        int y1=superMan.getMany();
        String pose1 = superMan.getPose();


//        System.out.println(width1);
//        System.out.println(height1);
//        System.out.println(x1);
//        System.out.println(y1);


        String imagePath2 = matser.getImagePath();
        BufferedImage image12 = StreamToImage(imagePath2);
        Image image2 = new ImageIcon(image12).getImage();
        int width2 = image2.getWidth(null);
        int height2 = image2.getHeight(null);
        int x2=matser.getManx();
        int y2=matser.getMany();
        String pose2 = matser.getPose();
//        man的拳 master的静态
        if(pose1.equals("hand")&&pose2.equals("static"))
        {
           if(toright1)
           {
               if(x1+width1>x2&&x1+width1<x2+width2&&y1+height1/3>y2&&y1+height1/3<y2+height2)
               {

                   j++;

                   x=x1+width1;
                   y=y1+height1/5;
                   path="image/blood1.png";
                   InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit1.wav");
                   sound(resourceAsStream);
                   bloodMaster-=10;
                   x2+=5;
                   matser.setManx(x2);
                   if(j>5)
                   {
                       j=0;
                   }

               }
               else{
                   path=null;

               }

           }
           else
           {
               if(x1>x2&&x1<x2+width2&&y1+height1/3>y2&&y1+height1/3<y2+height2)
               {

                   j++;

                   x=x1;
                   y=y1+height1/5;
                   path= "image/blood1.png";


                   InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit1.wav");
                   sound(resourceAsStream);
                   x2-=5;
                   matser.setManx(x2);
                   bloodMaster-=10;
                   if(j>5)
                   {
                       j=0;
                   }

               }
               else{
                   path=null;

               }

           }




        }
//        man的脚 master的静态
        else if(pose1.equals("foot")&&pose2.equals("static")){


            if(toright1){
                if(x1+width1>x2&&x1+width1<x2+width2&&y1+height1/3>y2&&y1+height1/3<y2+height2) {
                    x = x1 + width1;
                    y = y1 + height1 *3/ 5;
                    path = "image/blood1.png";


                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit1.wav");
                    sound(resourceAsStream);
                    x2+=5;
                    matser.setManx(x2);
                    bloodMaster -= 8;
                }
                else{
                    path=null;
                }

            }else{
                if(x1>x2&&x1<x2+width2&&y1+height1/3>y2&&y1+height1/3<y2+height2) {
                    x = x1;
                    y = y1 + height1 *3/ 5;
                    path = "image/blood1.png";

                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit1.wav");
                    sound(resourceAsStream);
                    x2-=5;
                    matser.setManx(x2);
                    bloodMaster -= 8;
                }
                else{
                    path=null;
                }

            }



        }
//          master的拳 man的静态
        else if(pose2.equals("hand")&&pose1.equals("static"))
        {
            if(toright2){
                if(x2+width2>x1&&x2+width2<x1+width1&&y1+height1/3>y2&&y1+height1/3<y2+height2)
                {
                    x = x2+width2;
                    y = y2 + height1 / 5;
                    path = "image/blood1.png";


                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit.wav");
                    sound(resourceAsStream);
                    bloodMan -= 10;
                    x1+=3;
                    superMan.setManx(x1);
                }
                else
                {
                    path=null;
                }




            }
            else {
                if(x2>x1&&x2<x1+width1&&y1+height1/3>y2&&y1+height1/3<y2+height2)
                {
                    x = x2;
                    y = y2 + height1 / 5;
                    path = "image/blood1.png";


                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit2.wav");
                    sound(resourceAsStream);
                    bloodMan -= 10;
                    x1-=3;
                    superMan.setManx(x1);
                }
                else
                {
                    path=null;
                }

            }




        }


        else if(pose1.equals("static")&&pose2.equals("foot")){
            if(toright2)
            {
                if(x2+width2>x1&&x2+width2<x1+width1&&y1+height1/3>y2&&y1+height1/3<y2+height2)
                {
                    j++;

                    x=x2+width2;
                    y=y2+height1*3/5;
                    path="image/blood1.png";

                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit.wav");
                    sound(resourceAsStream);
                    bloodMan-=10;
                    x1+=5;
                    superMan.setManx(x1);
                    if(j>5)
                    {
                        j=0;
                    }


                }
                else{
                    path=null;
                }

            }
            else{
                if(x2>x1&&x2<x1+width1&&y1+height1/3>y2&&y1+height1/3<y2+height2)
                {
                    j++;

                    x=x2;
                    y=y2+height1*3/5;
                    path="image/blood1.png";
                    InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("music/afterhit.wav");
                    sound(resourceAsStream);
                    bloodMan-=10;
                    x1-=5;
                    superMan.setManx(x1);
                    if(j>5)
                    {
                        j=0;
                    }


                }
                else{
                    path=null;
                }

            }




        }
        else{
            path=null;

        }





    }
    public void sound(InputStream inputStream)
    {
        try {


            AudioStream as=new
                    AudioStream(inputStream);
            AudioPlayer.player.start(as);
        }catch(Exception e)
        {
            e.printStackTrace();
        }

    }

    public void sound(String str)
    {
        try {
            FileInputStream in = new FileInputStream(str);
            AudioStream as=new
                    AudioStream(in);
            AudioPlayer.player.start(as);
        }catch(Exception e)
        {
            e.printStackTrace();
        }

    }

    public void restart(int keyCode) {
        if(time<=0||bloodMan<=0||bloodMaster<=0)
        switch(keyCode){
            case KeyEvent.VK_SHIFT:
                time=600;
                bloodMan=430;
                bloodMaster=413;


        }
    }
}


总结

以上是这款对打游戏的初始构建,后续的博文将完成剩下的部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/551378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实现分布式锁

实现分布式锁的两个核心&#xff1a; 一、获取锁 1、获取锁线程互斥性 为了实现只有一个线程能继续执行业务代码&#xff0c;必须保证获取锁具有互斥性&#xff0c;即只有一个线程能获取到锁。 Redis中操作数据是单线程的&#xff0c;可以使用Redis提供的set nx ex命令获取锁。…

鸿蒙原生应用元服务-访问控制(权限)开发等级和类型

一、权限等级说明 根据接口所涉数据的敏感程度或所涉能力的安全威胁影响&#xff0c;ATM模块定义了不同开放范围的权限等级来保护用户隐私。 应用APL等级说明 元能力权限等级APL&#xff08;Ability Privilege Level&#xff09;指的是应用的权限申请优先级的定义&#xff0c;…

Ubuntu 22.04 安装 zabbix

Ubuntu 22.04 安装 zabbix 1&#xff0c;Install Zabbix repository2&#xff0c;安装Zabbix server&#xff0c;Web前端&#xff0c;agent3&#xff0c;安装mysql数据库3.1 创建初始数据库3.2 导入初始架构和数据&#xff0c;系统将提示您输入新创建的密码。3.3 在导入数据库架…

课题学习(二十一)----姿态更新的四元数算法推导

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。    最近需要使用AEKF对姿态进行结算&#xff0c;所以又对四元数进了深入的学习&#xff0c;本篇博客仅对四元数进行推导&#xff0c;后续会对基于四元数的…

kafka学习笔记03

SpringBoot2.X项目搭建整合Kafka客户端依赖配置 用自己对应的jdk版本。 先加上我们的web依赖。 添加kafka依赖: SpringBoot2.x整合Kafka客户端adminApi单元测试 设置端口号。 新建一个kafka测试类&#xff1a; 创建一个初始化的Kafka服务。 设置kafka的名称。 测试创建kafka。…

Gitee和Git学习笔记

Gitee和Git指令 Gitee提交代码方法1 先将仓库clone到本地&#xff0c;修改后再push到 Gitee 的仓库方法2 本地初始化一个仓库&#xff0c;设置远程仓库地址后再做push 切换分支下载代码通过git clone克隆仓库通过下载 ZIP 的方式下载代码 Git提交指令 解决本地库同时关联GitHub…

数据库SQL语言实战(三)

删除操作 本篇文章重点在于SQL中的各种删除操作 题目一 删除表中的学号不全是数字的那些错误数据&#xff0c;学号应该是数字组成&#xff0c;不能够包含字母空格等非数字字符。方法之一&#xff1a;用substr函数&#xff0c;例如Substr(sid,1,1)返回学号的第一位&#xff0…

数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对博主首页也很感兴趣o (ˉ▽ˉ&#xff1b;) 博主首页&#xff0c;更多redis、java等优质好文以及各种保姆级教程等您挖掘&#xff01; 目录 需求分析 常用案例举例 加盐加密逻辑如何对比原数据&…

分布式光纤测温解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、方案介绍 分布式光纤测温&#xff08;DTS&#xff09;集光电信号检测、计算机技术等为一体&#xff0c;具有实时监测、测温精度高、测量距离长、可精确定位、采用光纤作为传感器和传输介质&#xff0c;具有抗电磁干扰、本征防…

GVRP协议与动态、静态vlan

一、GVRP协议使用场景 1、当实际组网复杂到网络管理员无法短时间内了解网络的拓扑结构&#xff0c;或者是整个网络的VLAN太多时&#xff0c;工作量会非常大&#xff0c;而且非常容易配置错误。在这种情况下&#xff0c;用户可以通过GVRP的VLAN自动注册功能完成VLAN的配置。 2、…

【Vue3】setup语法糖的使用

文章目录 setup简介使用vite-plugin-vue-setup-extend插件 指定组件名字 setup简介 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖 相比较普通的<script> ,它有以下优势&#xff1a; 更少的样板内容&#xff0c;更简洁的代码。能够使用纯…

【教程】如何使用ArcPy快速批量的处理数据

前面介绍了如何构建自己的ArcGIS工具箱&#xff0c;能够极大地减轻繁琐重复的工作&#xff0c;可查看&#xff1a; 【教程】如何自制一个ArcGIS工具箱&#xff08;ArcPy和模型构建器的使用&#xff09; 除了制作工具箱来实现自动处理重复性的工作&#xff0c;还可以使用ArcPy…

解决Error (169281)、Error (169282)报错问题,QuartusII设置Virtual Pin虚拟管脚的详细操作方法

解决Error(169281)、Error(169282)报错问题,QuartusII设置Virtual Pin虚拟管脚的详细操作方法 1,QuartusII报错信息2,解决办法3,重新编译,成功参考文献: 1,Quartus如何设置虚拟管脚Virtual Pin(具体设置方法) 1,QuartusII报错信息 报错原因:    为了验证FPGA工…

vr兽医设备操作模拟仿真教学平台提升教学效果

在兽医教育的传统领域中&#xff0c;动物诊疗一直是一项不可或缺的实践环节。然而&#xff0c;传统的解剖教学方式受限于动物数量、种类以及安全隐患&#xff0c;无法充分满足学生的学习需求。随着VR虚拟仿真技术的不断精进&#xff0c;VR动物诊疗仿真实训系统为兽医教育带来了…

福州复式装修,115平四室三厅现代简约风。福州中宅装饰,福州装修

设计亮点 设计理念&#xff1a; 静享时光谧境 克制的优雅&#xff0c;简约的沉淀 以光为引&#xff0c;以意为境 案例简介&#xff1a; 该方案现代风格为整个设计带来现代的舒适感&#xff0c;各种材质相互碰撞的设计&#xff0c;即保持着整齐的视感&#xff0c;又将高级气质凸…

所有人记住!电商选品千万别学会这6个步骤!我怕你流量池爆掉!

电商选品是一个非常重要的环节&#xff0c;它直接关系到店铺的流量、销售以及客户的满意度&#xff0c;做好选品才能打造爆款产品&#xff0c;提升流量和销售。因此&#xff0c;正确的电商选品步骤是至关重要的。以下是一些店雷达帮大家梳理的关键电商选品步骤以及运营建议&…

全国产化无风扇嵌入式车载电脑在救护车远端诊断的行业应用

救护车远端诊断的行业应用 背景介绍 更加快速的为急症病人在第一时间开始进行诊断和治疗,是提高病人救助成功率的关键。因此&#xff0c;先进的救护系统正在思考&#xff0c;如何在病人进入救护车之后&#xff0c;立刻能够将救护车中各种检查仪器的信息快速的传回医院&#xf…

移动端vue3使用pdfjs在浏览器上面运行正常,在移动端页面报错出现空白页

1.PDFjs文件包&#xff1a; 分享一下PDFjs文件包&#xff0c;这是我在其他博客那里找到的&#xff0c;找了好久&#xff0c;在官网下载一天了&#xff0c;一直下载失败&#xff0c;只能去找其他人的。我也想把这个包分享给大家&#xff0c;真心好用。一开始我的浏览器页面一直…

黄仁勋最新访谈:GPU性能的革命性提升与AI未来

近期&#xff0c;英伟达CEO黄仁勋与美国CNBC知名主持人、股评人吉姆克莱默&#xff08;Jim Cramer&#xff09;在《Mad Money》节目中展开了一场关于技术未来和人工智能的对话。访谈里&#xff0c;黄仁勋不仅提到了英伟达在过去八年中将AI算力性能提高1000倍&#xff0c;还预言…

前端Vue3+uni+Ts

本次记录小兔仙仙的制作过程。 先看下我们的项目截图。主要是手机端&#xff0c;这里用了uniappVScode.三端适配的。可以打包成安卓和苹果。微信小程序。 首先&#xff1a;创建一个uni新的ts项目。 # 通过 git 从 gitee 克隆下载 登录 - Gitee.com git clone -b vite-ts http…
最新文章