unity制作愤怒的小鸟

文章目录

  • 一、 介绍
  • SpringJoint2D 、line renderer制作发射绳
  • 基类bird脚本的基础功能
  • 给bird添加飞行拖尾效果
  • pig类
  • 游戏胜利的小星星烟花界面
  • 摄像机跟随移动
  • 游戏失败的界面
  • 多种小鸟的制作:黄鸟、绿鸟、黑鸟
  • 地图选择
  • 关卡选择
  • 数据保存
  • 制作多个关卡
  • 场景异步加载
  • 游戏全局管理器
  • 源文件下载


一、 介绍

在这里插入图片描述

SpringJoint2D
line renderer
动画制作
协程
异步资源加载
resource文件夹存储关卡数据
playerprefs存储关卡信息
trail拖尾效果


SpringJoint2D 、line renderer制作发射绳

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

在这里插入图片描述

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

在这里插入图片描述


基类bird脚本的基础功能

bird脚本是红鸟的专属脚本,yellow鸟、green鸟、black鸟可以在此基础上进行拓展。

以下是函数的简要作用:

  1. OnMouseDown(): 处理鼠标按下事件,设置isClick为true,并禁用刚体组件。

  2. OnMouseUp(): 处理鼠标抬起事件,设置isClick为false,延迟0.1秒后开始飞行,禁用划线组件,设置canMove为false。

  3. Update(): 处理小鸟移动和相机跟随的逻辑,以及炫技操作。

  4. Fly(): 在飞行状态下播放飞行音效,开启拖尾效果,禁用弹簧关节,5秒后自动切换到下一只小鸟。

  5. Line(): 实现划线逻辑。

  6. AudioPlay(): 实现音效播放。

  7. Next(): 切换到下一只小鸟。

  8. Hurt(): 处理小鸟受伤逻辑。

  9. ShowSkill(): 处理小鸟炫技效果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bird : MonoBehaviour {

    private bool isClick = false; //是否点击了小鸟
    public float maxDis = 3; //弹弓的最大拉伸距离
    [HideInInspector]
    public SpringJoint2D sp; //SpringJoint2D组件
    protected Rigidbody2D rg; //Rigidbody2D组件

    public LineRenderer right; //右边的划线组件
    public Transform rightPos; //右边的点
    public LineRenderer left; //左边的划线组件
    public Transform leftPos; //左边的点

    public GameObject boom; //小鸟死亡的爆炸效果

    protected TestMyTrail myTrail; //拖尾效果

    private bool canMove = true; //是否可以移动
    public float smooth = 3; //相机跟随的平滑度

    public AudioClip select; //选择小鸟的音效
    public AudioClip fly; //小鸟飞行的音效

    private bool isFly = false; //是否在飞行中

    public Sprite hurt; //受伤后的图片
    protected SpriteRenderer render; //SpriteRenderer组件

    private void Awake()
    {
        sp = GetComponent<SpringJoint2D>();
        rg = GetComponent<Rigidbody2D>();
        myTrail = GetComponent<TestMyTrail>();
        render = GetComponent<SpriteRenderer>();
    }

    private void OnMouseDown() //鼠标按下
    {
        if (canMove)
        {
            AudioPlay(select); //播放选择小鸟的音效
            isClick = true; //设置为点击状态
            rg.isKinematic = true; //关闭物理效果
        }
    }

    private void OnMouseUp() //鼠标抬起
    {
        if (canMove)
        {
            isClick = false; //设置为非点击状态
            rg.isKinematic = false; //开启物理效果
            Invoke("Fly", 0.1f); //延迟0.1秒后开始飞行
            //禁用划线组件
            right.enabled = false;
            left.enabled = false;
            canMove = false; //不可移动
        }
    }

    private void Update()
    {
        if (isClick) //鼠标一直按下,进行位置的跟随
        {
            transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            //transform.position += new Vector3(0, 0, 10);
            transform.position += new Vector3(0,0,-Camera.main.transform.position.z);

            if (Vector3.Distance(transform.position, rightPos.position) > maxDis) //进行位置限定
            {
                Vector3 pos = (transform.position - rightPos.position).normalized; //单位化向量
                pos *= maxDis; //最大长度的向量
                transform.position = pos + rightPos.position;
            }
            Line(); //绘制划线
        }

        //相机跟随
        float posX = transform.position.x;
        Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, new Vector3(Mathf.Clamp(posX,0,15),Camera.main.transform.position.y, 
            Camera.main.transform.position.z),smooth*Time.deltaTime);

        if (isFly)
        {
            if (Input.GetMouseButtonDown(0))
            {
                ShowSkill(); //炫技操作
            }
        }
    }

    void Fly()
    {
        isFly = true; //设置为飞行状态
        AudioPlay(fly); //播放飞行的音效
        myTrail.StartTrails(); //开启拖尾效果
        sp.enabled = false; //禁用弹簧关节
        Invoke("Next", 5); //飞行5秒后自动切换到下一只小鸟
    }

    /// <summary>
    /// 划线
    /// </summary>
    void Line()
    {
        right.enabled = true;
        left.enabled = true;

        right.SetPosition(0, rightPos.position);
        right.SetPosition(1, transform.position);

        left.SetPosition(0, leftPos.position);
        left.SetPosition(1, transform.position);
    }

    /// <summary>
    /// 下一只小鸟的飞出
    /// </summary>
    /// 
   protected virtual void Next()
    {
        GameManager._instance.birds.Remove(this); //从GameManager中移除当前小鸟
        Destroy(gameObject); //销毁当前小鸟
        Instantiate(boom, transform.position, Quaternion.identity); //生成爆炸效果
        GameManager._instance.NextBird(); //切换到下一只小鸟
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        isFly = false; //设置为非飞行状态
        myTrail.ClearTrails(); //清除拖尾效果
    }

    public void AudioPlay(AudioClip clip)
    {
        AudioSource.PlayClipAtPoint(clip, transform.position); //在指定位置播放音效
    }

    /// <summary>
    /// 炫技操作
    /// </summary>
    public virtual void ShowSkill()
    {
        isFly = false; //设置为非飞行状态
    }

    public void Hurt()
    {
        render.sprite = hurt; //切换为受伤后的图片
    }
}

给bird添加飞行拖尾效果

在这里插入图片描述

给bird添加一个子对象,命名为 Trail,为其添加 WeaponTrail.cs脚本、 Mesh Renderer组件,材质为Pocket RPG Trails提供的材质,设置好如下图所示:

在这里插入图片描述

在这里插入图片描述

修改 TestMyTrail.cs代码为如下:

using UnityEngine;
using System.Collections;

public  class TestMyTrail : MonoBehaviour {

     public WeaponTrail myTrail;

     private Animator animator;
     private  float t =  0.033f;
     private  float tempT =  0;
     private  float animationIncrement =  0.003f;

     void Start () 
    {
        animator = GetComponent<Animator>();
    }

     void LateUpdate()
    {
        t = Mathf.Clamp(Time.deltaTime,  0,  0.066f);

         if (t >  0)
        {
             while (tempT < t)
            {
                tempT += animationIncrement;

                 if (myTrail.time >  0)
                {
                    myTrail.Itterate(Time.time - t + tempT);
                }
                 else
                {
                    myTrail.ClearTrail();
                }
            }

            tempT -= t;

             if (myTrail.time >  0)
            {
                myTrail.UpdateTrail(Time.time, t);
            }
        }
    }

     void OnGUI()
    {
         if (GUI.Button( new Rect( 0,  0,  50,  50),  "攻击"))
        {
            animator.SetTrigger( "Attack");
        }
    }
}

将 Trail对象赋给 My Trail属性,如下图所示:
在这里插入图片描述

修改 TestMyTrail.cs 代码为如下:


     void Start () 
    {
        animator = GetComponent<Animator>();
         // 默认没有拖尾效果
        myTrail.SetTime( 0.0f,  0.0f,  1.0f);
    }
    
     public  void heroAttack()
    {
         //设置拖尾时长
        myTrail.SetTime( 2.0f,  0.0f,  1.0f);
         //开始进行拖尾
        myTrail.StartTrail( 0.5f,  0.4f);
    }

     public  void heroIdle()
    {
         //清除拖尾
        myTrail.ClearTrail();
    }

参考链接:https://blog.csdn.net/akof1314/article/details/37603559

资源链接:https://download.csdn.net/download/akof1314/7610241


pig类

这个脚本可以挂载到pig上,也可以挂在砖头上,受伤后速度值过大直接销毁,速度适中展示“损坏”的效果。

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//导入命名空间
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//定义一个猪的类
public class Pig : MonoBehaviour {

    //定义最大速度和最小速度
    public float maxSpeed = 0.01f;
    public float minSpeed = 0.005f;

    //定义一个SpriteRenderer
    private SpriteRenderer render;

    //定义一个hurt的Sprite
    public Sprite hurt;

    //定义一个炸弹和得分的游戏对象
    public GameObject boom;
    public GameObject score;

    //定义三种音效
    public AudioClip hurtClip;
    public AudioClip dead;
    public AudioClip birdCollision;

    //判断是否为猪
    public bool isPig = false;

    //定义一个Awake方法,在脚本被启用前执行一次
    private void Awake()
    {
        //获取SpriteRenderer组件
        render = GetComponent<SpriteRenderer>();
    }

    //定义一个OnCollisionEnter2D方法,在碰撞发生时执行
    private void OnCollisionEnter2D(Collision2D collision)
    {
        //判断碰撞对象是否为Player
        if (collision.gameObject.tag == "Player") {
            //播放birdCollision音效
            AudioPlay(birdCollision);
            //让Bird受伤
            collision.transform.GetComponent<Bird>().Hurt();
        }

        //如果相对速度大于最大速度,直接死亡
        if (collision.relativeVelocity.magnitude > maxSpeed)
        {
            Dead();
        } 
        //如果相对速度在最大速度和最小速度之间,播放hurt音效
        else if (collision.relativeVelocity.magnitude > minSpeed && collision.relativeVelocity.magnitude < maxSpeed) {
            render.sprite = hurt;
            AudioPlay(hurtClip);    
        }  
    }

    //定义一个Dead方法,处理猪死亡的逻辑
    public void Dead() {
        //如果是猪,从GameManager中移除猪
        if (isPig)
        {
            GameManager._instance.pig.Remove(this);
        }
        //销毁猪的游戏对象
        Destroy(gameObject);
        //在猪的位置生成一个炸弹
        Instantiate(boom, transform.position, Quaternion.identity);
        //在猪的位置生成得分的游戏对象,并延迟1.5秒后销毁
        GameObject go = Instantiate(score, transform.position + new Vector3(0,0.5f,0), Quaternion.identity);
        Destroy(go, 1.5f);
        //播放死亡音效
        AudioPlay(dead);
    }

    //定义一个AudioPlay方法,用于播放音效
    public void AudioPlay(AudioClip clip)
    {
        //在猪的位置播放指定的音效
        AudioSource.PlayClipAtPoint(clip, transform.position);
    }
}

游戏胜利的小星星烟花界面

在这里插入图片描述

在这里插入图片描述

一颗一颗显示星星:

  public void ShowStars() {
        StartCoroutine("show");
    }

    IEnumerator show() {
        for (; starsNum < birds.Count + 1; starsNum++)
        {
            if (starsNum >= stars.Length) {
                break;
            }
            yield return new WaitForSeconds(0.2f);
            stars[starsNum].SetActive(true);
        }
        print(starsNum);
    }

摄像机跟随移动

  //相机跟随
        float posX = transform.position.x;
        Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position,new Vector3(Mathf.Clamp(posX,0,15),Camera.main.transform.position.y, 
            Camera.main.transform.position.z),smooth*Time.deltaTime);

游戏失败的界面

图片嵌套,设置动画,透明度渐变。

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PausePanel : MonoBehaviour
{
    private Animator anim;
    public GameObject button;

    private void Awake()
    {
        anim = GetComponent<Animator>();
    }


    public void Retry() {

        Time.timeScale = 1;
        UnityEngine.SceneManagement.SceneManager.LoadScene(2);
    }
    /// <summary>
    /// 点击了pause按钮
    /// </summary>
    public void Pause()
    {
        //1、播放pause动画  
        anim.SetBool("isPause", true);
        button.SetActive(false);
    }

 
    /// <summary>
    /// 点击了继续按钮
    /// </summary>
    public void Resume() {
        //1、播放resume动画
        Time.timeScale = 1;
        anim.SetBool("isPause", false);
    }

    public void Home()
    {
        Time.timeScale = 1;
        UnityEngine.SceneManagement.SceneManager.LoadScene(1);
    }


    /// <summary>
    /// pause动画播放完调用
    /// </summary>
    public void PauseAnimEnd() {
        Time.timeScale = 0;
    }
    /// <summary>
    /// resume动画播放完调用
    /// </summary>
    public void ResumeAnimEnd() {
        button.SetActive(true);
    }
   
}

在这里插入图片描述


多种小鸟的制作:黄鸟、绿鸟、黑鸟

各种鸟,都继承红鸟bird的基础功能,进而拓展自己的功能。

黄鸟点击屏幕可以加速:
public class YellowBird : Bird {

    /// <summary>
    /// 重写方法
    /// </summary>
    public override void ShowSkill()
    {
        base.ShowSkill();
        rg.velocity *= 2;
    }

}

在这里插入图片描述

绿鸟点击屏幕可以回旋:
public class GreenBird : Bird {
    public override void ShowSkill()
    {
        base.ShowSkill();
        Vector3 speed = rg.velocity;
        speed.x *= -1;
        rg.velocity = speed;
    }

}

在这里插入图片描述

黑鸟点击屏幕发生爆炸,把一定范围的pig通过处罚监测存到list中,全部销毁
using System.Collections;  //导入命名空间System.Collections
using System.Collections.Generic;  //导入命名空间System.Collections.Generic
using UnityEngine;  //导入命名空间UnityEngine

public class BlackBird : Bird {  //定义名为BlackBird的类,继承自Bird类

    public  List<Pig> blocks = new List<Pig>();  //定义名为blocks的Pig类型的列表

    /// <summary>
    /// 进入触发区域
    /// </summary>
    /// <param name="collision"></param>
    private void OnTriggerEnter2D(Collider2D collision)  //当进入触发区域时
    {
        if (collision.gameObject.tag == "Enemy") {  //如果触碰到的物体标签为“Enemy”
            blocks.Add(collision.gameObject.GetComponent<Pig>());  //将触碰到的物体的Pig组件添加到blocks列表中
        }
    }

    /// <summary>
    /// 离开触发区域
    /// </summary>
    /// <param name="collision"></param>
    private void OnTriggerExit2D(Collider2D collision)  //当离开触发区域时
    {
        if (collision.gameObject.tag == "Enemy")  //如果触碰到的物体标签为“Enemy”
        {
            blocks.Remove(collision.gameObject.GetComponent<Pig>());  //将触碰到的物体的Pig组件从blocks列表中移除
        }
    }


    public override void ShowSkill()  //重写父类的ShowSkill方法
    {
        base.ShowSkill();  //调用父类的ShowSkill方法
        if (blocks.Count > 0 && blocks != null) {  //如果blocks列表中有元素
            for (int i = 0; i < blocks.Count; i++) {  //循环遍历blocks列表中的元素
                blocks[i].Dead();  //调用Pig类的Dead方法
            }
        }
        OnClear();  //调用自定义的OnClear方法
    }

    void OnClear() {  //自定义名为OnClear的方法
        rg.velocity = Vector3.zero;  //将刚体的速度设置为零向量
        Instantiate(boom,transform.position,Quaternion.identity);  //在对象的位置生成一个boom预制体
        render.enabled = false;  //关闭SpriteRenderer组件
        GetComponent<CircleCollider2D>().enabled = false;  //关闭CircleCollider2D组件
        myTrail.ClearTrails();  //调用自定义的ClearTrails方法清空拖尾效果
             
    }

    protected override void Next()  //重写父类的Next方法
    {
        GameManager._instance.birds.Remove(this);  //将当前对象从GameManager类的birds列表中移除
        Destroy(gameObject);  //销毁对象
        GameManager._instance.NextBird();  //调用GameManager类的NextBird方法
    }
}

在这里插入图片描述


地图选择

在这里插入图片描述


关卡选择

在这里插入图片描述






数据保存

 public void SaveData() {
        if (starsNum > PlayerPrefs.GetInt(PlayerPrefs.GetString("nowLevel"))){
            PlayerPrefs.SetInt(PlayerPrefs.GetString("nowLevel"), starsNum);
        }
        //存储所有的星星个数
        int sum = 0;        
        for (int i = 1; i <= totalNum; i++) {
            sum += PlayerPrefs.GetInt("level" + i.ToString());
        }
        PlayerPrefs.SetInt("totalNum",sum);
        //print(PlayerPrefs.GetInt("totalNum"));
    }

PlayerPrefs类:用于存储游戏数据,包括玩家的设置和游戏状态。

GetInt()方法:从PlayerPrefs中获取一个整数值。

GetString()方法:从PlayerPrefs中获取一个字符串值。

SetInt()方法:将一个整数值存储到PlayerPrefs中。


制作多个关卡

新建文件夹RESOURCE,自己制作不同的关卡,用于方便后续加载

在这里插入图片描述

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


场景异步加载

设置分辨率,加载到选择地图界面。
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadLevelAsync : MonoBehaviour {

    // Use this for initialization
    void Start() {
        Screen.SetResolution(960,600,false);
        Invoke("Load",2);
    }

    void Load() {
            SceneManager.LoadSceneAsync(1);
        }
    }



游戏全局管理器

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour {

    public List<Bird> birds;  // 小鸟列表
    public List<Pig> pig;  // 猪列表
    public static GameManager _instance;  // 游戏管理器实例
    private Vector3 originPos; //初始化的位置

    public GameObject win;  // 胜利界面
    public GameObject lose;  // 失败界面

    public GameObject[] stars;  // 星星

    private int starsNum = 0;  // 星星数量

    private int totalNum = 9;  // 总星星数量

    private void Awake()
    {
        _instance = this;
        if(birds.Count > 0) {
            originPos = birds[0].transform.position;
        }
    }

    private void Start()
    {
        Initialized();
    }

    /// <summary>
    /// 初始化小鸟
    /// </summary>
    private void Initialized()
    {
        for(int i = 0; i < birds.Count; i++)
        {
            if (i == 0) //第一只小鸟
            {
                birds[i].transform.position = originPos;
                birds[i].enabled = true;
                birds[i].sp.enabled = true;
            }
            else
            {
                birds[i].enabled = false;
                birds[i].sp.enabled = false;
            }
        }
    }

    /// <summary>
    /// 判定游戏逻辑
    /// </summary>
   public  void NextBird()
    {
        if(pig.Count > 0)
        {
            if(birds.Count > 0)
            {
                //下一只飞吧
                Initialized();
            }
            else
            {
                //输了
                lose.SetActive(true);
            }
        }
        else
        {
            //赢了
            win.SetActive(true);
        }
    }

    public void ShowStars() {
	    StartCoroutine("show");
    }

    IEnumerator show() {
        for (; starsNum < birds.Count + 1; starsNum++)
        {
            if (starsNum >= stars.Length) {
                break;
            }
            yield return new WaitForSeconds(0.2f);
            stars[starsNum].SetActive(true);
        }
        print(starsNum);
    }

    public void Replay() {
        SaveData();
        SceneManager.LoadScene(2);
    }

    public void Home() {
        SaveData();
        SceneManager.LoadScene(1);
    }

    public void SaveData() {
        if (starsNum > PlayerPrefs.GetInt(PlayerPrefs.GetString("nowLevel"))){
            PlayerPrefs.SetInt(PlayerPrefs.GetString("nowLevel"), starsNum);
        }
        //存储所有的星星个数
        int sum = 0;        
        for (int i = 1; i <= totalNum; i++) {
            sum += PlayerPrefs.GetInt("level" + i.ToString());
        }
        PlayerPrefs.SetInt("totalNum",sum);
        //print(PlayerPrefs.GetInt("totalNum"));
    }
}

维护小鸟列表(birds)和猪列表(pig)。
实现了单例模式,通过静态变量 _instance 获取 GameManager 的实例。
存储初始位置(originPos)。
引用胜利界面(win)和失败界面(lose)的游戏对象。
存储星星的数组(stars)。
跟踪星星数量(starsNum)和总星星数量(totalNum)。
在 Awake 方法中设置 GameManager 的实例和初始位置。
在 Start 方法中调用 Initialized 方法进行初始化。
Initialized 方法用于初始化小鸟列表中的小鸟,将第一只小鸟设置在初始位置,其他小鸟禁用。
NextBird 方法根据游戏逻辑判断游戏输赢,并在相应情况下显示胜利或失败界面。
ShowStars 方法使用协程逐个显示星星。
Show 方法用于协程,控制星星的显示过程。
Replay 方法用于重新加载场景。
Home 方法用于返回主菜单。
SaveData 方法用于保存游戏数据,包括更新关卡的星星数量和总星星数量。



源文件下载


https://wwez.lanzoul.com/iBdeT0whs3gh


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

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

相关文章

go 调试利器之pprof指标分析

文章目录 概要一、指标类型1.1、堆栈指标1.2、CPU指标分析1.3、http-pprof 二、go tool pprof2.1、可视化2.2、CPU火焰图 概要 Go语言原生支持对于程序运行时重要指标或特征进行分析。pprof是其中一种重要的工具&#xff0c;其不仅可以分析程序运行时的错误&#xff08;内存泄…

绕过激活锁 ,拯救一台旧手机iphone

一台旧的iphone忘了apple id账号和密码了&#xff0c;导致锁住了 某宝上解锁要花50&#xff0c; 不是舍不得花钱&#xff0c;作为一个搞技术的&#xff0c;实在觉得花钱有点丢人 经过一番探索 最终确定了有用的流程 并贴出来 亲测可用 最终实现了趟再床上就可以打卡 1、 刷机 …

【软件测试】性能测试服务端—排查指标问题(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件性能测试的目…

node安装后的全局环境变量配置

安装node时&#xff0c;位置最好不要装在c盘&#xff0c;这里&#xff0c;我在D盘下创建了文件夹"node"&#xff0c;安装地址选择在该文件夹下 一直next&#xff0c;直到安装结束&#xff0c;打开"node"文件夹&#xff0c;安装完后&#xff0c;里面的配置…

未来10年,网络安全人才就业的黄金期

随着大数据、物联网、人工智能等新技术的发展&#xff0c;信息技术与经济社会各领域的融合也更加深入。网络攻击行为日趋复杂、黑客攻击行为组织性更强、针对手机无线终端的网络攻击日趋严重&#xff0c;近几年有关网络攻击和数据泄露的新闻层出不穷。因此&#xff0c;随着国家…

Nodejs一、初识

零、文章目录 Nodejs一、初识 1、初识 Node.js &#xff08;1&#xff09;回顾与思考 浏览器中的 JavaScript 的组成部分 为什么 JavaScript 可以在浏览器中被执行 为什么 JavaScript 可以操作 DOM 和 BOM 浏览器中的 JavaScript 运行环境 JavaScript 能否做后端开发&#…

MySQL - 第0节 - MySQL在Centos 7环境安装

目录 1.安装前说明 2.MySQL在Centos 7环境安装 2.1.卸载不要的环境 2.2.配置mysql官方yum源 2.3.检查yum源能否正常工作 2.4.安装mysql 2.5.检查mysql是否安装成功 2.6.启动mysqld数据库服务端 2.7.三种登录方法 2.7.1.登陆方法一 2.7.2.登陆方法二 2.7.3.登陆方法…

Pandas+Pyecharts | 中国高校及专业数据分析可视化

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 全国高校分布地图3.2 全国高校分布城市地图3.3 本科/专科占比3.4 985/211/双一流高校数量占比…

【考研复习】李春葆新编C语言习题与解析(错误答案订正)持续更新

新编C语言习题与解析 做习题时发现有些错误答案&#xff0c;写篇博客进行改正记录。不对地方欢迎指正&#xff5e; 第二章 C. 其中b的表达形式错误&#xff0c;若加上0x1e2b则正确。所以C错误。 D. e后为整数。指数命名规则&#xff1a;e前有数&#xff0c;后有整数。所以D错…

【CEEMDAN-CNN-LSTM】完备集合经验模态分解-卷积神经长短时记忆神经网络研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

getopt函数和getopt_long函数

这个函数有点像无限迷宫&#xff0c;正确的路和错误的路都有很多&#xff0c;我们只需要能够满足当前需求就可以了&#xff0c;完全没有必要去探索每一条路。虽然&#xff0c;我很久以前试图这样干过。过滤后的回忆&#xff0c;只剩感觉了&#xff0c;过滤的多了&#xff0c;感…

【简单便捷】解决Ubuntu内存不足问题:Ubuntu16.0.4 进行内存扩容

文章目录 电脑环境前言一、总述二、先在标题&#xff1a;虚拟机-->设置上进行扩容三、扩容之后 打开终端 执行 sudo apt install gparted四、执行 sudo gparted五、扩容成功六、重启测试 可以看到大概率成功了。 电脑环境 Windows 11 专业版系统 前言 在开发初期&#xf…

二叉树的相关操作

一.二叉树 本文的数据结构基于C语言练习。 C语言中的二叉树是一种数据结构&#xff0c;用于表示具有层次关系的数据集合。它由一个根节点开始&#xff0c;每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。 二叉树有许多相关性质&#xff0c;其中一些重要的包…

【CSS---定位基础篇】

CSS---定位基础篇 CSS-----基础定位:一 、 学习定位原因&#xff1a;&#xff08;定位的作用&#xff09;二 、定位组成&#xff1a;2.1 四种定位模式&#xff1a;&#xff08;1&#xff09;静态定位&#xff08;了解&#xff09;&#xff1a;&#xff08;2&#xff09;相对定位…

ElasticSearch笔记02-ElasticSearch入门

ElasticSearch安装 下载软件 ElasticSearch的官网&#xff0c;视频教程里用的Version是7.8.0&#xff0c;所以&#xff0c;我们也是用7.8.0版本的ElasticSearch。 下载地址&#xff1a;https://www.elastic.co/cn/downloads/past-releases#elasticsearch&#xff0c;然后搜索…

lua的元表与元方法理解

元表 在 Lua 中&#xff0c;元表&#xff08;metatable&#xff09;是一种特殊的表&#xff0c;用于定义另一个表的行为。每个表都有一个关联的元表&#xff0c;通过元表可以重载表的各种操作&#xff0c;例如索引、新索引、相加等。在 Lua 中&#xff0c;元表的使用非常灵活&…

二、线性神经网络

文章目录 前言一、线性回归1. 线性回归的基本元素1.1 线性模型1.2 损失函数1.3 解析解1.4 梯度下降1.5 用模型进行预测 2. 正态分布与平方损失3. 从线性回归到深度网络 二、线性回归的代码实现1. 生成数据集2. 读取数据集2.1 手动实现读取数据集2.2 简洁实现读取数据集 3. 初始…

基于SpringBoot+Vue的自习室预订系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

深度学习卷积神经网络CNN之ResNet模型网络详解说明(超详细理论篇)

1.ResNet背景 2. ResNet论文 3. ResNet模型结构 4. ResNet优缺点 一、ResNet背景 ResNet 在2015 年由微软研究院提出的一种深度卷积神经网络结构&#xff0c;在ILSVRC&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;中取得了冠军&#xff08;分类…

OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算

1. 形态学2. 常用接口2.1 cvtColor()2.2 图像二值化threshod()自适应阈值二值化adaptiveThreshod() 2.3 腐蚀与膨胀erode()getStructuringElement()dilate() 2.4开、闭、梯度、顶帽、黑帽运算morphologyEx() 1. 形态学 OpenCV形态学是一种基于OpenCV库的数字图像处理技术&…