Pygame简单入门教程(绘制Rect、控制移动、碰撞检测、Github项目源代码)

news2024/11/24 3:50:29

Pygame简明教程

引言:本教程中的源码已上传个人Github: GItHub链接
视频教程推荐:YouTube教程–有点过于简单了
官方文档推荐:虽然写的一般,但还是推荐!

Navigator~

  • Pygame简明教程
  • 安装pygame
    • 一、代码框架
    • 二、案件输入
    • 三、绘制方块
      • 3.1 绘制
      • 3.2 移动
    • 四、碰撞
      • 4.1 检测方法
      • 4.2 敌人和碰撞
        • 4.2.1 敌人or朋友?
        • 5.2.2 测试碰撞

安装pygame

cmd中安装即可

pip3 install pygame

一、代码框架

main.py

import sys

import pygame
pygame.init()   # 初始化pygame模块
WIDTH, HEIGHT = 800, 1200   # 窗口宽度,高度
FPS = 60    # 帧率
running = True  # 游戏运行状态
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口,screen为窗口对象
pygame.display.set_caption("怀念高中第一次接触Pygame的那个暑假!") # 设置窗口标题
clock = pygame.time.Clock() # 统一游戏帧率


if __name__ == "__main__":
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
    pygame.quit()
    sys.exit()
    # 退出游戏辣!

运行结果
在这里插入图片描述

二、案件输入

需要修改的代码:


if __name__ == "__main__":
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
        ############ 获取输入 ##################
        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            print("你按下了 \/ 哦!")
        if keys[pygame.K_UP]:
            print("你按下了 /\ 哦!")
        if keys[pygame.K_LEFT]:
            print("你按下了 < 哦!")
        if keys[pygame.K_RIGHT]:
            print("你按下了 > 哦!")
        ######################################
    pygame.quit()
    sys.exit()
    # 退出游戏辣!

修改结束,完整代码如下:

main.py

import sys

import pygame
pygame.init()   # 初始化pygame模块
WIDTH, HEIGHT = 800, 1200   # 窗口宽度,高度
FPS = 60    # 帧率
running = True  # 游戏运行状态
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口,screen为窗口对象
pygame.display.set_caption("怀念高中第一次接触Pygame的那个暑假!") # 设置窗口标题
clock = pygame.time.Clock() # 统一游戏帧率


if __name__ == "__main__":
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
        ############ 获取输入 ##################
        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            print("你按下了 \/ 哦!")
        if keys[pygame.K_UP]:
            print("你按下了 /\ 哦!")
        if keys[pygame.K_LEFT]:
            print("你按下了 < 哦!")
        if keys[pygame.K_RIGHT]:
            print("你按下了 > 哦!")
        ######################################
    pygame.quit()
    sys.exit()
    # 退出游戏辣!

三、绘制方块

3.1 绘制

我们使用该方法来进行绘制方块对象:

pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制

下文会出现碰撞箱,是为了便于使用后文中定义的碰撞检测方法。

定义Player类:


class Player(object):
    def __init__(self):
        self.x = WIDTH // 2
        self.y = HEIGHT // 2### 4.2 敌人和碰撞
#### 4.2.1 敌人or朋友?
定义一个敌人:
```python

        self.width = 100
        self.height = 200
        self.hit_box = (self.x, self.y, self.width, self.height)
        self.color = pygame.Color("Blue")   # 颜色
    def update(self):
        self.hit_box = (self.x, self.y, self.width, self.height)    # 更新碰撞箱位置
        pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制

################### 创建一个方块对象
player = Player()
###################

main.py

import sys

import pygame
pygame.init()   # 初始化pygame模块
WIDTH, HEIGHT = 800, 1200   # 窗口宽度,高度
FPS = 60    # 帧率
running = True  # 游戏运行状态
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口,screen为窗口对象
pygame.display.set_caption("怀念高中第一次接触Pygame的那个暑假!") # 设置窗口标题
clock = pygame.time.Clock() # 统一游戏帧率

class Player(object):
    def __init__(self):
        self.x = WIDTH // 2
        self.y = HEIGHT // 2
        self.width = 100
        self.height = 200
        self.hit_box = (self.x, self.y, self.width, self.height)
        self.color = pygame.Color("Blue")   # 颜色
    def update(self):
        self.hit_box = (self.x, self.y, self.width, self.height)    # 更新碰撞箱位置
        pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制

################### 创建一个方块对象
player = Player()
###################

if __name__ == "__main__":
    while running:
        screen.fill(pygame.Color("White"))
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
        ############ 获取输入 ##################
        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            print("你按下了 \/ 哦!")
        if keys[pygame.K_UP]:
            print("你按下了 /\ 哦!")
        if keys[pygame.K_LEFT]:
            print("你按下了 < 哦!")
        if keys[pygame.K_RIGHT]:
            print("你按下了 > 哦!")
        ######################################
        player.update()
        pygame.display.update()
    pygame.quit()
    sys.exit()
    # 退出游戏辣!

3.2 移动

我们可以再加点猛料,让player可以动起来:

Player类中作如下修改:

class Player(object):
    def __init__(self):
        self.x = WIDTH // 2
        self.y = HEIGHT // 2
        self.width = 100
        self.height = 200
        self.hit_box = (self.x, self.y, self.width, self.height)
        self.color = pygame.Color("Blue")   # 颜色
        self.velocity = 10
    def left(self):
        self.x -= self.velocity
    def right(self):
        self.x += self.velocity
    def up(self):
        self.y -= self.velocity
    def down(self):
        self.y += self.velocity
    def update(self):
        self.hit_box = (self.x, self.y, self.width, self.height)    # 更新碰撞箱位置
        pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制

按键部分也进行修改:

############ 获取输入 ##################
       keys = pygame.key.get_pressed()
       if keys[pygame.K_DOWN]:
           player.down()
       if keys[pygame.K_UP]:
           player.up()
       if keys[pygame.K_LEFT]:
           player.left()
       if keys[pygame.K_RIGHT]:
           player.right()
       ######################################

完整代码如下:

main.py

import sys

import pygame
pygame.init()   # 初始化pygame模块
WIDTH, HEIGHT = 800, 1200   # 窗口宽度,高度
FPS = 60    # 帧率
running = True  # 游戏运行状态
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口,screen为窗口对象
pygame.display.set_caption("怀念高中第一次接触Pygame的那个暑假!") # 设置窗口标题
clock = pygame.time.Clock() # 统一游戏帧率

class Player(object):
    def __init__(self):
        self.x = WIDTH // 2
        self.y = HEIGHT // 2
        self.width = 100
        self.height = 200
        self.hit_box = (self.x, self.y, self.width, self.height)
        self.color = pygame.Color("Blue")   # 颜色
        self.velocity = 10
    def left(self):
        self.x -= self.velocity
    def right(self):
        self.x += self.velocity
    def up(self):
        self.y -= self.velocity
    def down(self):
        self.y += self.velocity
    def update(self):
        self.hit_box = (self.x, self.y, self.width, self.height)    # 更新碰撞箱位置
        pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制

################### 创建一个方块对象
player = Player()
###################

if __name__ == "__main__":
    while running:
        screen.fill(pygame.Color("White"))
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
        ############ 获取输入 ##################
        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            player.down()
        if keys[pygame.K_UP]:
            player.up()
        if keys[pygame.K_LEFT]:
            player.left()
        if keys[pygame.K_RIGHT]:
            player.right()
        ######################################
        player.update()
        pygame.display.update()
    pygame.quit()
    sys.exit()
    # 退出游戏辣!

由于动态不便于演示,这里省略。

四、碰撞

4.1 检测方法

pygame中对于碰撞检测的实现手段还是挺多的,可以使用Sprite精灵来统一管理,也可以自己手搓。
这里写后者~

检测两个矩形是否重叠即可判断是否碰撞,只要检测其中一个矩形的四个顶点是否在另一个矩形内部即可。

为了表示四个点,抽象出一个顶点类:

Point

class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

这里定一个一个CollisionController类来统一检测所有碰撞

CollisionController


class CollisionController():
    def RectCollide(hitbox1, hitbox2):
        '''
        检测四个点是否在另一个矩形体内即可
        box1 = (x, y, width, height)
                0  1   2     3
        :param hitbox1:
        :param hitbox2:
        :return:
        '''
        p1 = Point(hitbox1[0], hitbox1[1])
        p2 = Point(hitbox1[0] + hitbox1[2], hitbox1[1])
        p3 = Point(hitbox1[0], hitbox1[1] + hitbox1[3])
        p4 = Point(hitbox1[0] + hitbox1[2], hitbox1[1] + hitbox1[3])
        points = [p1, p2, p3, p4]
        for p in points:
            if (p.x >= hitbox2[0]
                    and p.x <= hitbox2[0] + hitbox2[2]
                    and p.y >= hitbox2[1]
                    and p.y <= hitbox2[1] + hitbox2[3]):
                return True
        return False

需要检测的时候直接调用CollisionController.RectCollide()即可,参数中传入两个矩形碰撞箱。
下文将教你写一个敌人来运用这个函数。

4.2 敌人和碰撞

4.2.1 敌人or朋友?

定义一个敌人:

class Enemy(Player):
    pass

哈哈哈,直接继承玩家类就行了,多好!人生苦短我用Python, 懒得复写我用继承,游戏开发不能没有面向对象!!

别忘记生成对象,并且在主函数中加入更新的方法:

main.py

import sys

import pygame
pygame.init()   # 初始化pygame模块
WIDTH, HEIGHT = 800, 1200   # 窗口宽度,高度
FPS = 60    # 帧率
running = True  # 游戏运行状态
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口,screen为窗口对象
pygame.display.set_caption("怀念高中第一次接触Pygame的那个暑假!") # 设置窗口标题
clock = pygame.time.Clock() # 统一游戏帧率

class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
class CollisionController():
    def RectCollide(hitbox1, hitbox2):
        '''
        检测四个点是否在另一个矩形体内即可
        box1 = (x, y, width, height)
                0  1   2     3
        :param hitbox1:
        :param hitbox2:
        :return:
        '''
        p1 = Point(hitbox1[0], hitbox1[1])
        p2 = Point(hitbox1[0] + hitbox1[2], hitbox1[1])
        p3 = Point(hitbox1[0], hitbox1[1] + hitbox1[3])
        p4 = Point(hitbox1[0] + hitbox1[2], hitbox1[1] + hitbox1[3])
        points = [p1, p2, p3, p4]
        for p in points:
            if (p.x >= hitbox2[0]
                    and p.x <= hitbox2[0] + hitbox2[2]
                    and p.y >= hitbox2[1]
                    and p.y <= hitbox2[1] + hitbox2[3]):
                return True
        return False

class Player(object):
    def __init__(self):
        self.x = WIDTH // 2
        self.y = HEIGHT // 2
        self.width = 100
        self.height = 200
        self.hit_box = (self.x, self.y, self.width, self.height)
        self.color = pygame.Color("Blue")   # 颜色
        self.velocity = 10
    def left(self):
        self.x -= self.velocity
    def right(self):
        self.x += self.velocity
    def up(self):
        self.y -= self.velocity
    def down(self):
        self.y += self.velocity
    def update(self):
        self.hit_box = (self.x, self.y, self.width, self.height)    # 更新碰撞箱位置
        pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制
class Enemy(Player):
    pass


################### 创建一个方块对象
player = Player()
enemy = Enemy()
###################



if __name__ == "__main__":
    while running:
        screen.fill(pygame.Color("White"))  # 填充一个背景色
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
        ############ 获取输入 ##################
        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            player.down()
        if keys[pygame.K_UP]:
            player.up()
        if keys[pygame.K_LEFT]:
            player.left()
        if keys[pygame.K_RIGHT]:
            player.right()
        ######################################

        # ****************** 更新对象 *******************
        enemy.update()
        player.update()
        # ****************** ------ *******************
        pygame.display.update() # 更新画面

    pygame.quit()
    sys.exit()
    # 退出游戏辣!

运行发现多了一个小伙伴~在这里插入图片描述

5.2.2 测试碰撞
import sys

import pygame
pygame.init()   # 初始化pygame模块
WIDTH, HEIGHT = 800, 1200   # 窗口宽度,高度
FPS = 60    # 帧率
running = True  # 游戏运行状态
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # 设置窗口,screen为窗口对象
pygame.display.set_caption("怀念高中第一次接触Pygame的那个暑假!") # 设置窗口标题
clock = pygame.time.Clock() # 统一游戏帧率

class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

class Player(object):
    def __init__(self):
        self.x = WIDTH // 2
        self.y = HEIGHT // 2
        self.width = 100
        self.height = 200
        self.hit_box = (self.x, self.y, self.width, self.height)
        self.color = pygame.Color("Blue")   # 颜色
        self.velocity = 10
    def left(self):
        self.x -= self.velocity
    def right(self):
        self.x += self.velocity
    def up(self):
        self.y -= self.velocity
    def down(self):
        self.y += self.velocity
    def update(self):
        self.hit_box = (self.x, self.y, self.width, self.height)    # 更新碰撞箱位置
        pygame.draw.rect(screen, self.color, self.hit_box)  # 更新绘制
class Enemy(Player):
    pass

class CollisionController():
    def RectCollide(hitbox1, hitbox2):
        '''
        检测四个点是否在另一个矩形体内即可
        box1 = (x, y, width, height)
                0  1   2     3
        :param hitbox1:
        :param hitbox2:
        :return:
        '''
        p1 = Point(hitbox1[0], hitbox1[1])
        p2 = Point(hitbox1[0] + hitbox1[2], hitbox1[1])
        p3 = Point(hitbox1[0], hitbox1[1] + hitbox1[3])
        p4 = Point(hitbox1[0] + hitbox1[2], hitbox1[1] + hitbox1[3])
        points = [p1, p2, p3, p4]
        for p in points:
            if (p.x >= hitbox2[0]
                    and p.x <= hitbox2[0] + hitbox2[2]
                    and p.y >= hitbox2[1]
                    and p.y <= hitbox2[1] + hitbox2[3]):
                return True
        return False
    # def obj_collided(self, object1, object2):
    #     if self.RectCollide(object1.hit_box, object2.hit_box):
    #         return True
    #     else:
    #         return False

################### 创建一个方块对象
player = Player()
enemy = Enemy()
###################



if __name__ == "__main__":
    while running:
        screen.fill(pygame.Color("White"))  # 填充一个背景色
        for event in pygame.event.get():
            if event.type == pygame.QUIT: # 检测是否点击右上角窗口小x
                running = False
        ############ 获取输入 ##################
        keys = pygame.key.get_pressed()
        if keys[pygame.K_DOWN]:
            player.down()
        if keys[pygame.K_UP]:
            player.up()
        if keys[pygame.K_LEFT]:
            player.left()
        if keys[pygame.K_RIGHT]:
            player.right()
        ######################################

        # $$$$$$$$$$$$$$$ 碰撞检测 $$$$$$$$$$$$$$$$$$$
        if CollisionController.RectCollide(player.hit_box, enemy.hit_box):
            print("哎呀,创了一下咧!")
        # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

        # ****************** 更新对象 *******************
        enemy.update()
        player.update()
        # ****************** ------ *******************
        pygame.display.update() # 更新画面

    pygame.quit()
    sys.exit()
    # 退出游戏辣!

可以看到,现在每次撞一下都会被聪明的计算机给发现。在这里插入图片描述

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

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

相关文章

YOLOv9-20240507周更说明|更新MobileNetv4等多种轻量化主干

专栏地址&#xff1a;目前售价售价69.9&#xff0c;改进点70 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 本周已更新说明&#xff1a; ### ⭐⭐更新时间&#xff1a;2024/5/12⭐⭐ 1. YOLOv9…

android studio apt代码编写实战

之所以试一下apt代码的编写&#xff0c;是因为发现几年前写的工程&#xff0c;在新的android studio中debug apt代码时&#xff0c;一直连不上debug环境&#xff0c;提示报错 Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refu…

C++之Eigen库基本使用(下)

1、常见变换 Eigen::Matrix3d //旋转矩阵&#xff08;3*3&#xff09; Eigen::AngleAxisd //旋转向量&#xff08;3*1&#xff09; Eigen::Vector3d //欧拉角&#xff08;3*1&#xff09; Eigen::Quaterniond //四元数&#xff08;4*1&#xff09; Eigen::Isom…

Java中的maven的安装和配置

maven的作用 依赖管理 方便快捷的管理项目依赖的资源&#xff0c;避免版本冲突问题 统一项目管理 提供标准&#xff0c;统一的项目结构 项目构建 标准跨平台&#xff08;Linux、windows、MacOS&#xff09;的自动化项目构建方式 maven的安装和配置 在maven官网下载maven Ma…

牛客热题:比较版本号

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;比较版本号题目链接方法一:暴力…

解决kali linux ssh连接失败

kali linux 默认ssh是禁止root登录的 为了通过 SSH 进入你的 Kali Linux 系统&#xff0c;你可以有两个不同的选择。第一个选择是创建一个新的非特权用户然后使用它的身份来登录。第二个选择&#xff0c;你可以以 root 用户访问 SSH 。为了实现这件事&#xff0c;需要在SSH 配…

材料物理 笔记-8

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; ——…

污水设备远程监控

随着环保意识的日益增强&#xff0c;污水处理作为城市建设和环境保护的重要一环&#xff0c;越来越受到社会各界的关注。然而&#xff0c;传统的污水处理设备管理方式往往存在着效率低下、响应速度慢、维护成本高等问题。为了解决这些痛点&#xff0c;HiWoo Cloud平台凭借其强大…

01-项目功能,架构设计介绍

稻草快速开发平台 开发背景就是通过此项目介绍使用SpringBoot Vue3两大技术栈开发一个拥有动态权限、路由的前后端分离项目&#xff0c;此项目可以继续完善&#xff0c;成为一个模板为将来快速开发做铺垫。 实现功能 开发流程 通过命令构建前端项目在VSCode中开发&#xff…

海外静态IP购买指南:探索全球网络连接的奥秘

在数字化时代&#xff0c;互联网连接的重要性不言而喻。对于企业和个人而言&#xff0c;拥有稳定、高速的网络连接是成功的关键。而在特定应用场景下&#xff0c;如远程办公、跨境电商、服务器托管等&#xff0c;海外静态IP地址的需求日益凸显。本文将为您详细解读海外静态IP购…

【Shell】正则表达式的操作实例

正则表达式是一个描述一组字符串的模式 是由普通字符和元字符组成的字符集&#xff0c;而这个字符集匹配&#xff08;或指定&#xff09;一个模式。 正则表达式的操作实例 &#xff08;一&#xff09;概述1.定义2.作用3.类型 &#xff08;二&#xff09;字符串匹配实例&#xf…

使用git系统来更新FreeBSD ports源码

FreeBSD跟其它系统相比一大特色就是ports系统。 The Ports Collection is a set of Makefiles, patches, and description files. Each set of these files is used to compile and install an individual application on FreeBSD, and is called a port. By default, the Po…

什么是EcoVadis评级?

EcoVadis评级是一种全球性的公司社会责任评估体系&#xff0c;旨在评估公司在环境、经济、社会和治理四个方面的表现&#xff0c;以帮助公司提高可持续发展的能力。它不仅是一个评估工具&#xff0c;更是一个推动公司实现可持续发展目标的平台。 EcoVadis评级的分级主要包括以…

word-合同排版及签订

合同排版、合同修订、合同保护、合同管理 一、合同排版 1、字体字号管理突出标题 2、通过缩进整理每个层级的内容 3、条款的各级标题要有段前和断后的间距 4、建议将对齐到网格勾掉 合同排版没有一定的规则 合同排版要点&#xff1a; 二、合同修订 推荐使用OfficePLUS.cn找参…

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届CCPC河南省大学生程序设计竞赛 problem K. 树上问题

//先找一个美丽的树&#xff0c;然后遍历树找节点,分析是否符合条件。 //画几个图&#xff0c;思考下。 #include<bits/stdc.h> using namespace std; #define int long long const int n1e611; int a,b,c[n],d,l,r,k,w,an; vector<int>t[n]; void dfs(int x,int…

SSD-60S施耐德电机保护器EOCR-SSD

EOCR主要产品有电子式电动机保护继电器&#xff0c;电子式过电流继电器&#xff0c;电子式欠电流继电器&#xff0c;电子式欠电压继电器&#xff0c;其它保护装置&#xff0c;电流互感器。EOCR-SSD 10-60A电机保护器 系列型号: EOCRSSD-05SEOCRssD-30s EOCRSSD-60SEOCRSSD-0…

对比学习笔记

这里写目录标题 什么是对比学习计算机视觉中的对比学习对比学习在NLP中的应用 什么是对比学习 对比学习是在没有标签的前提下学习样本之间的是否相似&#xff0c;其实和二分类比较相似&#xff0c;判断两个图像是不是属于同一个类别。换句话来说就是把相近的分布推得更近&…

深入学习心理学才知道以前高估了自己的交易能力

人的大脑总是能带来无限的惊喜。你能同时完成很多种工作而没有觉察你自己正在做这些事情。比如你一边开车一边打电话讨论着很严肃的事&#xff0c;边吃饭边用眼睛关心着后排坐着的孩子。除了这些外部的动作&#xff0c;你的内脏机能也在马不停蹄的工作着。这一切并不需要我们付…

如何在windows server下安装mysql5.7数据库,并使用Navicat Premium 15可视化工具新建数据库并读取数据库信息。

如何在windows server下安装mysql5.7数据库&#xff1f; MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/点击↑&#xff0c;然后选择对应版本和平台↓下载 将下载后的安装包放入固定目录&#xff08;这里以D:…

Spring Cloud Alibaba 分布式配置中心(9)

项目的源码地址 Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbo…