当前位置: 首页 > news >正文

第二篇【传奇开心果微博系列】Python微项目技术点案例示例:成语接龙游戏

传奇开心果微博系列

  • 系列微博目录
    • Python微项目技术点案例示例系列
  • 微博目录
    • 一、微项目目标
    • 二、雏形示例代码
    • 三、扩展整体思路
    • 四、玩家输入示例代码
    • 五、成语判断示例代码
    • 六、回答判断示例代码
    • 七、电脑判断示例代码
    • 八、游戏结束示例代码
    • 九、界面优化示例代码
    • 十、扩展成语库示例代码
    • 十一、音效和动画效果示例代码

系列微博目录

Python微项目技术点案例示例系列

微博目录

一、微项目目标

在这里插入图片描述使用Pygame实现成语接龙小游戏微项目示例代码。

二、雏形示例代码

在这里插入图片描述下面是一个使用Pygame实现的简单成语接龙游戏示例代码:

import pygame
import random# 初始化Pygame
pygame.init()# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")# 加载背景图片
background = pygame.image.load("background.jpg")
background = pygame.transform.scale(background, (WIDTH, HEIGHT))# 加载字体
font = pygame.font.Font(None, 36)# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]# 当前成语
current_idiom = random.choice(idioms)# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 绘制背景screen.blit(background, (0, 0))# 绘制当前成语text = font.render("当前成语:" + current_idiom, True, BLACK)screen.blit(text, (50, 50))# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

这个示例代码创建了一个简单的成语接龙游戏窗口,加载了背景图片,并显示了当前的成语。

三、扩展整体思路

在这里插入图片描述要扩展这个成语接龙游戏的整体思路,可以考虑以下几个方面:

  1. 玩家输入: 让玩家能够输入成语作为回答。可以使用Pygame的文本输入功能,让玩家在游戏窗口中输入成语。

  2. 成语判断: 在玩家输入成语后,需要判断该成语是否符合接龙规则。可以使用成语库或者在线成语接口来验证成语的合法性,确保玩家输入的成语是有效的。

  3. 回答判断: 在判断成语合法后,需要判断该成语是否符合接龙规则,即是否与上一个成语的最后一个字相同。可以编写函数来进行判断,并给出相应的提示。

  4. 电脑回答: 可以编写一个电脑回答的函数,让电脑自动选择一个合适的成语作为回答。

  5. 游戏结束: 当玩家或电脑无法回答时,游戏结束。可以根据具体规则判断胜负,或者设置一个时间限制,超过时间限制则游戏结束。

  6. 界面优化: 可以对游戏界面进行美化和优化,比如添加背景音乐、按钮和菜单等,增加游戏的可玩性和用户体验。

  7. 成语扩展: 可以考虑扩展成语库,增加更多的成语,以提高游戏的趣味性和挑战性。

根据以上思路,你可以逐步完善游戏的功能和规则,使成语接龙游戏更加完整和有趣。

四、玩家输入示例代码

在这里插入图片描述以下是一个使用Pygame实现玩家输入成语的示例代码:

import pygame
import random# 初始化Pygame
pygame.init()# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")# 加载字体
font = pygame.font.Font(None, 36)# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]# 当前成语
current_idiom = random.choice(idioms)# 玩家输入
player_input = ""# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_RETURN:# 玩家按下回车键,判断成语是否合法if player_input and player_input[-1] == current_idiom[-1]:# 成语合法,更新当前成语,并清空玩家输入current_idiom = player_inputplayer_input = ""else:# 成语不合法,给出提示print("成语不合法!")elif event.key == pygame.K_BACKSPACE:# 玩家按下退格键,删除最后一个字符player_input = player_input[:-1]else:# 玩家输入字符player_input += event.unicode# 绘制当前成语screen.fill(WHITE)text = font.render("当前成语:" + current_idiom, True, BLACK)screen.blit(text, (50, 50))# 绘制玩家输入input_text = font.render("玩家输入:" + player_input, True, BLACK)screen.blit(input_text, (50, 100))# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

在这个示例代码中,我们添加了玩家输入的功能。玩家可以在游戏窗口中输入成语,并按下回车键来提交输入。如果输入的成语与当前成语的最后一个字相同,则更新当前成语,并清空玩家输入。如果输入的成语不合法,则给出相应的提示。玩家可以使用退格键来删除最后一个字符。

五、成语判断示例代码

在这里插入图片描述以下是一个使用在线成语接口验证成语合法性的示例代码:

import pygame
import requests# 初始化Pygame
pygame.init()# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")# 加载字体
font = pygame.font.Font(None, 36)# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]# 当前成语
current_idiom = random.choice(idioms)# 玩家输入
player_input = ""# 验证成语合法性的函数
def validate_idiom(idiom):url = "http://api.avatardata.cn/ChengYu/Search?key=your_api_key&id={}".format(idiom)response = requests.get(url)data = response.json()if data["error_code"] == 0 and data["result"]:return Trueelse:return False# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_RETURN:# 玩家按下回车键,判断成语是否合法if player_input and player_input[-1] == current_idiom[-1] and validate_idiom(player_input):# 成语合法,更新当前成语,并清空玩家输入current_idiom = player_inputplayer_input = ""else:# 成语不合法,给出提示print("成语不合法!")elif event.key == pygame.K_BACKSPACE:# 玩家按下退格键,删除最后一个字符player_input = player_input[:-1]else:# 玩家输入字符player_input += event.unicode# 绘制当前成语screen.fill(WHITE)text = font.render("当前成语:" + current_idiom, True, BLACK)screen.blit(text, (50, 50))# 绘制玩家输入input_text = font.render("玩家输入:" + player_input, True, BLACK)screen.blit(input_text, (50, 100))# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

在这个示例代码中,我们使用了一个在线成语接口来验证玩家输入的成语是否合法。validate_idiom 函数会向接口发送请求,并根据返回的数据判断成语是否合法。你需要将 your_api_key 替换为你自己的API密钥。

请注意,这只是一个示例,实际使用时你可能需要根据接口的返回数据进行适当的处理和错误处理。另外,你也可以使用本地的成语库或其他成语验证方法来验证成语的合法性。

六、回答判断示例代码

在这里插入图片描述以下是一个示例代码,用于判断玩家输入的成语是否符合接龙规则:

import pygame
import requests# 初始化Pygame
pygame.init()# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")# 加载字体
font = pygame.font.Font(None, 36)# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]# 当前成语
current_idiom = random.choice(idioms)# 玩家输入
player_input = ""# 验证成语合法性的函数
def validate_idiom(idiom):url = "http://api.avatardata.cn/ChengYu/Search?key=your_api_key&id={}".format(idiom)response = requests.get(url)data = response.json()if data["error_code"] == 0 and data["result"]:return Trueelse:return False# 判断成语是否符合接龙规则的函数
def is_valid_idiom(idiom):if idiom and idiom[0] == current_idiom[-1]:return Trueelse:return False# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_RETURN:# 玩家按下回车键,判断成语是否合法并符合接龙规则if player_input and validate_idiom(player_input) and is_valid_idiom(player_input):# 成语合法且符合接龙规则,更新当前成语,并清空玩家输入current_idiom = player_inputplayer_input = ""else:# 成语不合法或不符合接龙规则,给出相应的提示if not player_input:print("请输入成语!")elif not is_valid_idiom(player_input):print("成语不符合接龙规则!")elif event.key == pygame.K_BACKSPACE:# 玩家按下退格键,删除最后一个字符player_input = player_input[:-1]else:# 玩家输入字符player_input += event.unicode# 绘制当前成语screen.fill(WHITE)text = font.render("当前成语:" + current_idiom, True, BLACK)screen.blit(text, (50, 50))# 绘制玩家输入input_text = font.render("玩家输入:" + player_input, True, BLACK)screen.blit(input_text, (50, 100))# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

在上述代码中,我们添加了一个名为 is_valid_idiom 的函数,用于判断玩家输入的成语是否符合接龙规则。该函数检查玩家输入的成语是否为空,并且判断玩家输入的成语的第一个字是否与当前成语的最后一个字相同。如果成语符合接龙规则,则更新当前成语,并清空玩家输入;否则,给出相应的提示。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。例如,你可以添加更多的成语验证规则,或者修改提示的方式(例如在游戏窗口中显示提示信息)。

七、电脑判断示例代码

在这里插入图片描述

以下是一个示例代码,用于让电脑自动选择一个合适的成语作为回答:

import random# 电脑回答的函数
def computer_answer():available_idioms = [idiom for idiom in idioms if idiom[0] == current_idiom[-1]]if available_idioms:return random.choice(available_idioms)else:return None# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():# ...# ...# 电脑回答computer_idiom = computer_answer()if computer_idiom:# 成功选择一个合适的成语作为回答current_idiom = computer_idiomelse:# 无法找到合适的成语作为回答,游戏结束print("电脑无法回答,游戏结束!")running = False# ...# ...

在上述代码中,我们添加了一个名为 computer_answer 的函数,用于让电脑自动选择一个合适的成语作为回答。该函数首先筛选出所有以当前成语最后一个字开头的成语,然后从中随机选择一个成语作为回答。如果找不到合适的成语作为回答,则游戏结束。

你可以将 computer_answer 函数放在游戏主循环的适当位置,以便在玩家输入后调用该函数来获取电脑的回答。然后,根据电脑的回答更新当前成语,并进行相应的处理(例如判断游戏是否结束)。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。例如,你可以根据不同的策略选择电脑的回答,或者在电脑回答后添加额外的逻辑(例如判断电脑回答是否合法)。

八、游戏结束示例代码

在这里插入图片描述

以下是一个示例代码,添加了游戏结束的判断和时间限制:

import time# 游戏时间限制(单位:秒)
time_limit = 60
start_time = time.time()# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():# ...# ...# 判断玩家回答if player_input:if is_valid_idiom(player_input):if player_input[0] == current_idiom[-1]:current_idiom = player_inputplayer_input = ""else:print("玩家回答不符合接龙规则!")else:print("玩家回答不是有效的成语!")# 判断电脑回答computer_idiom = computer_answer()if computer_idiom:current_idiom = computer_idiomelse:print("电脑无法回答,游戏结束!")running = False# 判断游戏是否结束if time.time() - start_time > time_limit:print("时间到,游戏结束!")running = False# ...# ...

在上述代码中,我们添加了一个游戏时间限制 time_limit,以秒为单位。在游戏主循环中,我们使用 time.time() 函数获取当前时间,并与游戏开始时间进行比较,判断是否超过了时间限制。如果超过了时间限制,则游戏结束。

你可以根据具体的游戏规则进行胜负判断。例如,可以在玩家回答或电脑回答后添加额外的逻辑,判断是否达到胜利条件或失败条件,然后设置 running 变量来控制游戏是否继续进行。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。例如,你可以添加更多的游戏规则判断,或者修改时间限制的方式(例如在游戏窗口中显示剩余时间)。

九、界面优化示例代码

在这里插入图片描述以下是一个示例代码,演示如何对游戏界面进行美化和优化,包括添加背景音乐、按钮和菜单等元素:

import pygame
import random# 初始化Pygame
pygame.init()# 设置窗口尺寸
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))# 加载背景音乐
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # 循环播放背景音乐# 加载按钮图片
button_image = pygame.image.load("button_image.png")
button_rect = button_image.get_rect()
button_rect.center = (window_width // 2, window_height // 2)# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()if button_rect.collidepoint(mouse_pos):print("按钮被点击!")# 在按钮被点击后执行相应的操作# 绘制背景window.fill((255, 255, 255))  # 使用白色填充窗口背景# 绘制按钮window.blit(button_image, button_rect)# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

在上述代码中,我们使用 Pygame 的 pygame.mixer.music 模块加载并播放背景音乐。我们还加载了一个按钮图片,并使用 blit() 函数将其绘制在窗口上。在游戏主循环中,我们检测鼠标点击事件,并使用 collidepoint() 函数判断鼠标点击是否在按钮区域内。如果按钮被点击,我们可以在相应的条件下执行特定的操作。

你可以根据自己的需求修改按钮的位置、大小和外观,以及添加其他的游戏元素(如菜单、游戏角色等)。此外,你还可以使用 Pygame 的其他功能来增强游戏的可玩性和用户体验,例如添加音效、动画效果等。

十、扩展成语库示例代码

在这里插入图片描述以下是一个示例代码,演示如何扩展成语库,增加更多的成语:

import pygame
import random# 初始化Pygame
pygame.init()# 设置窗口尺寸
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))# 加载背景音乐
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # 循环播放背景音乐# 加载按钮图片
button_image = pygame.image.load("button_image.png")
button_rect = button_image.get_rect()
button_rect.center = (window_width // 2, window_height // 2)# 成语库
idioms = ["卧薪尝胆","画蛇添足","杯弓蛇影",# 添加更多的成语...
]# 随机选择一个成语作为当前成语
current_idiom = random.choice(idioms)# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()if button_rect.collidepoint(mouse_pos):print("按钮被点击!")# 在按钮被点击后执行相应的操作# 绘制背景window.fill((255, 255, 255))  # 使用白色填充窗口背景# 绘制按钮window.blit(button_image, button_rect)# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

在上述代码中,我们创建了一个成语库 idioms,其中包含了一些成语。你可以根据需要添加更多的成语。在游戏主循环中,我们使用 random.choice() 函数随机选择一个成语作为当前成语。这样,每次游戏开始时,玩家和电脑都可以基于当前成语进行成语接龙。

你可以通过在 idioms 列表中添加更多的成语来扩展成语库。可以从各种来源获取成语,如成语词典、互联网资源等。确保成语库中的成语是正确且合法的。

请注意,上述代码只是一个示例,你可以根据自己的需要进行修改和扩展。例如,你可以创建一个文本文件,将成语存储在其中,并编写代码来读取该文件并构建成语库。这样可以更方便地扩展和管理成语库。

十一、音效和动画效果示例代码

在这里插入图片描述以下是一个示例代码,演示如何添加音效和动画效果:

import pygame
import random# 初始化Pygame
pygame.init()# 设置窗口尺寸
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))# 加载背景音乐
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # 循环播放背景音乐# 加载按钮图片
button_image = pygame.image.load("button_image.png")
button_rect = button_image.get_rect()
button_rect.center = (window_width // 2, window_height // 2)# 加载音效
click_sound = pygame.mixer.Sound("click_sound.wav")# 成语库
idioms = ["卧薪尝胆","画蛇添足","杯弓蛇影",# 添加更多的成语...
]# 随机选择一个成语作为当前成语
current_idiom = random.choice(idioms)# 游戏主循环
running = True
while running:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()if button_rect.collidepoint(mouse_pos):print("按钮被点击!")click_sound.play()  # 播放点击音效# 在按钮被点击后执行相应的操作# 绘制背景window.fill((255, 255, 255))  # 使用白色填充窗口背景# 绘制按钮window.blit(button_image, button_rect)# 添加动画效果rotation_angle = pygame.time.get_ticks() / 10  # 根据时间计算旋转角度rotated_button = pygame.transform.rotate(button_image, rotation_angle)button_rect.center = (window_width // 2, window_height // 2)window.blit(rotated_button, button_rect)# 更新显示pygame.display.flip()# 退出游戏
pygame.quit()

在上述代码中,我们首先加载了一个点击音效 click_sound.wav,通过 pygame.mixer.Sound() 函数创建音效对象。然后,在按钮被点击的事件处理中,我们调用 play() 方法播放点击音效。

此外,我们还添加了一个动画效果。我们使用 pygame.time.get_ticks() 函数获取当前时间的毫秒数,并将其除以一个适当的值来计算旋转角度。然后,使用 pygame.transform.rotate() 函数根据旋转角度对按钮图片进行旋转。最后,我们将旋转后的按钮图片绘制在窗口上。

你可以根据需要添加其他的音效和动画效果。例如,可以在游戏开始时播放一个欢迎音效,或者在玩家完成一轮成语接龙时播放一个胜利的音效。同样,你可以使用 Pygame 的其他功能来实现更复杂的动画效果,如平移、缩放等。
在这里插入图片描述

请注意,上述代码只是一个示例,你可以根据自己的需要进行修改和扩展。

相关文章:

第二篇【传奇开心果微博系列】Python微项目技术点案例示例:成语接龙游戏

传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目目标二、雏形示例代码三、扩展整体思路四、玩家输入示例代码五、成语判断示例代码六、回答判断示例代码七、电脑判断示例代码八、游戏结束示例代码九、界面优化示例代码十、扩展成语库示例代…...

国内AI大模型主要有哪些

ChatGPT火爆后不到一个月的时间,阿里、华为、腾讯、京东、字节、360、商汤、科大讯飞等大厂纷纷下场,或官宣入场或亮相大模型。我国对生成式AI实行监管的正式法规主要是2023年8月正式施行的《生成式人工智能服务管理暂行办法》。 据不完全统计&#xff…...

RabbitMQ保证消息的可靠性

1. 问题引入 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange消息到达exchange后未到达queue MQ宕机&…...

【工作实践-02】实验室移动端—跳转页面及交互

一、跳转页面不关闭当前页,与uniapp头部导航栏的返回按钮效果相似 uni.navigateBack({delta: 1}) 二、返回页面并刷新 1. 返回上一页时重新获取列表(调用上一页面获取列表方法) let pages getCurrentPages(); // 当前页面let beforePage pages[pages.length - 2…...

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…...

C语言---指针进阶

1.字符指针 int main() {char str1[] "hello world";char str2[] "hello world";const char* str3 "hello world.";const char* str4 "hello world.";if (str3 str4){//常量字符串在内存里面是无法修改的,所以没必要…...

QT-通信编码格式问题

这里写目录标题 一、项目场景1.QT客户端与服务端通信时,转化步骤如下:2.原数据示例3.转化后数据 二、问题描述1.采用Soap协议2.采用HTTP协议 三、原因分析四、解决方案 一、项目场景 1.QT客户端与服务端通信时,转化步骤如下: 1&…...

一文了解Web3.0真实社交先驱ERA

Web2时代,少数科技巨头垄断了全球近60亿人口的网络社交数据,并用之为自己牟利,用户无法掌控个人数据,打破该局面逐渐成为共识,于是,不少人看到了Web3社交赛道蕴含的巨大机遇,标榜着去中心化和抗…...

微前端(qiankun)vue3+vite

目录 一、什么是微前端 二、主应用接入 qiankun 1.按照qiankun插件 2.注册微应用引用 3.挂载容器 三、微应用接入 qiankun 1.vite.config.ts 2.main.ts ps:手动加载微应用方式 ps:为什么不用 iframe 一、什么是微前端 微前端是一种多个团队通过独…...

根据Ruoyi做二开

Ruoyi二开 前言菜单代码生成新建微服务网关添加微服务的路由 vue页面和对应的js文件js中方法的url和controller中方法的url总结 前言 之前写过一篇文章,若依微服务版本搭建,超详细,就介绍了怎么搭建若依微服务版本,我们使用若依就…...

DockerFile的应用

DockerFile的应用 一、介绍1 构建的三步骤2 构建的过程 二、常用命令三、DockerFile案例1 创建DockerFile文件2 使用DockerFile文件构建镜像3 启动容器并验证 四 DockerFile添加数据卷 一、介绍 DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成…...

爬虫入门一

文章目录 一、什么是爬虫?二、爬虫基本流程三、requests模块介绍四、requests模块发送Get请求五、Get请求携带参数六、携带请求头七、发送post请求八、携带cookie方式一:放在请求头中方式二:放在cookie参数中 九、post请求携带参数十、模拟登…...

2024-02-16 web3-区块链-keypass记录

摘要: 2024-02-16 web3-区块链-keypass记录 文档: Introduction - Keypass Docs What is KEYPASS? - Keypass Docs What is KEYPASS? KeyPass Wallet is a new smart contract wallet that provides a secure and customizable registration…...

使用 JMimeMagic 在 Java 中识别文件类型

在 Java 中,我们可以使用 JMimeMagic 库来识别文件类型,尤其是在需要准确区分文件类型时。下面是一个简单的使用 JMimeMagic 的示例代码。 添加依赖 首先,在你的项目中添加 JMimeMagic 依赖。你可以在 Maven 项目中的 pom.xml 文件中加入以…...

yolov8源码解读Detect层

yolov8源码解读Detect层 Detect层解读网络各层解读及detect层后的处理 关于网络的backbone,head,以及detect层后处理,可以参考文章结尾博主的文章。 Detect层解读 先贴一下全部代码,下面一一解读。 class Detect(nn.Module):"""YOLOv8 …...

(AtCoder Beginner Contest 341)(A - D)

比赛地址 : Tasks - Toyota Programming Contest 2024#2&#xff08;AtCoder Beginner Contest 341&#xff09; A . Print 341 模拟就好了 &#xff0c; 先放一个 1 , 然后放 n 个 01 ; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout…...

python Flask与微信小程序 统计管理

common/models/stat/StatDailyMember.py DROP TABLE IF EXISTS stat_daily_member;CREATE TABLE stat_daily_member (id int(11) unsigned NOT NULL AUTO_INCREMENT,date date NOT NULL COMMENT 日期,member_id int(11) NOT NULL DEFAULT 0 COMMENT 会员id,total_shared_count …...

光伏企业助力乡村振兴

光伏是一种利用太阳能生产电能的发电技术&#xff0c;属于可再生能源。近年来我国的光伏企业发展迅速&#xff0c;已经称霸全球&#xff0c;同时也为乡村振兴贡献了力量。 一、光伏企业助力乡村 1.推动农业发展 光伏发电和农业种植、畜牧、渔业、水产等有机结合&#xff0c;…...

root MUSIC 算法补充说明

root MUSIC 算法补充说明 多项式求根root MUSIC 算法原理如何从 2 M − 2 2M-2 2M−2 个根中确定 K K K 个根从复数域上观察 2 M − 2 2M-2 2M−2 个根的分布 这篇笔记是上一篇关于 root MUSIC 笔记的补充。 多项式求根 要理解 root MUSIC 算法&#xff0c;需要理解多项式求…...

关于Django的中间件使用说明。

目录 1.中间件2. 为什么要中间件&#xff1f;3. 具体使用中间件3.1 中间件所在的位置&#xff1a;在django的settings.py里面的MIDDLEWARE。3.2 中间件的创建3.3 中间件的使用 4. 展示成果 1.中间件 中间件的大概解释&#xff1a;在浏览器在请求服务器的时候&#xff0c;首先要…...

Chapter 8 - 15. Congestion Management in TCP Storage Networks

User Actions After learning the states of queue utilization, the following are the actions that admins and operators can take while using TCP transport for storage traffic. 了解了队列利用率的状态后,管理员和操作员在使用 TCP 传输存储流量时可以采取以下措施。…...

前端技巧之svg精灵图svg-sprite-loader

首先说明精灵图的必要性&#xff0c;其可以让我们只需要向服务器请求一次图片资源&#xff0c;就能加载很多图片&#xff0c;即能够减轻http请求造成的服务器压力。 然后这里要说明的是这个插件是webpack上面的&#xff0c;所以在vue2中比较好用&#xff0c;如果在vue3中&…...

IO线程-day2

1> 使用fread和fwrite完成两个文件的拷贝 程序&#xff1a; #define MAXSIZE 1024 #include<myhead.h>int main(int argc, char const *argv[]) {FILE *srcfpNULL;FILE *destfpNULL;if(!(srcfpfopen("pm.bmp","r")))PRINT_ERR("");if…...

Spring Boot 笔记 024 登录页面

1.1 登录接口 //导入request.js请求工具 import request from /utils/request.js//提供调用注册接口的函数 export const userRegisterService (registerData)>{//借助于UrlSearchParams完成传递const params new URLSearchParams()for(let key in registerData){params.a…...

09_Java集合

一、Java集合框架概述 一方面&#xff0c; 面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象的操作&#xff0c;就要对对象进行存储。另一方面&#xff0c;使用Array存储对象方面具有一些弊端&#xff0c;而Java 集合就像一种容器&#xff0c;可以动态…...

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-软件定时器

目录 一、软件定时器基本概念二、软件定时器运行机制三、软件定时器状态四、软件定时器模式五、软件定时器开发流程六、软件定时器使用说明七、软件定时器接口八、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、软件定时器基本概念 软件定时器&#xff0c;是基于系…...

考研证件照可以自己用手机拍吗?考研证件照p过可以通过审核吗?考研证件照有什么要求

一、考研证件照可以自己用手机拍吗 现在的智能手机相机技术先进&#xff0c;大多都配备了高像素摄像头&#xff0c;使得自拍照片的质量有了大幅提升。相较于传统的证件照拍摄&#xff0c;使用手机自拍考研证件照理论上是可行的。然而&#xff0c;考研证件照需要满足一定的规定…...

win10 环境下Python 3.8按装fastapi paddlepaddle 进行图片文字识别1

###按装 用conda 创建python 3.8的环境&#xff0c;可参看本人python下的其它文章。 在pycharm开发环境下按装相关的模块&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fastapi pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "uvi…...

json字符串的处理

json字符串的处理 【1】解析json字符串&#xff08;1&#xff09;如果json格式字符串 &#xff0c;最外层 是 中括号&#xff0c;表示数组&#xff0c;就使用方法&#xff08;2&#xff09;如果json格式字符串&#xff0c;最外层是 大括号&#xff0c;表示对象&#xff0c;就是…...

Java基础String常见的编程练习

1.对字符串数组进行排序 package javalianxi;import java.util.Arrays; import java.util.Comparator;public class Test1 {public static void main(String[] args) {String[] array { "cd", "CD", "bc", "AB", "ab", &q…...