【Python实战】Google Chrome的离线小恐龙游戏

news2024/11/16 11:19:32

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

文章目录

    • Google Chrome的离线小恐龙游戏
        • 项目结构大纲 📊👣
        • 逐步编码过程 🧩💡
            • 第一步:项目初始化与主程序框架
            • 第二步:实现T-Rex的跳跃功能
            • 第三步:添加障碍物和碰撞检测
            • 第四步:添加得分机制和显示得分
            • 第五步:游戏结束处理和重新开始选项
            • 第六步:添加背景和地面
        • 效果图

Google Chrome的离线小恐龙游戏

本文章通过详细的列举项目结构大纲和列举逐步编码过程和思路,便于学习者能够更加快速方便地掌握该游戏的开发。

项目结构大纲 📊👣
t_rex_game/
│
├── main.py        # 主程序文件
├── trex.py        # T-Rex角色类
├── assets/
│   └── trex.png   # T-Rex图片文件
├── obstacles.py   # 障碍物类

逐步编码过程 🧩💡
第一步:项目初始化与主程序框架

main.py

import pygame
import sys
from trex import TRex

# 初始化pygame
pygame.init()

# 设置屏幕尺寸
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))

# 定义颜色
white = (255, 255, 255)

# 设置帧率
clock = pygame.time.Clock()
fps = 30

# 游戏主循环
def game_loop():
    t_rex = TRex(screen_width, screen_height)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        screen.fill(white)
        t_rex.draw(screen)

        pygame.display.update()
        clock.tick(fps)

if __name__ == "__main__":
    game_loop()

trex.py

import pygame
import os

class TRex:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'trex.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = 50
        self.y = screen_height - 70
        self.screen_width = screen_width
        self.screen_height = screen_height

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

注意点
首先,trex.png指的是小恐龙的照片,要先保证照片能够正常显示;然后要使用pygame.transform.scale函数来缩放图片大小。调整后的图片大小为50x50像素,你可以根据需要调整这个尺寸。

第二步:实现T-Rex的跳跃功能

main.py

import pygame
import sys
from trex import TRex

# 初始化pygame
pygame.init()

# 设置屏幕尺寸
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))

# 定义颜色
white = (255, 255, 255)

# 设置帧率
clock = pygame.time.Clock()
fps = 30

# 游戏主循环
def game_loop():
    t_rex = TRex(screen_width, screen_height)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    t_rex.jump()

        t_rex.update()  # 更新T-Rex的状态

        screen.fill(white)
        t_rex.draw(screen)

        pygame.display.update()
        clock.tick(fps)

if __name__ == "__main__":
    game_loop()

trex.py

import pygame
import os

class TRex:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'trex.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = 50
        self.y = screen_height - 70
        self.jump_speed = 20  # 跳跃速度(增加)
        self.gravity = 2  # 重力(增加)
        self.velocity = 0  # 初始速度
        self.is_jumping = False  # 跳跃状态
        self.screen_width = screen_width
        self.screen_height = screen_height

    def jump(self):
        if not self.is_jumping:
            self.is_jumping = True
            self.velocity = -self.jump_speed

    def update(self):
        if self.is_jumping:
            self.y += self.velocity
            self.velocity += self.gravity

            # 检查是否着地
            if self.y >= self.screen_height - 70:
                self.y = self.screen_height - 70
                self.is_jumping = False
                self.velocity = 0

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

注意点
在完成跳跃功能时,我们会使小恐龙跳跃回弹到地面的时间尽可能短。我们可以通过设置:
跳跃速度:将self.jump_speed从15增加到20。
重力加速度:将self.gravity从1增加到2。

第三步:添加障碍物和碰撞检测

我们需要创建一个Obstacle类,并在主程序中生成障碍物。同时,实现T-Rex与障碍物的碰撞检测。
项目结构大纲 📊👣

t_rex_game/
│
├── main.py        # 主程序文件
├── trex.py        # T-Rex角色类
├── obstacles.py   # 障碍物类
├── assets/
│   └── trex.png   # T-Rex图片文件
│   └── cactus.png # 障碍物图片文件
└── utils.py       # 工具函数

main.py

import pygame
import sys
from trex import TRex
from obstacles import Obstacle
import random

# 初始化pygame
pygame.init()

# 设置屏幕尺寸
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))

# 定义颜色
white = (255, 255, 255)

# 设置帧率
clock = pygame.time.Clock()
fps = 30

# 游戏主循环
def game_loop():
    t_rex = TRex(screen_width, screen_height)
    obstacles = []

    def create_obstacle():
        obstacle = Obstacle(screen_width, screen_height)
        obstacles.append(obstacle)

    # 每隔一段时间创建一个新障碍物
    obstacle_timer = 0

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    t_rex.jump()

        t_rex.update()  # 更新T-Rex的状态

        # 创建新障碍物
        obstacle_timer += 1
        if obstacle_timer > 50:
            create_obstacle()
            obstacle_timer = 0

        # 更新障碍物状态
        for obstacle in obstacles:
            obstacle.update()
            # 检测碰撞
            if t_rex.x < obstacle.x + obstacle.width and \
               t_rex.x + t_rex.width > obstacle.x and \
               t_rex.y < obstacle.y + obstacle.height and \
               t_rex.height + t_rex.y > obstacle.y:
                # 碰撞检测到
                pygame.quit()
                sys.exit()

        # 清除离开屏幕的障碍物
        obstacles = [obstacle for obstacle in obstacles if obstacle.x + obstacle.width > 0]

        screen.fill(white)
        t_rex.draw(screen)
        for obstacle in obstacles:
            obstacle.draw(screen)

        pygame.display.update()
        clock.tick(fps)

if __name__ == "__main__":
    game_loop()

trex.py

import pygame
import os

class TRex:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'trex.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = 50
        self.y = screen_height - 70
        self.width = 50
        self.height = 50
        self.jump_speed = 20  # 跳跃速度
        self.gravity = 2  # 重力
        self.velocity = 0  # 初始速度
        self.is_jumping = False  # 跳跃状态
        self.screen_width = screen_width
        self.screen_height = screen_height

    def jump(self):
        if not self.is_jumping:
            self.is_jumping = True
            self.velocity = -self.jump_speed

    def update(self):
        if self.is_jumping:
            self.y += self.velocity
            self.velocity += self.gravity

            # 检查是否着地
            if self.y >= self.screen_height - 70:
                self.y = self.screen_height - 70
                self.is_jumping = False
                self.velocity = 0

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

obstacles.py

import pygame
import os

class Obstacle:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'cactus.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = screen_width
        self.y = screen_height - 70
        self.width = 50
        self.height = 50
        self.speed = 10

    def update(self):
        self.x -= self.speed

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

解释
障碍物类:Obstacle类用于表示游戏中的障碍物。每个障碍物都有位置、大小和速度属性。
创建和更新障碍物:在主程序中,我们定期创建新障碍物,并在每一帧更新它们的位置。
碰撞检测:在主程序的每一帧,我们检查T-Rex与每个障碍物是否发生碰撞。如果发生碰撞,游戏结束。

第四步:添加得分机制和显示得分

main.py

import pygame
import sys
from trex import TRex
from obstacles import Obstacle
import random

# 初始化pygame
pygame.init()

# 设置屏幕尺寸
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))

# 定义颜色
white = (255, 255, 255)
black = (0, 0, 0)

# 设置帧率
clock = pygame.time.Clock()
fps = 30

# 游戏主循环
def game_loop():
    t_rex = TRex(screen_width, screen_height)
    obstacles = []
    score = 0

    def create_obstacle():
        obstacle = Obstacle(screen_width, screen_height)
        obstacles.append(obstacle)

    # 每隔一段时间创建一个新障碍物
    obstacle_timer = 0

    # 创建字体对象
    font = pygame.font.Font(None, 36)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    t_rex.jump()

        t_rex.update()  # 更新T-Rex的状态

        # 创建新障碍物
        obstacle_timer += 1
        if obstacle_timer > 50:
            create_obstacle()
            obstacle_timer = 0

        # 更新障碍物状态
        for obstacle in obstacles:
            obstacle.update()
            # 检测碰撞
            if t_rex.x < obstacle.x + obstacle.width and \
               t_rex.x + t_rex.width > obstacle.x and \
               t_rex.y < obstacle.y + obstacle.height and \
               t_rex.height + t_rex.y > obstacle.y:
                # 碰撞检测到
                pygame.quit()
                sys.exit()

        # 更新得分
        for obstacle in obstacles:
            if obstacle.x + obstacle.width < t_rex.x:
                score += 1
                obstacles.remove(obstacle)  # 删除已通过的障碍物

        screen.fill(white)
        t_rex.draw(screen)
        for obstacle in obstacles:
            obstacle.draw(screen)

        # 显示得分
        score_text = font.render(f'Score: {score}', True, black)
        screen.blit(score_text, (10, 10))

        pygame.display.update()
        clock.tick(fps)

if __name__ == "__main__":
    game_loop()

trex.py

import pygame
import os

class TRex:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'trex.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = 50
        self.y = screen_height - 70
        self.width = 50
        self.height = 50
        self.jump_speed = 20  # 跳跃速度
        self.gravity = 2  # 重力
        self.velocity = 0  # 初始速度
        self.is_jumping = False  # 跳跃状态
        self.screen_width = screen_width
        self.screen_height = screen_height

    def jump(self):
        if not self.is_jumping:
            self.is_jumping = True
            self.velocity = -self.jump_speed

    def update(self):
        if self.is_jumping:
            self.y += self.velocity
            self.velocity += self.gravity

            # 检查是否着地
            if self.y >= self.screen_height - 70:
                self.y = self.screen_height - 70
                self.is_jumping = False
                self.velocity = 0

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

obstacles.py

import pygame
import os

class Obstacle:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'cactus.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = screen_width
        self.y = screen_height - 70
        self.width = 50
        self.height = 50
        self.speed = 10

    def update(self):
        self.x -= self.speed

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

解释
更新得分机制:在每一帧中,检查每个障碍物是否已经通过了T-Rex的位置(obstacle.x + obstacle.width < t_rex.x)。如果通过,增加得分,并从障碍物列表中删除该障碍物。

第五步:游戏结束处理和重新开始选项

main.py

import pygame
import sys
from trex import TRex
from obstacles import Obstacle
import random

# 初始化pygame
pygame.init()

# 设置屏幕尺寸
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))

# 定义颜色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)

# 设置帧率
clock = pygame.time.Clock()
fps = 30

# 显示游戏结束画面
def show_game_over_screen(score):
    screen.fill(white)
    font = pygame.font.Font(None, 48)
    game_over_text = font.render('Game Over', True, red)
    score_text = font.render(f'Score: {score}', True, black)
    restart_text = font.render('Press R to Restart', True, black)
    
    screen.blit(game_over_text, (screen_width // 2 - game_over_text.get_width() // 2, screen_height // 2 - 50))
    screen.blit(score_text, (screen_width // 2 - score_text.get_width() // 2, screen_height // 2))
    screen.blit(restart_text, (screen_width // 2 - restart_text.get_width() // 2, screen_height // 2 + 50))
    
    pygame.display.update()

    # 等待用户按下 R 键重新开始
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_r:
                    return  # 重新开始游戏

# 游戏主循环
def game_loop():
    t_rex = TRex(screen_width, screen_height)
    obstacles = []
    score = 0

    def create_obstacle():
        obstacle = Obstacle(screen_width, screen_height)
        obstacles.append(obstacle)

    # 每隔一段时间创建一个新障碍物
    obstacle_timer = 0

    # 创建字体对象
    font = pygame.font.Font(None, 36)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    t_rex.jump()

        t_rex.update()  # 更新T-Rex的状态

        # 创建新障碍物
        obstacle_timer += 1
        if obstacle_timer > 50:
            create_obstacle()
            obstacle_timer = 0

        # 更新障碍物状态
        for obstacle in obstacles:
            obstacle.update()
            # 检测碰撞
            if t_rex.x < obstacle.x + obstacle.width and \
               t_rex.x + t_rex.width > obstacle.x and \
               t_rex.y < obstacle.y + obstacle.height and \
               t_rex.height + t_rex.y > obstacle.y:
                # 碰撞检测到,显示游戏结束画面
                show_game_over_screen(score)
                return

        # 更新得分
        for obstacle in obstacles:
            if obstacle.x + obstacle.width < t_rex.x:
                score += 1
                obstacles.remove(obstacle)  # 删除已通过的障碍物

        screen.fill(white)
        t_rex.draw(screen)
        for obstacle in obstacles:
            obstacle.draw(screen)

        # 显示得分
        score_text = font.render(f'Score: {score}', True, black)
        screen.blit(score_text, (10, 10))

        pygame.display.update()
        clock.tick(fps)

if __name__ == "__main__":
    while True:
        game_loop()

第六步:添加背景和地面

项目结构大纲

t_rex_game/
│
├── main.py        # 主程序文件
├── trex.py        # T-Rex角色类
├── obstacles.py   # 障碍物类
├── assets/
│   └── trex.png   # T-Rex图片文件
│   └── cactus.png # 障碍物图片文件
│   └── ground.png # 地面图片文件
└── utils.py       # 工具函数

main.py

import pygame
import sys
from trex import TRex
from obstacles import Obstacle
import random

# 初始化pygame
pygame.init()

# 设置屏幕尺寸
screen_width = 800
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))

# 定义颜色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)

# 设置帧率
clock = pygame.time.Clock()
fps = 30

# 加载地面图片
ground = pygame.image.load('assets/ground.png')
ground_height = 20
ground = pygame.transform.scale(ground, (screen_width, ground_height))

# 显示游戏结束画面
def show_game_over_screen(score):
    screen.fill(white)
    font = pygame.font.Font(None, 48)
    game_over_text = font.render('Game Over', True, red)
    score_text = font.render(f'Score: {score}', True, black)
    restart_text = font.render('Press R to Restart', True, black)
    
    screen.blit(game_over_text, (screen_width // 2 - game_over_text.get_width() // 2, screen_height // 2 - 50))
    screen.blit(score_text, (screen_width // 2 - score_text.get_width() // 2, screen_height // 2))
    screen.blit(restart_text, (screen_width // 2 - restart_text.get_width() // 2, screen_height // 2 + 50))
    
    pygame.display.update()

    # 等待用户按下 R 键重新开始
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_r:
                    return  # 重新开始游戏

# 游戏主循环
def game_loop():
    t_rex = TRex(screen_width, screen_height)
    obstacles = []
    score = 0

    def create_obstacle():
        obstacle = Obstacle(screen_width, screen_height)
        obstacles.append(obstacle)

    # 每隔一段时间创建一个新障碍物
    obstacle_timer = 0

    # 创建字体对象
    font = pygame.font.Font(None, 36)

    # 背景颜色控制
    bg_color = white
    bg_color_change_timer = 0
    bg_color_change_interval = 500  # 颜色变化间隔(帧数)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    t_rex.jump()

        t_rex.update()  # 更新T-Rex的状态

        # 创建新障碍物
        obstacle_timer += 1
        if obstacle_timer > 50:
            create_obstacle()
            obstacle_timer = 0

        # 更新障碍物状态
        for obstacle in obstacles:
            obstacle.update()
            # 检测碰撞
            if t_rex.x < obstacle.x + obstacle.width and \
               t_rex.x + t_rex.width > obstacle.x and \
               t_rex.y < obstacle.y + obstacle.height and \
               t_rex.height + t_rex.y > obstacle.y:
                # 碰撞检测到,显示游戏结束画面
                show_game_over_screen(score)
                return

        # 更新得分
        for obstacle in obstacles:
            if obstacle.x + obstacle.width < t_rex.x:
                score += 1
                obstacles.remove(obstacle)  # 删除已通过的障碍物

        # 变换背景颜色
        bg_color_change_timer += 1
        if bg_color_change_timer > bg_color_change_interval:
            bg_color = black if bg_color == white else white
            bg_color_change_timer = 0

        screen.fill(bg_color)
        screen.blit(ground, (0, screen_height - ground_height))  # 显示地面

        t_rex.draw(screen)
        for obstacle in obstacles:
            obstacle.draw(screen)

        # 显示得分
        score_text = font.render(f'Score: {score}', True, black if bg_color == white else white)
        screen.blit(score_text, (10, 10))

        pygame.display.update()
        clock.tick(fps)

if __name__ == "__main__":
    while True:
        game_loop()

trex.py

import pygame
import os

class TRex:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'trex.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = 50
        self.y = screen_height - 70 - 20  # 调整位置以适应地面高度
        self.width = 50
        self.height = 50
        self.jump_speed = 20  # 跳跃速度
        self.gravity = 2  # 重力
        self.velocity = 0  # 初始速度
        self.is_jumping = False  # 跳跃状态
        self.screen_width = screen_width
        self.screen_height = screen_height

    def jump(self):
        if not self.is_jumping:
            self.is_jumping = True
            self.velocity = -self.jump_speed

    def update(self):
        if self.is_jumping:
            self.y += self.velocity
            self.velocity += self.gravity

            # 检查是否着地
            if self.y >= self.screen_height - 70 - 20:
                self.y = self.screen_height - 70 - 20
                self.is_jumping = False
                self.velocity = 0

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

obstacles.py

import pygame
import os

class Obstacle:
    def __init__(self, screen_width, screen_height):
        # 获取当前脚本文件所在的目录
        current_path = os.path.dirname(__file__)
        # 拼接图片文件的完整路径
        image_path = os.path.join(current_path, 'assets', 'cactus.png')
        self.image = pygame.image.load(image_path)
        self.image = pygame.transform.scale(self.image, (50, 50))  # 缩放图片
        self.x = screen_width
        self.y = screen_height - 70 - 20  # 调整位置以适应地面高度
        self.width = 50
        self.height = 50
        self.speed = 10

    def update(self):
        self.x -= self.speed

    def draw(self, screen):
        screen.blit(self.image, (self.x, self.y))

解释
背景颜色切换:在主程序中,我们使用一个计时器bg_color_change_timer来控制背景颜色的变化。每当计时器达到设定的间隔时,背景颜色在白色和黑色之间切换。
地面调整:调整了T-Rex和障碍物的垂直位置以适应地面高度。

效果图

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Python3网络爬虫开发实战(1)爬虫基础

一、URL 基础 URL也就是网络资源地址&#xff0c;其满足如下格式规范 scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] scheme&#xff1a;协议&#xff0c;常用的协议有 Http&#xff0c;https&#xff0c;ftp等等&#xff1b;usern…

正点原子 通用外设配置模型 GPIO配置步骤 NVIC配置

1. 这个是通用外设驱动模式配置 除了初始化是必须的 其他不是必须的 2. gpio配置步骤 1.使能时钟是相当于开电 2.设置工作模式是配置是输出还是输入 是上拉输入还是下拉输入还是浮空 是高速度还是低速度这些 3 和 4小点就是读写io口的状态了 3. 这个图是正点原子 将GPIO 的时…

2024中国大学生算法设计超级联赛(2)

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 &#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 A - 鸡爪解题思…

eclipse修改tomcat的Jre运行环境

1.双击tomcat 2.RuntimeEnvironment 3.选择

轨道式智能巡检机器人,助力综合管廊安全运维

1 引言 当前城市综合管廊建设已经成为世界范围内的发展趋势&#xff0c;2017年5月住建部、发改委联合发布《全国城市市政基础设施建设“十三五”规划》&#xff0c;截至2017年4月底国内地下综合管廊试点项目已开工建设687 km&#xff0c;建成廊体260 km&#xff0c;完成投资40…

redis的使用场景-热点数据缓存

1.什么是缓存&#xff1f; 把一些经常访问的数据放入缓存中&#xff0c;减少访问数据库的频率&#xff0c;减少数据库的压力&#xff0c;从而提高程序的性能。【内存中存储】 2.缓存的原理 通过上图可以看出程序首先访问缓存&#xff0c;如果缓存中有访问的数据会直接方会给客…

分布式系统常见软件架构模式

常见的分布式软件架构 Peer-to-Peer (P2P) PatternAPI Gateway PatternPub-Sub (Publish-Subscribe)Request-Response PatternEvent Sourcing PatternETL (Extract, Transform, Load) PatternBatching PatternStreaming Processing PatternOrchestration Pattern总结 先上个图&…

基于Golang+Vue3快速搭建的博客系统

WANLI 博客系统 项目介绍 基于vue3和gin框架开发的前后端分离个人博客系统&#xff0c;包含md格式的文本编辑展示&#xff0c;点赞评论收藏&#xff0c;新闻热点&#xff0c;匿名聊天室&#xff0c;文章搜索等功能。 项目在线访问&#xff1a;http://bloggo.chat/ 或 http:/…

Photos框架 - 自定义媒体资源选择器(数据部分)

引言 在iOS开发中&#xff0c;系统已经为我们提供了多种便捷的媒体资源选择方式&#xff0c;如UIImagePickerController和PHPickerViewController。这些方式不仅使用方便、界面友好&#xff0c;而且我们完全不需要担心性能和稳定性问题&#xff0c;因为它们是由系统提供的&…

基于扩散的生成模型的语音增强和去噪

第二章 目标说话人提取之《Speech Enhancement and Dereverberation with Diffusion-based Generative Models》 文章目录 前言一、任务二、动机三、挑战四、方法1.方法:基于分数的语音增强生成模型(sgmse)2.网络结构 五、实验评价1.数据集2.采样器设置和评价指标3.基线模型4.评…

godot新建项目及设置外部编辑器为vscode

一、新建项目 初次打开界面如下所示&#xff0c;点击取消按钮先关闭掉默认弹出的框 点击①新建弹出中间的弹窗②中填入项目的名称 ③中设置项目的存储路径&#xff0c;点击箭头所指浏览按钮&#xff0c;会弹出如下所示窗口 根据图中所示可以选择或新建自己的游戏存储路径&…

音视频开发之旅(85)- 图像分类-VGG模型解析

目录 1. VGG解决的问题 2. 网络结构和参数 3. pytorch搭建vgg 4.flower_photos分类任务实践 5.资料 一、VGG解决的问题 论文链接&#xff1a;https://arxiv.org/pdf/1409.1556 在VGG之前&#xff0c;大多数深度学习模型相对较浅&#xff0c;比如下面的AlexNet(5层卷积和3…

记录阿里云部署gitlab

登录阿里云&#xff1a; 阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 选择自己的ECS实例。我的实例是 使用VNC登录&#xff1a;输入用户名和密码 安装所需的依赖包&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添…

Git(分布式版本控制系统)(fourteen day)

一、分布式版本控制系统 1、Git概述 Git是一种分布式版本控制系统&#xff0c;用于跟踪和管理代码的变更&#xff0c;它由Linux、torvalds创建的&#xff0c;最初被设计用于Linux内核的开发。Git允许开发人员跟踪和管理代码的版本&#xff0c;并且可以在不同的开发人员之间进行…

货架管理a

路由->vue的el标签->Api->call方法里calljs的api接口->数据声明const xxxData-> 编辑按钮:点击跳出页面并把这一行的数据给到表单formDataba2 保存按钮:formDataba2改过的数据->xxApi发送->查询Api 跳转仓库:把tableData.value数据清空->callXxxAp…

华为云依赖引入错误

问题&#xff1a;记录一次项目加在华为云依赖错误&#xff0c;如下&#xff1a; 错误信息&#xff1a;Could not find artifact com.huawei.storage:esdk-obs-java:pom:3.1.2.1 in bintray-qcloud-maven-repo (https://dl.bintray.com/qcloud/maven-repo/) 找到本地仓库&#…

mac环境Qt Creator报错:Warning: You are changing a read-only file.

mac环境Qt Creator报错&#xff1a; Warning: You are changing a read-only file. 权限许可 文件权限问题 修改文件夹权限的基本语法&#xff1a; 打开终端&#xff1a;打开 macOS 中的终端应用程序。 sudo chmod -R permissions folder_pathchmod 是改变文件或文件夹权限…

虚拟机之ip配置,ssh连接到虚拟机

右边是我的虚拟机&#xff0c;左边是我使用vscode来连接&#xff08;终端也可以。然后注意vscode配置后点一下刷新&#xff0c;不会自动刷新的QA&#xff09;&#xff08;吐槽一下&#xff0c;虚拟机都不能复制内容呢&#xff0c;确实仿真&#xff0c;centos仿真就是因为没有图…

基于深度学习网络的USB摄像头实时视频采集与水果识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将usb摄像头对准一个播放不同水果图片的显示器&#xff0c;然后进行识别&#xff0c;识别结果如下&#xff1a; 本课题中…

爬取贴吧的标题和链接

免责声明 感谢您学习本爬虫学习Demo。在使用本Demo之前&#xff0c;请仔细阅读以下免责声明&#xff1a; 学习和研究目的&#xff1a;本爬虫Demo仅供学习和研究使用。用户不得将其用于任何商业用途或其他未经授权的行为。合法性&#xff1a;用户在使用本Demo时&#xff0c;应确…