Java Swing制作大鱼吃小鱼魔改版本

《大鱼吃小鱼》这款游戏的历史渊源可以追溯到休闲游戏的兴起和发展。在游戏的早期发展阶段,开发者们开始探索各种简单而有趣的游戏玩法,以吸引玩家的注意力。在这样的背景下,《大鱼吃小鱼》应运而生,它结合了自然界的食物链原理与休闲游戏的轻松氛围,为玩家带来了一种新颖而有趣的游戏体验。
具体来说,这款游戏以神秘的海底世界为背景,让玩家扮演一条小鱼,通过不断吞噬比自己小的鱼类来逐渐成长,最终成为海洋中的霸主。在游戏中,每一关卡都设有玩法提示和海洋鱼类知识学习,使玩家在娱乐的同时也能学习到一些有关海洋生物的知识。

此外,游戏还添加了积分制度和动听愉快的背景音乐,使得整个游戏过程更加有趣和刺激。这种简单而富有挑战性的玩法,使得《大鱼吃小鱼》迅速流行起来,尤其是在白领阶层中,成为了一款广受欢迎的休闲游戏。

综上所述,《大鱼吃小鱼》这款游戏的历史渊源可以归结为休闲游戏的发展和探索,以及自然界食物链原理与游戏玩法的巧妙结合。这些因素共同促成了这款游戏的诞生和流行。

在这里插入图片描述
在这里插入图片描述

文章目录

  • 一、Java Swing是什么?
  • 二、Java Swing有哪些组件
  • 三.开始游戏制作
    • 1.项目结构
    • 2.代码如下:
  • 运行效果


一、Java Swing是什么?

Java Swing是Java平台提供的一套图形用户界面(GUI)工具包,用于构建桌面应用程序的用户界面。Swing是AWT(Abstract Window Toolkit)的扩展和替代,提供了更丰富的组件集和更现代化的外观。Swing组件完全是用Java编写的,因此具有跨平台性,这意味着Swing应用程序在不同的操作系统(如Windows、Linux和macOS)上的外观和行为是一致的。

Swing提供了一系列GUI组件,包括按钮、文本框、列表、表格、滑块、进度条等,以及布局管理器,用于控制这些组件在界面上的排列和布局。它还提供了事件处理机制,允许开发者为组件添加交互行为,如点击事件、键盘事件等。

使用Swing,开发者可以创建复杂的桌面应用程序,包括具有多个窗口、对话框和自定义组件的界面。Swing还支持自定义组件的外观和行为,使开发者能够创建独特的用户界面。

总的来说,Java Swing是Java开发人员在构建桌面应用程序时经常使用的工具包之一,它提供了丰富的组件和灵活的布局管理,使得创建具有吸引力的用户界面变得相对容易。

二、Java Swing有哪些组件

JFrame:JFrame 是 Swing 组件的基础,用于显示程序界面。它是所有 Swing GUI 应用程序的顶层容器。
JPanel:JPanel 是一个容器,用于承载其他组件,如按钮、文本框等。它可以作为 JFrame 的内容面板,也可以作为其他容器的子面板。
JButton:JButton 是最常用的组件之一,用于创建可点击的按钮。
JLabel:JLabel 用于显示文本或图像,但不接受用户输入。
JTextField:JTextField 是一个单行文本框,允许用户输入单行文本。
JTextArea:JTextArea 是一个多行文本框,允许用户输入多行文本。
JComboBox:JComboBox 是一个下拉列表,允许用户从多个选项中选择一个。
JList:JList 用于显示一个可滚动的选项列表,用户可以选择一个或多个项目。
JScrollPane:JScrollPane 提供了滚动功能,可以将大型组件(如 JList 或 JTextArea)嵌入其中,以便在界面上滚动查看。
JMenuBar, JMenu, JMenuItem:这些组件用于创建菜单栏、菜单和菜单项,为用户提供程序功能的快速访问。
JSliderJFrame:JFrame 是 Swing 组件的基础,用于显示程序界面。它是所有 Swing GUI 应用程序的顶层容器。
JPanel:JPanel 是一个容器,用于承载其他组件,如按钮、文本框等。它可以作为 JFrame 的内容面板,也可以作为其他容器的子面板。

三.开始游戏制作

1.项目结构

在这里插入图片描述

2.代码如下:

总共设置了五种鱼类:
并对其按照战力 进行了排序(图片素材全都来自网络资源 由作者进行裁剪 如有侵权 敬请告知删除
主角是懒羊羊
在这里插入图片描述

import javax.swing.*;
import java.awt.*;public class BigEnemy extends Fish{public BigEnemy(){power=3;int r=(int)(Math.random()*2); //生成0,1两个随机数用来标志向左还是向右if(r==0){int a=(int)(Math.random()*2)+1;isMoveLeft=false;//朝向右 从最左边出来x=-168;image=new ImageIcon("image/BigRight"+a+".png").getImage();}else{int a=(int)(Math.random()*2)+1;isMoveLeft=true;//朝向左,从最右边出来x=1080;image=new ImageIcon("image/BigLeft"+a+".png").getImage();}y=(int)(Math.random()*600);length=250;height=150;}@Overridepublic void drawFish(Graphics g) {super.drawFish(g);if(isMoveLeft) {g.drawImage(image, x--, y, length, height, null);}else{g.drawImage(image, x++, y, length, height, null);}}
}
import javax.swing.*;
import java.awt.*;
public class BossEnemy extends Fish{public BossEnemy(){power=4;int r=(int)(Math.random()*4); //生成0,1两个随机数用来标志向左还是向右if(r==0){isMoveLeft=false;//朝向右 从最左边出来x=-400;image=new ImageIcon("image/BossRight"+1+".png").getImage();}else{int a=(int)(Math.random()*3)+1;isMoveLeft=true;//朝向左,从最右边出来x=1100;image=new ImageIcon("image/BossLeft"+a+".png").getImage();}y=(int)(Math.random()*800);length=350;height=250;}@Overridepublic void drawFish(Graphics g) {super.drawFish(g);if(isMoveLeft) {g.drawImage(image, x--, y, length, height, null);}else{g.drawImage(image, x++, y, length, height, null);}}
}
import javax.swing.*;
import java.awt.*;public class BugEnemy extends Fish{public BugEnemy(){power=5;int r=(int)(Math.random()*2); //生成0,1两个随机数用来标志向左还是向右if(r==0){isMoveLeft=false;//朝向右 从最左边出来x=-400;image=new ImageIcon("image/boss1.GIF").getImage();}else{isMoveLeft=true;//朝向左,从最右边出来x=1100;image=new ImageIcon("image/MirenRight.png").getImage();}y=(int)(Math.random()*700);length=350;height=250;}@Overridepublic void drawFish(Graphics g) {super.drawFish(g);if(isMoveLeft) {g.drawImage(image, x--, y, length, height, null);}else{g.drawImage(image, x++, y, length, height, null);}}
}
import java.awt.*;public class Fish {//鱼的属性:初始位置int power;//战力值int x;int y;int length;int height;Image image;boolean isMoveLeft=true;//对图片进行裁剪int x1,x2;int y1,y2;public void drawFish(Graphics g){};
}
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;public class FishPanel extends JPanel {int target=15 ;int oldpower=1;int score=0;//分数int mini,mid,big,boss,king,music=0;//控制游戏中有多少条不同类的鱼MySelf mySelf=new MySelf();List<Fish> fishList=new ArrayList<Fish>();int state=0;//0表示加载中;1表示游戏开始;2表示游戏暂停;3表示游戏结束@Overridepublic void paint(Graphics g) {super.paint(g);switch(state){case 0:Image image=new ImageIcon("image/start.jpg").getImage();g.drawImage(image,0,0,1024,680,null);break;case 1:drawBackgroundImage(g);
//                if(mySelf.power==2)
//                {
//                    drawBgI(g);
//                }else if(mySelf.power==3)
//                {
//
//                }//绘制己方的小鱼drawMyFish(g);drawEnemyFish(g);g.setColor(Color.PINK);Font font=new Font("黑体",Font.BOLD,20);g.setFont(font);g.drawString("当前得分:"+score,15,20);g.setColor(Color.YELLOW);g.drawString("目标得分:"+target,500,20);break;case 2:drawBackgroundImage(g);
//                if(mySelf.power>=2)
//                {
//                    drawBgI(g);
//                }//绘制己方的小鱼drawMyFish(g);drawEnemyFish(g);break;case 3:drawBackgroundImage(g);
//                if(mySelf.power>=2)
//                {
//                    drawBgI(g);
//                }//绘制己方的小鱼drawMyFish(g);drawEnemyFish(g);g.setColor(Color.PINK);Font fon=new Font("黑体",Font.BOLD,20);g.setFont(fon);g.drawString("当前得分:"+score,15,20);//画笔写字g.setColor(Color.GREEN);Font f=new Font("黑体",Font.BOLD,50);g.setFont(f);g.drawString("GAME OVER",360,320);break;case 4:drawBackgroundImage(g);}}//绘制敌方鱼的方法private void drawEnemyFish(Graphics g) {for(int i=0;i<fishList.size();i++){Fish fish=fishList.get(i);fish.drawFish(g);}}//绘制己方鱼的方法private void drawMyFish(Graphics g) {mySelf.drawFish(g);}//绘制游戏的背景图public void drawBackgroundImage(Graphics g){String str="image/bg3.jpeg";if(mySelf.power==2){str="image/bg4.jpeg";}else if(mySelf.power==3){str="image/bg11.jpeg";}else if(mySelf.power==4){str="image/bg12.jpeg";}else if(mySelf.power==5){if(score<=5000){str = "image/bg15.jpeg";}else{str="image/bg.png";}}Image image= new ImageIcon(str).getImage();g.drawImage(image,0,0,1024,680,null);}
//    public void drawBgI(Graphics g)
//    {
//        String str=null;
//        if(mySelf.power==2)
//        {
//            str=
//        }
//        else if()
//        Image image= new ImageIcon(str).getImage();
//        g.drawImage(image,0,0,1024,640,null);
//    }public void move(int keycode){switch(keycode){case KeyEvent.VK_SPACE:if(state==0) {state = 1;}else if(state==3){state=1;}break;case KeyEvent.VK_LEFT:if(state==1) {mySelf.moveLeft();repaint();}break;case KeyEvent.VK_RIGHT:if(state==1) {mySelf.moveRight();repaint();}break;case KeyEvent.VK_UP:if(state==1) {mySelf.moveUp();repaint();}break;case KeyEvent.VK_DOWN:if(state==1) {mySelf.moveDown();repaint();}break;case KeyEvent.VK_ENTER:if(state==1){state=2;}else if(state==2){state=1;}break;}}//定时器的方法Timer//生成其他鱼//移动public void action(){Timer timer=new Timer();timer.schedule(new TimerTask() {public void run() {if(state==1){//创建其他鱼createEnemy();//吃鱼EatFish();//不断改变其他鱼的位置repaint();}}},20,10);//delay延迟20毫秒后,period每隔10毫秒执行一次run里面的内容}
/*
吃鱼功能*/private void EatFish() {for(int i=0;i<fishList.size();i++){Fish fish=fishList.get(i);//碰撞检测:如果碰撞了执行if(hit(fish)){//吃小鱼if(mySelf.power>=fish.power){if(score>=5000){state=4;}sound("music/EatHim.wav");//战力++switch(fish.power){case 1:score++;break;case 2: score+=5;break;case 3: score+=50;break;case 4: score+=100;break;case 5: score+=200;}if(score>=15&&score<50){mySelf.power=2;}else if(score>=100&&score<=1000){mySelf.power=3;}else if(score>=1000&&score<=3000){mySelf.power=4;}else if(score>=3000){mySelf.power=5;}//其他鱼要消失 从集合中删除鱼fishList.remove(i);if(mySelf.power>oldpower){sound("music/ShengJi.wav");oldpower++;}//自己变大if(mySelf.power==1){target=15;}else if(mySelf.power==2){target=100;mySelf.length=80;mySelf.height=120;}else if(mySelf.power==3){target=1000;mySelf.length=130;mySelf.height=195;}else if(mySelf.power==4){target=3000;mySelf.length=200;mySelf.height=300;}else if(mySelf.power==5){target=5000;mySelf.length=250;mySelf.height=300;}}//被吃else{state=3; //游戏状态改成三 表示游戏结束sound("music/EatMe.wav");//游戏结束}}}}private boolean hit(Fish fish) {int x=mySelf.x+ mySelf.length/2;int y=mySelf.y+mySelf.height/2;int x1=fish.x+fish.length/2;int y1=fish.y+fish.length/2;if(x>=fish.x&&x<=fish.x+fish.length){if(y>=fish.y&&y<=fish.y+fish.height){return true;}}if(x1>=mySelf.x&&x1<=mySelf.x+mySelf.length){if(y1>=mySelf.y&&y1<=mySelf.y+mySelf.height){return true;}}return false;}public void sound(String str){try {FileInputStream in = new FileInputStream(str);AudioStream as=newAudioStream(in);AudioPlayer.player.start(as);}catch(Exception e){e.printStackTrace();}}private void createEnemy() {if(mySelf.power<2) {if (mini++ % 200 == 0) {fishList.add(new MiniEnemy());}//每次间隔四秒创建一条鱼if (mid++ % 400 == 0) {fishList.add(new MidEnemy());}if (big++ % 800 == 0) {fishList.add(new BigEnemy());}}else if(mySelf.power>=2&&mySelf.power<3) {if (mini++ % 200 == 0) {fishList.add(new MiniEnemy());}//每次间隔四秒创建一条鱼if (mid++ % 200 == 0) {fishList.add(new MidEnemy());}if (big++ % 800 == 0) {fishList.add(new BigEnemy());}if (boss++ % 1500 == 0) {fishList.add(new BossEnemy());}}else if(mySelf.power>=3&&mySelf.power<4){if (mini++ % 200 == 0) {fishList.add(new MiniEnemy());}//每次间隔四秒创建一条鱼if (mid++ % 200 == 0) {fishList.add(new MidEnemy());}if (big++ % 400 == 0) {fishList.add(new BigEnemy());}if (boss++ % 1000 == 0) {fishList.add(new BossEnemy());}if (king++ % 1500 == 0) {fishList.add(new BugEnemy());}}else if(mySelf.power>=4){if (mini++ % 200 == 0) {fishList.add(new MiniEnemy());}//每次间隔四秒创建一条鱼if (mid++ % 200 == 0) {fishList.add(new MidEnemy());}if (big++ % 400 == 0) {fishList.add(new BigEnemy());}if (boss++ % 600 == 0) {fishList.add(new BossEnemy());}if (king++ % 1500 == 0) {fishList.add(new BugEnemy());}}
//        if(mid++%300==0)
//        {
//            fishList.add(new MidEnemy());
//        }if(music++ %1000==0){int r=(int)(Math.random()*3)+1;sound("music/bgm1."+r+".wav");}}}
import javax.swing.*;
import java.awt.*;public class MidEnemy extends Fish{public MidEnemy(){power=2;int r=(int)(Math.random()*2); //生成0,1两个随机数用来标志向左还是向右if(r==0){int a=(int)(Math.random()*2)+1;isMoveLeft=false;//朝向右 从最左边出来x=-68;image=new ImageIcon("image/MidRight"+a+".png").getImage();}else{int a=(int)(Math.random()*2)+1;isMoveLeft=true;//朝向左,从最右边出来x=1080;image=new ImageIcon("image/MidLeft"+a+".png").getImage();}y=(int)(Math.random()*600);length=80;height=120;}@Overridepublic void drawFish(Graphics g) {super.drawFish(g);if(isMoveLeft) {g.drawImage(image, x--, y, length, height, null);}else{g.drawImage(image, x++, y, length, height, null);}}
}
import javax.swing.*;
import java.awt.*;public class MiniEnemy extends Fish {public MiniEnemy(){int r=(int)(Math.random()*2); //生成0,1两个随机数用来标志向左还是向右if(r==0){int a=(int)(Math.random()*2)+1;isMoveLeft=false;//朝向右 从最左边出来x=-68;image=new ImageIcon("image/MiniLeft"+a+".png").getImage();}else{int a=(int)(Math.random()*2)+1;isMoveLeft=true;//朝向左,从最右边出来x=1080;image=new ImageIcon("image/MiniRight"+a+".png").getImage();}y=(int)(Math.random()*500);power=1;length=68;height=55;}@Overridepublic void drawFish(Graphics g) {super.drawFish(g);if(isMoveLeft) {g.drawImage(image, x--, y, length, height, null);}else{g.drawImage(image, x++, y, length, height, null);}}
}
import javax.swing.*;
import java.awt.*;public class MySelf extends Fish{public MySelf(){power=1;length=55;height=68;x=500;y=350;}
//父类鱼方法重写 实现绘制的功能@Overridepublic void drawFish(Graphics g) {super.drawFish(g);Image image;if(isMoveLeft){image=new ImageIcon("image/lan12.png").getImage();//向左移动}else{//向右移动image=new ImageIcon("image/lan11.png").getImage();}//g.drawImage(image,x,y,68,100,null);g.drawImage(image,x,y,length,height,null);}public void moveLeft(){isMoveLeft=true;if(x>=-50){x-=10;}}public void moveRight(){isMoveLeft=false;if(x<=980){x+=10;}}public void moveUp(){if(y>=0){y-=10;}}public void moveDown(){if(y<=640){y+=10;}}}
import javax.swing.*;
import java.awt.*;public class Rule extends JFrame {JPanel jPanel=new JPanel();public Rule(){this.setTitle("规则图鉴");this.setVisible(true);this.setSize(800,630);this.setLocation(20,20);this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);this.setLocationRelativeTo(null);this.add(jPanel);ImageIcon image=new ImageIcon("image/rule.png");JLabel jLabel=new JLabel(image);jPanel.add(jLabel);}
}
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.FileInputStream;
//1.创建窗体对象
//2.背景的绘制
//3.键盘的监听事件
//4.放入己方鱼
//5.让己方鱼移动
//6.创建敌方鱼
//7.碰撞检测(吃鱼)public class Ui extends JFrame implements KeyListener {private FishPanel fishPanel=new FishPanel();JMenuBar JM=new JMenuBar();JMenu m1=new JMenu("规则图鉴");JMenuItem jMenuItem=new JMenuItem("规则图鉴");public  Ui(){this.setTitle("海洋小霸王——金花");this.setSize(1024,680);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setVisible(true);this.add(fishPanel);fishPanel.action();this.addKeyListener(this);this.setJMenuBar(JM);JM.add(m1);m1.add(jMenuItem);jMenuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Rule();}});}public void init(){while(true){sound("music/bgm1.wav");try{Thread.sleep(82800);}catch (Exception e){e.printStackTrace();}}}public void sound(String str){try {FileInputStream in = new FileInputStream(str);AudioStream as=newAudioStream(in);AudioPlayer.player.start(as);}catch(Exception e){e.printStackTrace();}}public static void main(String[] args) {Ui ui=new Ui();ui.init();}public void keyTyped(KeyEvent e) {}public void keyPressed(KeyEvent e) {fishPanel.move(e.getKeyCode());}public void keyReleased(KeyEvent e) {}
}

运行效果

在这里插入图片描述
升级之后变大并且更换了背景
在这里插入图片描述
升级之后可以变大 并且更换了背景

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型之idea通义灵码智能AI插件安装方式

问题描述 主要讲述如何进行开发工具 idea中如何进行通义灵码的插件的安装解决方案 直接在idea的plugin市场中安装 下载插件之后进行安装 见资源

【python】中文数字转换为阿拉伯数字

题目&#xff1a;中文数字转换为阿拉伯数字&#xff0c;如下&#xff1a; 输入&#xff1a; 十一万亿五千三百万三千二百零七输出&#xff1a; 11000053003207思路&#xff1a; 先写一个处理10000以下的转换函数&#xff0c;如下代码的 num_process() 以亿和万分别进行切分…

JUC专题——Java并发基础

本文部分内容节选自《Java并发编程的艺术》 线程 现代操作系统调度的最小单元是 线程 , 也叫 轻量级进程 . 一个进程里可以创建多个线程, 线程拥有各自的计数器, 堆栈和局部变量, 并且能够访问共享的内存变量 线程优先级 现代操作系统使用时分的形式调度运行的线程, 操作系…

lua 光速入门

文章目录 安装注释字符串变量逻辑运算条件判断循环函数Table (表)常用全局函数模块化 首先明确 lua 和 js Python一样是动态解释性语言&#xff0c;需要解释器执行。并且不同于 Python 的强类型与 js 的弱类型&#xff0c;它有点居中&#xff0c;倾向于强类型。 安装 下载解释…

【OpenHarmony】TDD-FUZZ环境配置

零、参考 1、AttributeError: ‘ElementTree‘ object has no attribute ‘getiterator‘&#xff1a;https://blog.csdn.net/suhao0911/article/details/110950742 一、创建工作目录 1、新建工作目录如&#xff1a;D:\0000_TDD_FUZZ\0000_ohos_tdd_fuzz。 2、gitee上下载 t…

陇剑杯 ios 流量分析 CTF writeup

陇剑杯 ios 流量分析 链接&#xff1a;https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码&#xff1a;haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │…

html+vue编写分页功能

效果&#xff1a; html关键代码&#xff1a; <div class"ui-jqgrid-resize-mark" id"rs_mlist_table_C87E35BE"> </div><div class"list_component_pager ui-jqgrid-pager undefined" dir"ltr"><div id"pg…

Linux编辑器-vim的使用

vim的基本概念 vim的三种模式(其实有好多模式&#xff0c;目前掌握这3种即可),分别是命令模式&#xff08;command mode&#xff09;、插 入模式&#xff08;Insert mode&#xff09;和底行模式&#xff08;last line mode&#xff09;&#xff0c;各模式的功能区分如下&#…

中医优势病种诊疗方案数据库

中医诊疗方案结合了几千年的实践经验与理论体系&#xff0c;形成了一套独特的诊疗方法。随着国家对中医药事业的重视&#xff0c;多个中医诊疗方案被国家卫生健康委员会和国家中医药管理局等权威机构正式发布&#xff0c;这对规范中医临床诊疗行为&#xff0c;提升医疗服务质量…

富格林:学习甄别暗箱陷阱阻挠受害

富格林悉知&#xff0c;黄金投资在投资市场上扮演着重要的角色&#xff0c;在任何时期总有人在投资黄金。然而&#xff0c;对于新手投资者来说&#xff0c;了解虚假信息防止诱骗暗箱受害是非常关键的&#xff0c;投资者在进入投资市场之前&#xff0c;需要掌握一定的技术要领&a…

MTK MFNR

一、MFNR 简介 二、MFNR 开关与决策 三、MFNR 相关的adb 命令 四、MFNR log 分析 五 参考文献 一、MFNR 简介 MFNR : Multiple Frame Noise Reduction MFLL : Multiple Frame Low Light BSS : Best Select Shot MFNR 跟 MFLL 是两个功能一致&#xff0c;名称不同的简称&#xf…

SAP MESSAGEID FF759 不能过帐凭证:本币计的税基为0的快捷方案

不能过帐凭证:本币计的税基为0 消息编号 FF759 诊断 尝试步成本币中计税基数为零的凭证&#xff0c;尽管外币中税金额和计税基数不为零&#xff0c; 系统响应 拒绝凭证输入。 步骤 再次输入凭证。 这个错误的原因&#xff0c;是因为四舍五入导致的税为零。根据百度的反馈&…

执行npm命令一直出现sill idealTree buildDeps怎么办?

一、问题 今天在运行npm时候一直出项sill idealTree buildDeps问题 二、 解决 1、先删除用户界面下的npmrc文件&#xff08;注意一定是用户C:\Users\{账户}\下的.npmrc文件下不是nodejs里面&#xff09;&#xff0c;进入到对应目录下&#xff0c;Mac启动显示隐藏文件操作&…

生产服务器变卡怎么排查

服务器变卡怎么排查&#xff0c;可以从以下四个方面去考虑 生产服务器变卡怎么排查 1、网络2、cpu的利用率3、io效率4、内存瓶颈 1、网络 可以使用netstat、iftop等工具查看网络流量和网络连接情况&#xff0c;检查是否网络堵塞、丢包等问题 2、cpu的利用率 1、用top命令定…

【arcpy】 解决构建过小面矢量无效

问题描述 通常利用arcpy向面矢量添加面数据的方法如下 import arcpy singlePolygon [[86.30491319444444, 31.08521484375], [86.30491427951388, 31.08521484375], [86.30491427951388, 31.085215928819444], [86.30491319444444, 31.085215928819444],[86.30491319444444,…

python在selenium网页模拟运行过程中需要打开文件夹上传文件的情况的解决方法

在selenium运行过程中&#xff0c;可能会遇到网页需要上传文件图片等情况&#xff0c;有时可以直接用selenium中send_keys直接上传&#xff0c;但是有时不行&#xff0c;这时我们需要用到另一个包&#xff0c;pywinauto 具体的代码如下&#xff0c; import pywinauto # pywina…

JNI NDK错误汇总

问题一&#xff1a;This app only has 32-bit [armeabi-v7a] native libraries. 解决&#xff1a;在app目录下的build.gradle的android结构里加上arm64-v8a&#xff0c;如下&#xff1a; android {.......defaultConfig{ndk{ abiFilters armeabi-v7a, arm64-v8a //abiFilters a…

驱动执行篇之电机编码器:编码器基础与双编码器方案

目录 |1.编码器概述 |2.编码器分类 |2.1.增量式编码器和绝对值编码器 |2.2.光电编码器 |3.双编码器方案 |3.1几种扭矩感知方案 |3.3双编码器安装方式 |1.编码器概述 编码器 编码器&#xff0c;是将信号&#xff08;如比特流&#xff09;或数据进行编制、转换为可用以通讯…

ECA-Net:深度卷积神经网络中的高效通道注意力机制【原理讲解及代码!!!】

ECA-Net&#xff1a;深度卷积神经网络中的高效通道注意力机制 在深度学习领域&#xff0c;特别是在深度卷积神经网络&#xff08;DCNN&#xff09;中&#xff0c;注意力机制已经成为提升模型性能的关键技术之一。其中&#xff0c;ECA模块&#xff08;Efficient Channel Attent…

C# 中优雅的动态序列化接口返回数据

在C#中&#xff0c;与Web服务的交互经常涉及到数据的序列化和反序列化。当我们与不同的API接口交互时&#xff0c;返回的数据结构和类型可能会有所不同。为了处理这种多样性&#xff0c;我们需要一种方法来动态地序列化接口返回的数据。 本文将介绍如何使用C#中的Json.NET&…