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

九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)

九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)


文章目录

  • 九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)
  • 前言
  • 一、添加小动物素材
    • 1. 在根目录的图片文件夹下新建两个目录分别存放爬行障碍物和飞行障碍物。
    • 2. 图片示例
  • 二、代码部分
    • 1.创建飞行小动物的精灵类
    • 1.创建爬行小动物的精灵类
    • 3.在左半部分按随机数添加飞行或者爬行
    • 4.runner_main的全部代码
  • 三、效果展示


前言

本篇文章主要分享如何添加向前移动的小动物作为动态的障碍物,一个是飞行障碍物主角可以通过滑行躲避,另一个是爬行障碍物可以通过跳跃躲避。


一、添加小动物素材

1. 在根目录的图片文件夹下新建两个目录分别存放爬行障碍物和飞行障碍物。

在这里插入图片描述

2. 图片示例

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

二、代码部分

1.创建飞行小动物的精灵类

在这里插入图片描述

import pygame.sprite
class Badman(pygame.sprite.Sprite):def __init__(self):super(Badman,self).__init__()self.image=pygame.image.load('material/image/badman/badman3.1.PNG').convert_alpha()self.images=[pygame.image.load('material/image/badman/badman3.{:d}.png'.format(i)).convert_alpha() for i in range(1,6)]self.rect = self.images[0].get_rect()self.loc = 500self.speed = 1def update(self, *args):if args[0] % 10 == 0:i = int(args[0] / 10)self.image = self.images[i % len(self.images)]if self.rect.left < 0:self.kill()else:self.rect.left -= self.speed

1.创建爬行小动物的精灵类

在这里插入图片描述

代码如下:

# -*- codeing = utf-8 -*-
# @Time : 2023/2/24 10:30
# @Author : 小马
# @File: enemy.py
# @Software : PyCharm
import pygame.sprite
class mantis(pygame.sprite.Sprite):def __init__(self):super(mantis,self).__init__()self.image=pygame.image.load('material/image/mantis/b5.1.PNG').convert_alpha()self.images=[pygame.image.load('material/image/mantis/b5.{:d}.png'.format(i)).convert_alpha() for i in range(1,16)]self.rect = self.images[0].get_rect()self.loc=500self.speed = 1self.rect.left = 770def update(self, *args):if args[0] % 10 == 0:i = int(args[0] / 10)self.image=self.images[i%len(self.images)]if self.rect.left<0:self.kill()else:self.rect.left -= self.speed

3.在左半部分按随机数添加飞行或者爬行

代码如下:

        if left<=-1080:left=left+2160random_number = random.randint(1, 2)if random_number == 1:badman=Badman()badman.rect.top = 360enemyGroup.add(badman)if random_number == 2:enemyone = mantis()enemyone.rect.top = 440enemyGroup.add(enemyone)if -1080<left<1080:for sprite in enemyGroup:sprite.rect.left=sprite.loc+left*1.5if pygame.sprite.collide_mask(sprite, myself):injure = pygame.mixer.Sound('material/music/injure1.mp3')pygame.mixer.Sound.play(injure)myself.life -= 1sprite.kill()enemyGroup.draw(screen)enemyGroup.update(index)

4.runner_main的全部代码


import pygamefrom Badman import Badman
from Gold import Gold
import random
from Myself import Myself
import osfrom mantis import mantispygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((1080, 600))
pygame.display.set_caption('跑酷游戏')
#背景图
bg_image_path1 = 'material/image/background4.jpg'
bg_img_obj1 = pygame.image.load(bg_image_path1).convert_alpha()
#道路图
road_image_path= 'material/image/road1.png'
road_img_obj=pygame.image.load(road_image_path).convert_alpha()
#距离图
km_image_path= 'material/image/km.png'
km_img_obj=pygame.image.load(km_image_path).convert_alpha()
#按键图
keyUp_image_path= 'material/image/keyboardUpUp.png'
keyUp_img_obj=pygame.image.load(keyUp_image_path).convert_alpha()
keyLeft_image_path= 'material/image/keyboardLEFT.png'
keyLeft_img_obj=pygame.image.load(keyLeft_image_path).convert_alpha()
keyDown_image_path= 'material/image/keyboardDown.png'
keyDown_img_obj=pygame.image.load(keyDown_image_path).convert_alpha()
font_path = 'material/ziti/AlimamaFangYuanTiVF-Thin-2.ttf'  # 例如 'SimSun.ttf'
chinese_font = pygame.font.Font(font_path, 30)
text_surface = chinese_font.render('跳跃', True, (0, 0, 255))
text1_surface = chinese_font.render('疾跑', True, (0, 0, 255))
text2_surface = chinese_font.render('滑行', True, (0, 0, 255))
#创建两个存放障碍图片对象的数组
#存放向上的
uplist=[]
#存放向下的
downlist=[]
upadress=['up1.png','up2.png','up3.png','up4.png']
downadress=['platform1.png','platform2.png','platform3.png','platform4.png','platform5.png']
#根据图像的位置加入到相应的数组当中
for i in range(len(downadress)):stone_image_path= 'material/image/stone/'+downadress[i]stone_img_obj=pygame.image.load(stone_image_path).convert_alpha()downlist.append(stone_img_obj)
for i in range(len(upadress)):stone_image_path= 'material/image/stone/'+upadress[i]stone_img_obj=pygame.image.load(stone_image_path).convert_alpha()uplist.append(stone_img_obj)
#因为金币不唯一,所以创建一个精灵族来存放所有的金币精灵
goldGroup = pygame.sprite.Group()
enemyGroup = pygame.sprite.Group()
barriarMargin=290
#图片初始化
heart_image_path= 'material/image/heart.png'
heart_img_obj=pygame.image.load(heart_image_path).convert_alpha()
gold_image_path= 'material/image/gold.png'
gold_img_obj=pygame.image.load(gold_image_path).convert_alpha()
def init():global badmanfps = 60running = Trueindex = 0left = 0right = 1080margin = 3myself = Myself()pygame.mixer.music.load(os.path.join('material/music', 'bgm1.mp3'))pygame.mixer.music.play(-1)km = '0'goldnum = '0'#标志位是否暂停isPause = Falsebarrier = []while running:# 获取键盘的按下事件,与抬起不同keys = pygame.key.get_pressed()for event in pygame.event.get():if event.type == pygame.QUIT:running = False#空格键作为暂停键 当空格键抬起时触发暂停动作#如果当前是运动状态,抬起空格变为暂停#如果当前是暂停状态,抬起空格变为运动elif event.type == pygame.KEYUP:if not isPause:if event.key == pygame.K_SPACE:isPause = Trueelse:if event.key == pygame.K_SPACE:isPause = False#暂停状态下,道路不会向左滑动if isPause:margin=0else:margin=3#通过提升道路的滑动效果体现出疾跑的效果if keys[pygame.K_RIGHT]:margin=8screen.blit(bg_img_obj1, (0, 0))screen.blit(road_img_obj, (left, 465))screen.blit(road_img_obj, (right, 465))#键位介绍screen.blit(keyUp_img_obj, (900, 5))screen.blit(text_surface, (980, 23))screen.blit(keyLeft_img_obj, (900, 70))screen.blit(text1_surface, (980, 88))screen.blit(keyDown_img_obj, (900, 135))screen.blit(text2_surface, (980, 148))#根据生命值绘制血量for i in range(0,myself.life):screen.blit(heart_img_obj,(10+i*70,5))if left<=-1080:left=left+2160random_number = random.randint(1, 2)if random_number == 1:badman=Badman()badman.rect.top = 360enemyGroup.add(badman)if random_number == 2:enemyone = mantis()enemyone.rect.top = 440enemyGroup.add(enemyone)if -1080<left<1080:for sprite in enemyGroup:sprite.rect.left=sprite.loc+left*1.5if pygame.sprite.collide_mask(sprite, myself):injure = pygame.mixer.Sound('material/music/injure1.mp3')pygame.mixer.Sound.play(injure)myself.life -= 1sprite.kill()enemyGroup.draw(screen)enemyGroup.update(index)if right<=-1080:right=right+2160#计划在右半边的时候加入静态的障碍,所以要在某一时刻确定要加入的对象#于是在当右半边移动到左边尽头的时候确定下来接下来的对象#这里采用随机数的方法barrier = []for i in range(0,4):random_number = random.randint(1, 15)if 10 <= random_number <= 15:gold1=Gold()gold2=Gold()gold3=Gold()gold1.loc=i*barriarMargingold2.loc=i*barriarMargin+1*70gold3.loc=i*barriarMargin+2*70goldGroup.add(gold1)goldGroup.add(gold2)goldGroup.add(gold3)barrier.append(1)elif random_number == 1:barrier.append(2)elif random_number == 2:barrier.append(3)elif random_number == 3:barrier.append(4)elif random_number == 4:barrier.append(5)elif random_number == 5:barrier.append(6)elif random_number == 6:barrier.append(7)elif random_number == 7:barrier.append(8)elif random_number == 8:barrier.append(9)elif random_number == 9:barrier.append(10)if -1080<right<1080:for sprite in goldGroup:sprite.rect.left=sprite.loc+rightgoldGroup.draw(screen)goldGroup.update(index)for i in range(len(barrier)):if barrier[i]==2:a = uplist[0]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 465)elif barrier[i]==1:continueelif barrier[i]==3:a = uplist[1]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 460)elif barrier[i]==4:a = uplist[2]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 455)elif barrier[i]==5:a = uplist[3]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 460)elif barrier[i]==6:a = downlist[0]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 330)elif barrier[i]==7:a = downlist[1]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 350)elif barrier[i]==8:a = downlist[2]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 365)elif barrier[i]==9:a = downlist[3]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 350)elif barrier[i]==10:a = downlist[4]arect = a.get_rect()arect.topleft = (right + i*barriarMargin, 210)start_x = arect.width // 3middle_third_width = arect.width // 3# 提取中间三分之一区域middle_third_rect = (start_x, 0, middle_third_width, arect.height)middle_third_surface = a.subsurface(middle_third_rect)mrect = middle_third_surface.get_rect()mrect.topleft = (arect.left + arect.width // 3, arect.top)if mrect.colliderect(myself.rect):injure = pygame.mixer.Sound('material/music/injure1.mp3')pygame.mixer.Sound.play(injure)barrier[i] = 1myself.life -= 1else:screen.blit(a, arect)#及时从金币精灵族移除不需要的金币精灵for goldsprite in goldGroup:# 人与金币碰撞检测 发生碰撞之后 金币增加if pygame.sprite.collide_mask(goldsprite, myself):# 响一下音效nosun = pygame.mixer.Sound('material/music/gold.mp3')pygame.mixer.Sound.play(nosun)goldGroup.remove(goldsprite)goldnum = str(int(goldnum) + 10)if goldsprite.rect.right<=0:goldGroup.remove(goldsprite)# 暂停状态下,主角也要保持静止,也就是说主角直保持一个动作,因此要传递一个参数给主角精灵# 通过按下键盘的事件更改主角的状态,因此也需传递一个参数给主角来决定状态比如奔跑、跳跃以及滑行screen.blit(myself.image, myself.rect)myself.update(index,keys,isPause)screen.blit(km_img_obj, (10, 70))km_font = pygame.font.SysFont('arial', 30)km_num_surface = km_font.render(km, True, (0, 0, 255))screen.blit(km_num_surface, (80, 88))# 金币数量金币图片screen.blit(gold_img_obj, (10, 135))sun_font = pygame.font.SysFont('arial', 30)sun_num_surface = sun_font.render(goldnum, True, (180, 0, 255))screen.blit(sun_num_surface, (80, 148))if myself.life<4 and int(goldnum)>=100:myself.life+=1goldnum = str(int(goldnum) - 100)if index%6==0:km = str(int(km) + margin)index += 1pygame.display.update()clock.tick(fps)left -= marginright -= margin
if __name__=="__main__":init()

三、效果展示

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

相关文章:

九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)

九、小白如何用Pygame制作一款跑酷类游戏&#xff08;添加前进小动物作为动态障碍物&#xff09; 文章目录 九、小白如何用Pygame制作一款跑酷类游戏&#xff08;添加前进小动物作为动态障碍物&#xff09;前言一、添加小动物素材1. 在根目录的图片文件夹下新建两个目录分别存放…...

Unity3D IK解算器技术分析

前言 在Unity3D中&#xff0c;逆向运动学&#xff08;IK Solver&#xff09;是实现角色动画自然交互的核心技术之一。以下是Unity中常见的IK解算器及其特点的综合分析&#xff0c;结合了原生功能、第三方插件与开源方案的对比&#xff1a; 对惹&#xff0c;这里有一个游戏开发…...

7.11 Python CLI开发实战:API集成与异步处理核心技术解析

Python CLI开发实战:API集成与异步处理核心技术解析 #mermaid-svg-fXGFud0phX2N2iZj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fXGFud0phX2N2iZj .error-icon{fill:#552222;}#mermaid-svg-fXGFud0phX2N2iZj .…...

百度Create2025 AI开发者大会:模型与应用的未来已来

今日&#xff0c;2025百度AI开发者大会&#xff08;Create2025&#xff09;在武汉体育中心盛大开幕。这场以“模型的世界&#xff0c;应用的天下”为主题的盛会&#xff0c;不仅汇聚了李彦宏、王海峰、沈抖等百度高层及行业领袖&#xff0c;更以多项重磅技术发布、前沿议题探讨…...

Java实现HTML转PDF(deepSeekAi->html->pdf)

Java实现HTML转PDF,主要为了解决将ai返回的html文本数据转为PDF文件方便用户下载查看。 一、deepSeek-AI提问词 基于以上个人数据。总结个人身体信息&#xff0c;分析个人身体指标信息。再按一个月为维度&#xff0c;详细列举一个月内训练计划&#xff0c;维度详细至每周每天…...

区间和数量统计 之 前缀和+哈希表

文章目录 1512.好数对的数目2845.统计趣味子数组的数目1371.每个元音包含偶数次的最长子字符串 区间和的数量统计是一类十分典型的问题&#xff1a;记录左边&#xff0c;枚举右边策略前置题目&#xff1a;统计nums[j]nums[i]的对数进阶版本&#xff1a;统计子数组和%modulo k的…...

【服务器操作指南】从 Hugging Face 上下载文件 | 从某一个网址上下载文件到 Linux 服务器的指定目录

引言 在服务器操作中&#xff0c;下载和管理文件是常见且重要的任务。从 Hugging Face 平台获取模型资源&#xff0c;或从特定网址下载文件至 Linux 服务器并进行解压&#xff0c;都需要明确的操作步骤。本指南旨在为您提供清晰的操作流程&#xff0c;帮助您快速上手相关任务并…...

PyCharm 中 FREECAD 二次开发:从基础建模到深度定制

一、引言 在当今的三维建模与设计领域&#xff0c;FREECAD 以其开源、参数化设计的强大特性&#xff0c;成为众多工程师、设计师和开发者的首选工具。然而&#xff0c;面对日益复杂和多样化的设计需求&#xff0c;仅仅依靠 FREECAD 的原生功能往往难以满足。此时&#xff0c;二…...

C++入侵检测与网络攻防之网络嗅探以及ARP攻击

目录 1.tcpdump基本使用 2.tcpdump条件过滤 3.wireshark介绍 4.wireshark的介绍 5.tcp握手挥手分析 6.telnet服务的介绍和部署 7.复习 8.telnet服务的报文嗅探 9.网络嗅探基础 10.arp协议的解析 11.arp攻击原理以及试验环境 12.arp实验以及防御方式 1.tcpdump基本使…...

Integer[]::new方法引用

Integer[]::new 这种写法是 Java 中方法引用的一种具体应用&#xff0c;它遵循 Java 方法引用的语法规则。 方法引用概述 方法引用是 Java 8 引入的一种简化 Lambda 表达式的语法糖&#xff0c;它允许你通过方法的名称直接引用已有的方法或构造函数。方法引用可以使代码更加简…...

Pycharm(三):梯度下降法

梯度下降算法&#xff08;Gradient Descent Algorithm&#xff09;是深度学习中常用的更新权重的方法&#xff0c;它采用的贪心法的思想&#xff0c;每次都往函数值下降最快的方向去更新&#xff0c;梯度方向是增长最快的方向&#xff0c;负梯度方向是下降最快的方向。 一、梯…...

系统测试的技术要求

文章目录 一、系统测试的概念二、测试对象三、测试目的四、进入条件五、内容要求1、基于需求的考核要求2、基于任务的考核要求 六、测试环境 一、系统测试的概念 系统测试&#xff08;System Testing&#xff09;&#xff0c;主要是对多个软件组成的系统进行的整体测试。系统测…...

​升级Ubuntu 20.04 LTS到22.04 LTS​

按照 Ubuntu发布周期 每2年会发布一个 "长期支持版" (LTS, Long Term Support)。具体来说&#xff0c;就是每2年的4月份会发布一个支持周期长达5年的稳定版本&#xff0c;如: 20.04 和 22.04 分别代表 2020年4月 和 2022年4月 发布的长期支持版本. 当前(2022年9月)&a…...

【神经网络与深度学习】训练集与验证集的功能解析与差异探究

引言 在深度学习模型的训练过程中&#xff0c;训练集和验证集是两个关键组成部分&#xff0c;它们在模型性能的提升和评估中扮演着不可替代的角色。通过分析这两者的区别和作用&#xff0c;可以帮助我们深入理解模型的学习过程和泛化能力&#xff0c;同时为防止过拟合及优化超…...

单精度浮点运算/定点运算下 MATLAB (VS) VIVADO

VIVADO中单精度浮点数IP核计算结果与MATLAB单精度浮点数计算结果的对比 MATLAB定点运算仿真&#xff0c;对比VIVADO计算的结果 目录 前言 一、VIVADO与MATLAB单精度浮点数运算结果对比 二、MATLAB定点运算仿真 总结 前言 本文介绍了怎么在MATLAB中使用单精度浮点数进行运算…...

如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践

目录 一、为什么需要在HTML中嵌入其他HTML文件&#xff1f; 二、常用的方法概览 三、利用 1. 基本原理 2. 使用场景 3. 优缺点 4. 实践示例 5. 适用建议 四、利用JavaScript动态加载内容 1. 原理简介 2. 实现步骤 示例代码 3. 优缺点分析 4. 应用场景 5. 实践建…...

7.10 GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧

GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧 GitHub Sentinel Agent 用户界面设计与实现:命令行工具开发实战 关键词:命令行工具开发、Python argparse、API 集成、错误处理、测试覆盖率 设计并实现基本的命令行工具 命令行界面(CLI)是企业级工…...

将AAB转APK的两种好用方法AAB to APK Converter

文章目录 第一种方法&#xff1a;Unity工具转换第二种方法&#xff1a;Python转换参数填写 第一种方法&#xff1a;Unity工具转换 适用人群&#xff1a; 策划&#xff0c;程序等装Unity的人 需要安装&#xff1a; Unity 下载AAB-to-APK-Converter 导入unity&#xff0c;点…...

netcore8.0项目部署到windows服务器中(或个人windows电脑),利用nginx反向代理

1、发布netcore项目&#xff0c;默认即可 1.1、前提&#xff0c;需在appsettings添加Kestrel代理 配置如下&#xff1a; {"Kestrel": {"Endpoints": {"http": {"Url": "http://localhost:7022"},"Https": {&qu…...

Python数据分析案例73——基于多种异常值监测算法探查内幕交易信息

背景 之前有监督模型案例都做烂了&#xff0c;现在来做一下无监督的模型吧&#xff0c;异常检测模型。 其实这个案例主要目的是为了展示这些异常值的无监督算法怎么使用的&#xff0c;本文是一个无监督算法的总结大全。只是恰巧有同学需要做这个内幕交易的数据&#xff0c;因…...

电商数据中台架构:淘宝 API 实时采集与多源数据融合技术拆解

引言 在当今竞争激烈的电商领域&#xff0c;数据已成为企业决策和业务发展的核心驱动力。电商数据中台能够整合和管理企业内外部的各种数据&#xff0c;为业务提供有力支持。其中&#xff0c;淘宝 API 实时采集与多源数据融合技术是数据中台架构中的关键部分。本文将深入探讨这…...

【C语言】动态经典试题练习

前言&#xff1a; 在上一章节讲解了动态的常见错误&#xff0c;在上上章节讲解了动态内存的概念。 古人云&#xff1a; 习题一 请大家看下面的习题&#xff0c;试着分析输出结果 / 找出代码错误的地方。 #include <stdio.h>void GetMemory(char* p) {p (char*)mall…...

Memcached 主主复制架构搭建与 Keepalived 高可用实现

实验目的 掌握基于 repcached 的 Memcached 主主复制配置 实现通过 Keepalived 的 VIP 高可用机制 验证数据双向同步及故障自动切换能力 实验环境 角色IP 地址主机名虚拟 IP (VIP)主节点10.1.1.78server-a10.1.1.80备节点10.1.1.79server-b10.1.1.80 操作系统: CentOS 7 软…...

详解 Servlet 处理表单数据

Servlet 处理表单数据 1. 什么是 Servlet&#xff1f;2. 表单数据如何发送到 Servlet&#xff1f;2.1 GET 方法2.2 POST 方法 3. Servlet 如何接收表单数据&#xff1f;3.1 获取单个参数&#xff1a;getParameter()示例&#xff1a; 3.2 获取多个参数&#xff1a;getParameterV…...

八大排序——冒泡排序/归并排序

八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序&#xff08;递归&#xff09; 1.2 递归排序&#xff08;非递归&#xff09; 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换…...

高等数学第三章---微分中值定理与导数的应用(3.1微分中值定理3.2洛必达法则)

3.1 微分中值定理 一、罗尔&#xff08;Rolle&#xff09;中值定理 1. 费马&#xff08;Fermat&#xff09;引理 定义&#xff1a; 设函数 y f ( x ) y f(x) yf(x) 满足以下条件&#xff1a; 在点 x 0 x_0 x0​ 的某邻域 U ( x 0 ) U(x_0) U(x0​) 内有定义&#xff1…...

AI超级智能体项目教程(二)---后端项目初始化(设计knif4j接口文档的使用)

文章目录 1.选择JDK的版本和相关配置2.添加依赖信息2.1指定lombok版本信息2.2引入hutool工具类2.3了解knif4j依赖2.4引入knif4j依赖 3.contrller测试3.1完成yml文件配置3.2修改默认扫描路径3.3controller具体的内容3.4配置接口和访问路径3.5如何访问3.6调试接口3.6调试接口 1.选…...

C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别

1&#xff0c;malloc&#xff0c;free和new&#xff0c;delete的区别 答&#xff1a;malloc和free是c语言中库函数&#xff1b; new和delete是c的操作符&#xff1b; 分配内存&#xff1a;malloc和new 区别&#xff1a; malloc&#xff1a;需要手动计算存储空间 new&#…...

14.ArkUI Radio的介绍和使用

ArkUI Radio 组件介绍与使用指南 什么是 Radio 组件&#xff1f; Radio&#xff08;单选框&#xff09;是 ArkUI 中的单选按钮组件&#xff0c;允许用户从一组互斥的选项中选择一个选项。它通常用于表单、设置界面等需要用户做出单一选择的场景。 Radio 的核心特性 单选功能…...

数据结构------C语言经典题目(7)

1.系统栈和数据结构中的栈有什么区别&#xff1f; 1.本质&#xff1a; 系统栈&#xff1a;由程序运行时由操作系统自动分配的一块连续内存区域&#xff0c;用于存储函数调用过程中的临时数据&#xff08;参数、局部变量、返回地址&#xff09;&#xff0c;是程序运行的底层机制…...

Python教程(一)——Python速览

目录 1. 引言2. Python用作计算器2.1 数字2.2 文本2.3 列表 3. 走向编程的第一步参考 1. 引言 本系列的目的主要是重新回顾Python的语法&#xff0c;以供阅读由Python编写的源码。   在安装完Python后&#xff0c;在命令行中输入python就可以进入交互模式。下文代码段中以>…...

跟我学C++中级篇——处理对象的复制

一、对象的传递 在应用程序中&#xff0c;经常会遇到不同线程或不同模块间需要进行对象的传递&#xff0c;本来传递不是什么多大的事。但问题是&#xff0c;如果对象的值大到一定的程度后&#xff0c;传递不是问题可对象值的处理反而成了问题了。举一个现实世界的例子&#xf…...

基于PyQt5实现仿QQ-第二章-用户登录

基于PyQt5实现仿QQ-第二章-用户登录 Author: Daydreamer 项目简介 本项目基于PyQt5仿照目前流行的即时通信软件QQ&#xff0c;实现了新用户注册、用户登录、自动登录、记住多用户账号、用户搜索、添加好友、好友间聊天&#xff08;消息持久化、同步化&#xff09;等功能。 …...

[OS_8] 终端和 UNIX Shell | 会话和进程组 | sigaction | dash

我们已经知道如何用 “文件描述符” 相关的系统调用访问操作系统中的对象&#xff1a;open, read, write, lseek, close。操作系统也提供了 mount, pipe, mkfifo 这些系统调用能 “创建” 操作系统中的对象。 当然&#xff0c;我们也知道操作系统中的对象远不止于此&#xff0…...

IP查询专业版:支持IPv4/IPv6自动识别并切换解析的API接口使用指南

以下是根据您提供的网页内容编辑的符合CSDN内容发布要求的Markdown格式文本&#xff1a; 一、API概述 在开发过程中&#xff0c;我们常常需要对IP地址进行查询&#xff0c;以获取其详细信息&#xff0c;如地理位置、运营商等。万维易源的“IP查询专业版”API接口能够提供丰富…...

ESG跨境电商如何为国内的跨境电商企业打开国外的市场

现在不管是国内还是国外&#xff0c;做电商的企业都非常的多&#xff0c;那么既然有这么多大电商公司&#xff0c;就要有为这些电商公司提供服务的公司&#xff0c;这就是ESG&#xff0c;它是专门为跨境电商服务的公司&#xff0c;那么这家公司的主要业务是什么呢&#xff1f;它…...

建筑节能成发展焦点,楼宇自控应用范围持续扩大

在全球能源危机日益严峻、环保意识不断增强的大环境下&#xff0c;建筑节能已成为建筑行业发展的核心议题。从大型商业综合体到普通住宅&#xff0c;从公共建筑到工业厂房&#xff0c;节能需求贯穿建筑全生命周期。而楼宇自控系统凭借其对建筑设备的智能化管理和精准调控能力&a…...

中国矿业大学iGMAS分析中心介绍

一、关于GNSS和iGMAS 在浩瀚的太空中&#xff0c;全球卫星导航系统&#xff08;GNSS&#xff09;构建起精准定位的时空基准。IGMAS——国际GNSS监测评估系统&#xff0c;是由中国倡导并主导建设的全球GNSS监测网络&#xff0c;旨在提供高精度、高可靠的导航、定位与授时服务。 …...

python如何取消word中的缩进

在python-docx中&#xff0c;取消缩进可以通过将相应的缩进属性设置为None或0来实现。以下是取消不同类型缩进的方法&#xff1a; 取消左缩进 from docx import Documentdoc Document(existing_document.docx)for paragraph in doc.paragraphs:# 取消左缩进paragraph.paragr…...

Lesar: 面向 Lustre/Scade 语言的形式化模型检测工具

在《同步反应式系统》的第一课中&#xff0c;介绍了同步数据流语言 Lustre 生态中的形式化模型检查器 Lesar 的用法。Lesar 可对 lustre v4 语言以及 Scade 语言中部分数据流核心特性进行模型检查。 Lesar 介绍 Lesar 是 Verimag 研发维护的形式化方法模型检查工具。该工具的理…...

YOLOv12 改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、复杂环境、噪声等问题!

&#x1f525; 在 YOLO 系列一路狂飙之后&#xff0c;YOLOv12 带来了令人耳目一新的范式转变——它不再以 CNN 为绝对核心&#xff0c;而是首次 围绕注意力机制构建 YOLO 框架&#xff0c;在保证实时性的前提下&#xff0c;将检测精度再次推向新高度&#xff01; 为了进一步探…...

STM32 I2C总线通信协议

引言 在嵌入式系统开发领域&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;总线作为经典的双线制串行通信协议&#xff0c;凭借其简洁的物理层设计和灵活的通信机制&#xff0c;在传感器互联、存储设备控制、显示模块驱动等场景中占据重要地位。本文将深入剖…...

多物理场耦合低温等离子体装置求解器PASSKEy2

文章目录 PASSKEy2简介PASSKEY2计算流程PASSKEy2 中求解的物理方程电路模型等离子体模型燃烧模型 PASSKEy2的使用 PASSKEy2简介 PASSKEy2 是在 PASSKEy1 的基础上重新编写的等离子体数值模拟程序。 相较于 PASSKEy1&#xff0c; PASSKEy2 在具备解决低温等离子体模拟问题的能力…...

【Harmony_Bug】forEach + asyncawait 的异步陷阱

一、问题描述 今天在做一个RDB的小项目时&#xff0c;遇到一个问题&#xff0c;因为没报错其实也是不算是BUG&#xff0c;以下描述时我就直接说关键点&#xff0c;其他代码忽略。 我的数据模型初始化有六条数据如图 在持久化层&#xff0c;通过initUserData这个方法执行插入。…...

智慧医院建设的三大关键领域

智慧医院建设是医疗行业数字化转型的核心载体&#xff0c;其本质是通过新一代信息技术重构医疗服务模式、优化管理流程、提升患者体验。在当前医疗资源供需矛盾突出的背景下&#xff0c;智慧医院建设已从单纯的设备智能化向系统性变革演进&#xff0c;主要集中在以下三大关键领…...

雷电模拟器怎么更改IP地址

游戏搬砖会使用雷电模拟器多开窗口&#xff0c;若模拟器窗口开多了&#xff0c;IP地址是一样的就怕有限制&#xff0c;很容易被游戏后台检测到。在雷电模拟器中更改IP地址可以通过以下方法实现&#xff1a; 方法一&#xff1a;通过模拟器内设置代理 1. 打开雷电模拟器 启动雷…...

软件编程命名规范

编程命名规范是保证代码可读性、可维护性和团队协作效率的重要基础。以下是涵盖主流编程语言的通用命名规范&#xff0c;结合行业最佳实践和常见规范&#xff08;如Google、Microsoft、Airbnb等风格指南&#xff09;&#xff1a; 一、通用命名原则 清晰优先&#xff1a;名称应…...

#什么是爬虫?——从技术原理到现实应用的全面解析 VI

什么是爬虫?——从技术原理到现实应用的全面解析 V 二十六、异构数据采集技术突破 26.1 PDF文本与表格提取 import pdfplumber import pandas as pddef extract_pdf_data(pdf_path):"""从PDF中提取文本和表格数据:param pdf_path: PDF文件路径:return: 包含…...

芯岭技术XL32F003单片机 32位Cortex M0+ MCU简单介绍 性能优异

XL32F003单片机是深圳市芯岭技术有限公司的一款基于 32 位 ARM Cortex-M0 内核的高性能微控制器&#xff0c;提供SOP8/SOP14/SOP16/TSSOP20/SSOP24/QFN20/QFN32多种封装可选&#xff0c;可满足不同设计需求。XL32F003可用于工业控制、手持设备、PC 外设、传感器节点等应用场景&…...

使用浏览器的Clipboard API实现前端复制copy功能

在前端开发中&#xff0c;复制文本到剪贴板的功能通常使用浏览器的 Clipboard API 实现。比如 navigator.clipboard.writeText 方法。以下是一个简单的案例&#xff0c;展示如何使用 Clipboard API 实现复制文本的功能。 基本用法 首先&#xff0c;你需要创建一个按钮&#x…...