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

pygame飞机大战

飞机大战

  • 1.main类
  • 2.配置类
  • 3.游戏主类
  • 4.游戏资源类
  • 5.资源下载
  • 6.游戏效果

1.main类

启动游戏。

from MainWindow import MainWindow
if __name__ == '__main__':app=MainWindow()app.run()

2.配置类

该类主要存放游戏的各种设置参数。

#窗口尺寸
#窗口尺寸
import random
import pygame
WINDOW=pygame.Rect(0,0,512,768)
#窗口名字
WINDOW_NAME="飞机大战v1.0"#地图索引
MAP_INDEX=random.randint(1,5)#英雄子弹类型
HERO_BULLET_INDEX=1
#敌人子弹类型
ENEMY_BULLET_INDEX=3#敌机事件
ENEMY_EVENT=pygame.USEREVENT#pygame用户事件(整型),有多个事件可以在后面+1以区分#英雄子弹事件
BULLET_EVENT=pygame.USEREVENT+1#+1区分事件
#敌机子弹事件
BULLET_ENEMY_EVENT=pygame.USEREVENT+2#+2区分事件#英雄移动速度
HERO_MOVE_SPEED=4
#英雄子弹移动速度
HERO_BULLET_MOVE_SPEED=4
#英雄生命值
HERO_HP=10

3.游戏主类

游戏主类主要由游戏窗口创建、精灵和精灵组的创建、游戏启动函数(1.碰撞检测、2.事件处理、3.精灵组更新、4.窗口刷新)等构成。

import pygame
from Config import *
from GameSprite import *
class MainWindow:def __init__(self):pygame.init()#游戏窗口初始化self.window=pygame.display.set_mode([WINDOW.width,WINDOW.height])pygame.display.set_caption(WINDOW_NAME)#背景音乐pygame.mixer.music.load("./source/music/bg.wav")pygame.mixer.music.set_volume(0.1)pygame.mixer.music.play(-1)#爆炸音效self.bomb=pygame.mixer.Sound("./source/music/bomb.wav")self.bomb.set_volume(0.2)#游戏分数self.score=0self.hp=HERO_HPself.pause_flag = False  # 暂停标志#FPS时钟self.clock=pygame.time.Clock()#激活敌机定时器,参数:事件、间隔时间mspygame.time.set_timer(ENEMY_EVENT,500)# 激活英雄子弹定时器,参数:事件、间隔时间mspygame.time.set_timer(BULLET_EVENT,500)pygame.time.set_timer(BULLET_ENEMY_EVENT,2000)#创建精灵组self.create_sprite_group()#精灵组创建def create_sprite_group(self):#地图精灵组map1=GameMap()map2=GameMap(True)self.map_group=pygame.sprite.Group(map1,map2)#英雄精灵self.hero=Hero()self.hero_group=pygame.sprite.Group(self.hero)#敌机精灵组self.enemy_group=pygame.sprite.Group()#英雄子弹精灵组self.bullet_group=pygame.sprite.Group()#敌机子弹精灵组self.bullet_enemy_group=pygame.sprite.Group()#爆炸动画精灵组self.bomb_group=pygame.sprite.Group()# 菜单精灵组self.resume_nor = Menu("./source/resume_nor.png")  # 正在暂停按钮图标self.pause_nor = Menu("./source/pause_nor.png")  # 正在运行图标self.restart = Menu("./source/again.png")  # 重新开始图标self.menu_group = pygame.sprite.Group()# 显示精灵组self.show_group = pygame.sprite.Group()# 碰撞检测def collie_check(self):#1.英雄子弹与敌机for bullet1 in self.bullet_group:#第一个参数是精灵、第二个参数是精灵组、第三个参数为是否删除与该精灵碰撞的所有精灵;返回值为与第一个参数碰撞的所有精灵列表eys=pygame.sprite.spritecollide(bullet1,self.enemy_group,True)#判断子弹精灵是否与敌机精灵组有碰撞,有则杀死所有敌机#表示有碰撞if len(eys)>0:self.bomb.play()#发生碰撞,播放爆炸音效self.score+=1#记录杀死的敌机数量bullet1.kill()#杀死发生碰撞的子弹精灵bomb_enemy=Bomb(eys[0])#将发生碰撞的敌传入爆炸类,方便使用爆炸的具体位置self.bomb_group.add(bomb_enemy)#加入爆炸精灵组#2.敌机子弹与英雄bullet2=pygame.sprite.spritecollide(self.hero,self.bullet_enemy_group,True)if len(bullet2)>0:self.bomb.play()#发生碰撞,播放爆炸音效self.hp-=1#英雄与敌机子弹接触,自身HP值-1#敌机与英雄enemys=pygame.sprite.spritecollide(self.hero,self.enemy_group,True)if len(enemys)>0:self.bomb.play()#发生碰撞,播放爆炸音效self.hp-=1#英雄与敌机接触,自身HP值-1bomb_enemy2 = Bomb(enemys[0])#将发生碰撞的敌传入爆炸类,方便使用爆炸的具体位置self.bomb_group.add(bomb_enemy2)#加入爆炸精灵组# 英雄生命值为0,暂停游戏,并且显示重新开始if self.hp <0:self.hero.kill()self.enemy_group.empty()self.bullet_group.empty()self.bullet_enemy_group.empty()self.pause_flag = Trueself.restart.rect.centerx = self.window.get_rect().centerxself.restart.rect.centery = self.window.get_rect().centeryself.menu_group.add(self.restart)# 更新精灵组位置并绘制def sprite_group_update_draw(self):#地图精灵组更新self.map_group.update()self.map_group.draw(self.window)#英雄精灵组更新self.hero_group.update()self.hero_group.draw(self.window)#敌机精灵组更新self.enemy_group.update()self.enemy_group.draw(self.window)#英雄子弹精灵组self.bullet_group.update()self.bullet_group.draw(self.window)#敌机子弹精灵组self.bullet_enemy_group.update()self.bullet_enemy_group.draw(self.window)#爆炸精灵组self.bomb_group.update()self.bomb_group.draw(self.window)# 菜单类精灵组self.menu_group.update()self.menu_group.draw(self.window)# 显示信息self.show_group.update()self.show_group.draw(self.window)#绘制数据 #游戏数据# 显示游戏信息self.score1 = Show("得分", self.score)self.score1.rect.x = 80self.score1.rect.y = 0self.hp1 = Show("生命值", self.hp)self.hp1.rect.x = 200self.hp1.rect.y = 0self.show_group.empty()self.show_group.add(self.score1, self.hp1)# 事件处理def handle_events(self):#pygame.event.get()获取当前时间帧的所有事件,返回一个事件列表,可以对此列表遍历for event in pygame.event.get():if event.type==pygame.QUIT:pygame.quit()exit()#用户事件1,固定时间生成敌机(时间可以在窗口初始化代码中修改)if event.type==pygame.USEREVENT:self.enemy=Enemy()self.enemy_group.add(self.enemy)#用户事件2,固定时间生成敌机子弹(时间可以在窗口初始化代码中修改)if event.type==pygame.USEREVENT+2:#固定时间生成敌机子弹,需要遍历敌机精灵组,获取所有已经存在的敌机精灵,在对应的位置上绘制敌机子弹for enemy_sprite in self.enemy_group:self.bullet_enemy = Bullet(enemy_sprite.speed + 1,True)self.bullet_enemy.rect.centerx = enemy_sprite.rect.centerxself.bullet_enemy.rect.y =enemy_sprite.rect.bottom#将敌机子弹精灵添加到敌机子弹精灵组self.bullet_enemy_group.add(self.bullet_enemy)#用户事件3,固定时间生成英雄子弹(时间可以在窗口初始化代码中修改)if event.type==pygame.USEREVENT+1:self.bullet_hero=Bullet(-HERO_BULLET_MOVE_SPEED)#英雄子弹飞行方向与敌机子弹飞行方向相反#根据英雄的当前位置来设置英雄子弹的位置self.bullet_hero.rect.centerx=self.hero.rect.centerxself.bullet_hero.rect.y=self.hero.rect.y-self.bullet_hero.rect.height# 将英雄飞机子弹精灵添加到英雄子弹精灵组self.bullet_group.add(self.bullet_hero)# 按下ESC切换暂停if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:self.pause_flag = not self.pause_flag  # 切换暂停状态# 鼠标点击切换暂停if event.type == pygame.MOUSEBUTTONDOWN and event.button == pygame.BUTTON_LEFT:if self.pause_nor.rect.collidepoint(event.pos):self.pause_flag = not self.pause_flag#pygame.key.get_pressed()获取当前时间帧的所有键盘事件并返回一个列表,遍历列表控制英雄上下左右移动keys_event=pygame.key.get_pressed()if keys_event[pygame.K_a] or keys_event[pygame.K_LEFT]:self.hero.x_speed=-HERO_MOVE_SPEEDelif keys_event[pygame.K_d] or keys_event[pygame.K_RIGHT]:self.hero.x_speed=HERO_MOVE_SPEEDelse:self.hero.x_speed = 0if keys_event[pygame.K_w] or keys_event[pygame.K_UP]:self.hero.y_speed=-HERO_MOVE_SPEEDelif keys_event[pygame.K_s] or keys_event[pygame.K_DOWN]:self.hero.y_speed=HERO_MOVE_SPEEDelse:self.hero.y_speed=0# 暂停状态下if self.pause_flag:if self.pause_nor in self.menu_group:self.menu_group.remove(self.pause_nor)  # 将运行图标的精灵移除self.menu_group.add(self.resume_nor)pygame.mixer.music.pause()#暂停背景音乐# 非暂停状态else:if self.resume_nor in self.menu_group:self.menu_group.remove(self.resume_nor)  # 将暂停图标的精灵移除self.menu_group.add(self.pause_nor)pygame.mixer.music.unpause()# 显示游戏信息self.score1 = Show("得分", self.score)self.score1.rect.x = 80self.score1.rect.y = 0self.hp1 = Show("生命值", self.hp)self.hp1.rect.x = 200self.hp1.rect.y = 0self.show_group.empty()self.show_group.add(self.score1, self.hp1)#游戏主框架def run(self):pygame.init()while True:#暂停状态while self.pause_flag:self.clock.tick(60)for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()# 按下ESC暂停if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:self.pause_flag = not self.pause_flag  # 切换暂停状态# 鼠标点击切换暂停if event.type == pygame.MOUSEBUTTONDOWN and event.button == pygame.BUTTON_LEFT:if self.pause_nor.rect.collidepoint(event.pos):self.pause_flag = not self.pause_flag# 当英雄死亡之后,点击重新开始if event.type == pygame.MOUSEBUTTONDOWN and event.button == pygame.BUTTON_LEFT:pos = pygame.mouse.get_pos()# 如果英雄死亡了,点击重新开始if self.hp < 0 and self.restart.rect.collidepoint(pos):self.menu_group.remove(self.restart)self.score = 0self.hero_group.add(self.hero)self.hp = HERO_HPself.pause_flag = False# 切换到非暂停状态if not self.pause_flag:break#正常运行while not self.pause_flag:self.clock.tick(60)  # FPS#碰撞检测self.collie_check()# 事件处理self.handle_events()#更新精灵组self.sprite_group_update_draw()# 窗口刷新pygame.display.update()# 切换到暂停状态if self.pause_flag:break

4.游戏资源类

游戏资源类主要包括各种游戏相关元素精灵、主要有基础精灵类、敌机精灵类、子弹精灵类、英雄飞机精灵类、爆炸动画精灵类等。

import  pygame
from Config import *
import random
#精灵类————基类,定义了基本的导入图片操作,以及图片垂直移动操作
class GameSprite(pygame.sprite.Sprite):def __init__(self,image_url,speed=0):super().__init__()self.image=pygame.image.load(image_url)self.rect=self.image.get_rect()self.speed=speeddef update(self, *args, **kwargs):self.rect.y+=self.speed
#游戏地图类,地图由两张完全一样的图片拼接构成,其中两张图片的起始和末尾要无缝衔接
#第一张图片起始位置与窗口完全重合,第二张图片的起始位置在第一张图片的上方
class GameMap(GameSprite):#is_1表示是否是第二张图片def __init__(self,is_1=False):#地图给了5张,保证地图索引在1~5,否则随机给一个1~5self.map_index=MAP_INDEX if 1<=MAP_INDEX<=5 else random.randint(1,5)map_filename=f"./source/map/map-{self.map_index}.jpg"super().__init__(map_filename,2)if is_1:self.rect.y=-WINDOW.height#第二张图片的起始位置在第一张图片的上方def update(self):#更新图像的位置super().update()#如果地图图片完全运动到了窗口最下方,就将这张图片的位置移动到窗口的最上方,作为新的起始位置if self.rect.y>=WINDOW.height:self.rect.y=-WINDOW.height
#英雄飞机类,初始化定义比较简单
class Hero(GameSprite):def __init__(self):super().__init__("./source/plane/hero.png")#定义英雄飞机出生在窗口中的具体位置self.rect.centerx=WINDOW.centerxself.rect.y=WINDOW.height-120#初始移动速度为0,静止状态self.x_speed=0self.y_speed=0def update(self, *args, **kwargs):#水平方向移动self.rect.x+=self.x_speed#垂直方向移动self.rect.y+=self.y_speed#判断上、下、左、右四个边界条件,如果移动到了边界,让飞机停在原位if self.rect.x<=0:self.rect.x=0if self.rect.x>=WINDOW.width-self.rect.width:self.rect.x=WINDOW.width-self.rect.widthif self.rect.y<=0:self.rect.y=0if self.rect.y>=WINDOW.height-self.rect.height:self.rect.y=WINDOW.height-self.rect.height
#敌机类
class Enemy(GameSprite):def __init__(self):#敌机有7中飞机,随机生成self.enemy_url=f"./source/plane/enemy-{random.randint(1,7)}.png"#敌机的垂直速度也是随机生成(1,3)super().__init__(self.enemy_url,random.randint(1,3))#敌机的初始水平位置需要随机生成,范围就是(0,WINDOW.width-self.rect.width)self.rect.x=random.randint(0,WINDOW.width-self.rect.width)#敌机的垂直位置y是固定值,保证敌机出现的位置在窗口之外self.rect.y=-self.rect.height#敌机水平方向的移动速度随机生成self.x_speed=random.randint(-1,1)def update(self, *args, **kwargs):#调用父类的update()函数super().update()#父类函数不够用的情况下,直接补充self.rect.x+=self.x_speed#水平移动#如果到达左右边界则反向运动if self.rect.x<=0 or self.rect.x>=WINDOW.width-self.rect.width:self.x_speed=-self.x_speed#敌机出了窗口底部则杀死此敌机精灵if self.rect.y>WINDOW.height:self.kill()
#子弹类(英雄飞机子弹和敌机子弹)
class Bullet(GameSprite):#is_enemy表示是否是敌机,敌机和英雄飞机使用的子弹图片不同def __init__(self,speed,is_enemy=False):if is_enemy:self.bullet_index=ENEMY_BULLET_INDEXelse:self.bullet_index = HERO_BULLET_INDEXbullet_filename = f"./source/bullet/bullet_{self.bullet_index}.png"self.speed=speedsuper().__init__(bullet_filename,self.speed)#由于敌机和英雄飞机是相对运动,资源图片都是正向的,所以如果是敌机子弹,则需要对子弹图片做旋转180°操作if is_enemy:##flip(翻转的图片、是否绕x轴翻转、是否绕y轴翻转)self.image=pygame.transform.flip(self.image,False,True)def update(self, *args, **kwargs):#垂直方向移动super().update()#超出屏幕则杀死此精灵if self.rect.y<-self.rect.height or self.rect.y>WINDOW.height+self.rect.height:self.kill()
#爆炸动画类
class Bomb(pygame.sprite.Sprite):def __init__(self,sprite1):super().__init__()#导入所有动画的图片self.images=[pygame.image.load(f"./source/bomb/bomb-{bomb_index}.png") for bomb_index in range(1,8)]self.sprite1=sprite1self.interval = 5 # 播放每一张图片的间隔 5帧self.interval_index = 0 #帧数计数器 初始值为0self.image_index=0#图片索引 初始值为0self.image = self.images[self.image_index]self.rect = self.image.get_rect()self.rect.x = self.sprite1.rect.xself.rect.y = self.sprite1.rect.ydef update(self, *args, **kwargs):self.interval_index+=1#每一帧进入update()函数,帧计数器加1#当计数器到达设置值时,切换图片if self.interval_index>=self.interval:self.image=self.images[self.image_index]#帧计数器归零self.interval_index=0#切换图片self.image_index+=1#当所有图片都播放完毕之后杀死此精灵对象if self.image_index==len(self.images):self.kill()
#菜单类,显示控制游戏的暂停、恢复游戏、重新开始游戏
class Menu(GameSprite):def __init__(self,image_url):super().__init__(image_url)def update(self, *args, **kwargs):pass
#显示游戏相关信息类,可以显示游戏中得分、英雄生命值等
class Show(pygame.sprite.Sprite):def __init__(self,name,var):super().__init__()pygame.font.init()font1 = pygame.font.SysFont('华文宋体', 25)  # 加载系统自带字体text = f"{name}:{var}"  # 编辑文本text = font1.render(text, True, (255, 255, 0))  # 渲染字体,(字符串,抗锯齿,字体颜色,背景颜色)self.image=textself.rect=self.image.get_rect()

5.资源下载

链接:资源
提取码:9mje

6.游戏效果

在这里插入图片描述

相关文章:

pygame飞机大战

飞机大战 1.main类2.配置类3.游戏主类4.游戏资源类5.资源下载6.游戏效果 1.main类 启动游戏。 from MainWindow import MainWindow if __name__ __main__:appMainWindow()app.run()2.配置类 该类主要存放游戏的各种设置参数。 #窗口尺寸 #窗口尺寸 import random import p…...

【Vim Masterclass 笔记08】第 6 章:Vim 中的文本变换及替换操作 + S06L20:文本的插入、变更、替换,以及合并操作

文章目录 Section 6&#xff1a;Transforming and Substituting TextS06L21 Inserting, Changing, Replacing, and Joining1 定位到行首非空字符&#xff0c;并启用插入模式2 在紧挨光标的下一个字符位置启动插入模式3 定位到一行末尾&#xff0c;并启用插入模式4 定位到光标的…...

Tailwind CSS 实战:动画效果设计与实现

在现代网页设计中,动画效果就像是一位优秀的舞者,通过流畅的动作为用户带来愉悦的视觉体验。记得在一个产品展示网站项目中,我们通过添加精心设计的动画效果,让用户的平均停留时间提升了 35%。今天,我想和大家分享如何使用 Tailwind CSS 打造优雅的动画效果。 设计理念 设计动…...

【动手学电机驱动】STM32-MBD(3)Simulink 状态机模型的部署

STM32-MBD&#xff08;1&#xff09;安装 Simulink STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署入门 STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型的部署 【动手学电机驱动】STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型部署…...

Linux 服务器启用 DNS 加密

DNS 加密的常用协议包括 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 DNSCrypt。以下是实现这些加密的步骤和工具建议&#xff1a; 1. 使用 DoH (DNS over HTTPS) 工具推荐&#xff1a; cloudflared&#xff08;Cloudflare 提供的客户端&#xff09;doh-client&#xff08;…...

PyTorch不同优化器比较

常见优化器介绍 - SGD&#xff08;随机梯度下降&#xff09;&#xff1a;是最基本的优化器之一&#xff0c;通过在每次迭代中沿着损失函数的负梯度方向更新模型参数。在大规模数据集上计算效率高&#xff0c;对于凸问题和简单模型效果较好。但收敛速度慢&#xff0c;容易陷入局…...

stm32的掉电检测机制——PVD

有时在一些应用中&#xff0c;我们需要检测系统是否掉电了&#xff0c;或者要在掉电的瞬间需要做一些处理。 STM32内部自带PVD功能&#xff0c;用于对MCU供电电压VDD进行监控。 STM32就有这样的掉电检测机制——PVD(Programmable Voltage Detecter)&#xff0c;即可编程电压检…...

Nginx 文件名逻辑漏洞(CVE-2013-4547)

目录 漏洞原理 影响版本 漏洞复现 漏洞原理 CGI&#xff1a;是一种协议&#xff0c;定义了web服务器传递的数据格式。 FastCGI&#xff1a;优化版的CGI程序 PHP-CGI&#xff1a;PHP解释器&#xff0c;能够对PHP文件进行解析并返回相应的解析结果 PHP-FPM&#xff1a;Fas…...

Java 21 优雅和安全地处理 null

在 Java 21 中,判断 null 依然是开发中常见的需求。通过使用现代 Java 提供的工具和特性,可以更加优雅和安全地处理 null。 1. 使用 Objects.requireNonNull Objects.requireNonNull 是标准的工具方法,用于快速判断并抛出异常。 示例 import java.util.Objects;public c…...

AWS Glue基础知识

AWS Glue 是一项完全托管的 ETL&#xff08;提取、转换、加载&#xff09;服务&#xff0c;与考试相关&#xff0c;尤其是在数据集成、处理和分析方面。 1.数据集成和 ETL&#xff08;提取、转换、加载&#xff09; AWS Glue 主要用于构建 ETL 管道以准备数据以进行分析。作为…...

Kubernetes——part4-1 Kubernetes集群 服务暴露 Nginx Ingress Controller

Kubernetes集群 服务暴露 Nginx Ingress Controller 一、ingress控制器 1.1 ingress控制器作用 &#xff08;类似于slb&#xff0c;做代理服务&#xff09; ingress controller可以为kubernetes 集群外用户访问Kubernetes集群内部pod提供代理服务。 提供全局访问代理访问流程…...

Flutter入门,Flutter基础知识总结。

Flutter是Google推出的一种移动应用开发框架&#xff0c;它允许开发者使用一套代码库同时开发Android和iOS应用。以下是对Flutter知识点的详细总结&#xff1a; 一、Flutter概述 特点&#xff1a;跨平台、高保真、高性能。 编程语言&#xff1a;使用Dart语言编写。 设计理念&…...

weight decay 和L2是一个东西吗

weight decay和L2正则化本质上是相同的概念。 weight decay&#xff08;权重衰减&#xff09;和L2正则化在深度学习中都是用来防止模型过拟合的常用技术。它们通过对损失函数添加一个正则项来限制模型参数的大小&#xff0c;从而控制模型的复杂度。具体来说&#xff0c;L2正则…...

JavaScript系列(8)-- Array高级操作

JavaScript Array高级操作 &#x1f4da; 在前七篇文章中&#xff0c;我们探讨了JavaScript的语言特性、ECMAScript标准、引擎工作原理、数值类型、字符串处理、Symbol类型和Object高级特性。今天&#xff0c;让我们深入了解JavaScript中的Array高级操作。数组是最常用的数据结…...

Harmony开发【笔记1】报错解决(字段名写错了。。)

在利用axios从网络接收请求时&#xff0c;发现返回obj的code为“-1”&#xff0c;非常不解&#xff0c;利用console.log测试&#xff0c;更加不解&#xff0c;可知抛出错误是 “ E 其他错误: userName required”。但是我在测试时&#xff0c;它并没有体现为空&#xff0c;…...

MAC环境安装(卸载)软件

MAC环境安装&#xff08;卸载&#xff09;软件 jdknode安装node&#xff0c;并实现不同版本的切换背景 卸载node从node官网下载pkg安装的node卸载用 homebrew 安装的node如果你感觉删的不够干净&#xff0c;可以再细分删除验证删除结果 在macOS下创建home目录 jdk 1.下载jdk 先…...

【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习(L14+L15+L16)

文章目录 Section 4&#xff1a;The Vim Help System&#xff08;Vim 帮助系统&#xff09;S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…...

Multisim更新:振幅调制器+解调器(含仿真程序+文档+原理图+PCB)

前言 继3年前设计的&#xff1a;Multisim&#xff1a;振幅调制器的设计&#xff08;含仿真程序文档原理图PCB&#xff09;&#xff0c;有读者表示已经不能满足新需求&#xff0c;需要加上新的解调器功能&#x1f602;&#x1f602;&#x1f602;&#xff0c;鸽了很久这里便安排…...

CentOS — 群组管理

文章目录 一、查看群组二、添加群组三、删除群组四、修改群组 Linux 系统中每个用户都属于一个特定的群组。 若不设置用户的群组&#xff0c;默认会创建一个和用户名一样的群组&#xff0c;并将用户分到该群组。 一、查看群组 groups 用户名&#xff1a;查看用户所属群组。 二…...

【pytorch】注意力机制-1

1 注意力提示 1.1 自主性的与非自主性的注意力提示 非自主性提示&#xff1a; 可以简单地使用参数化的全连接层&#xff0c;甚至是非参数化的最大汇聚层或平均汇聚层。 自主性提示 注意力机制与全连接层或汇聚层区别开来。在注意力机制的背景下&#xff0c;自主性提示被称为查…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...