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…...
WebRTC:构建实时通信应用的利器
都已无处不在。而 WebRTC(Web Real-Time Communication)则为开发者提供了一种简便的方式,来在浏览器中实现实时的音视频通信和数据传输。本文将介绍 WebRTC 的基本概念、工作原理,以及如何利用 WebRTC 构建实时通信应用。 什么是…...
个人博客搭建(二)—Typora+PicGo+OSS
个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新,因为WordPress自带的文档编辑器不方便,以前用CSDN写作的时候,习惯了Typora。最近对比了…...
华纳云:在centos7中tomcat内存怎么设置?
在 CentOS 7 中,可以通过修改 Tomcat 的启动脚本来调整 Tomcat 的内存设置。Tomcat 的内存配置主要涉及 JVM 参数(Java Virtual Machine),可以通过设置 -Xms(初始内存)和 -Xmx(最大内存)来调整内存大小。 步骤如下: 1. 修改 Tomcat 启动脚本 …...
樱桃键盘win键按了没反应怎么处理
游戏模式:部分樱桃键盘在进入游戏模式后会禁用Win键,以防止在游戏过程中误触。可以通过按下Fn F9键来切换游戏模式和办公模式,确保键盘处于办公模式下,Win键即可恢复正常功能。 (至此我的问题已解决,…...
【UE5 C++课程系列笔记】23——多线程基础——AsyncTask
目录 概念 函数说明 注意事项 (1)线程安全问题 (2)依赖特定线程执行的任务限制 (3)任务执行顺序和时间不确定性 使用示例 概念 AsyncTask 允许开发者将一个函数或者一段代码逻辑提交到特定的线程去执…...
Docker运维高级容器技术知识点总结
1、虚拟机部署和容器化部署的区别是什么? 1、技术基础: <1>.虚拟化技术在物理硬件上创建虚拟机,每台虚拟机运行自己完整的操作系统、从而实现资源隔离。 <2>.容器化技术:将应用程序打包在容器内,在进程空间…...
Docker的安装和使用
容器技术 容器与虚拟机的区别 虚拟机 (VM) VM包含完整的操作系统,并在虚拟化层之上运行多个操作系统实例。 VM需要更多的系统资源(CPU、内存、存储)来管理这些操作系统实例。 容器 (Container) 容器共享主机操作系统的内核,具…...
Java语法总结
Java的数据类型分为基本数据类型和引用数据类型。 1.基本数据类型:四类八种 byte 和short 比较特殊,不必考虑int类型,只关注是否超出了表示范围。 数据超出了int的范围,改正:在后边添加L ,定义变量报错…...
Linux文件系统的安全保障---Overlayroot!
overlayroot 是一种使用 OverlayFS 实现的功能,可将根文件系统挂载为只读,并通过一个临时的写层实现对文件系统的修改。这种方法非常适合嵌入式设备或需要保持系统文件完整性和安全性的场景。下文以 RK3568 平台为例,介绍制作 overlayroot 的…...
net-http-transport 引发的句柄数(协程)泄漏问题
Reference 关于 Golang 中 http.Response.Body 未读取导致连接复用问题的一点研究https://manishrjain.com/must-close-golang-http-responsehttps://www.reddit.com/r/golang/comments/13fphyz/til_go_response_body_must_be_closed_even_if_you/?rdt35002https://medium.co…...
Elasticsearch:在 HNSW 中提前终止以实现更快的近似 KNN 搜索
作者:来自 Elastic Tommaso Teofili 了解如何使用智能提前终止策略让 HNSW 加快 KNN 搜索速度。 在高维空间中高效地找到最近邻的挑战是向量搜索中最重要的挑战之一,特别是当数据集规模增长时。正如我们之前的博客文章中所讨论的,当数据集规模…...
嵌入式c语言的内存管理
目录 一、内存布局概述 二、栈(Stack) 2.1. 定义与用途 2.2. 内存分配与释放 2.3. 增长方向与大小限制 三、堆(Heap) 3.1. 定义与用途 3.2. 内存分配与释放 3.3. 增长方向与潜在问题 四、全局/静态存储区 4.1. 定义与用…...
uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端
采用 uniapp-vue3 实现, 是一款带有丝滑动画效果的单选框组件,提供点状、条状的动画过渡效果,支持多项自定义配置,适配 web、H5、微信小程序(其他平台小程序未测试过,可自行尝试) 可到插件市场下载尝试&…...
【Linux】shell脚本编程
目录 概念: shell脚本的本质: shell脚本编程: shell变量: 变量的定义格式: 变量的分类 自定义变量: 环境变量: 命令变量与命令行参数: 预定义变量: shell中的…...
ingress-nginx-controller安装
ingress-nginx-controller安装 ingress-nginx-controller是配置ingress发布的基础。以下主要采用Helm安装。地址: GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for Kubernetes 1 Helm安装 安装不难,需要找到合适的压缩包就行。我自…...
机器学习基础-机器学习的常用学习方法
目录 半监督学习的概念 规则学习的概念 基本概念 机器学习里的规则 逻辑规则 规则集 充分性与必要性 冲突消解 命题逻辑 → 命题规则 序贯覆盖 单条规则学习 剪枝优化 强化学习的概念 1. 强化学习对应了四元组 2. 强化学习的目标 强化学习常用马尔可夫决策过程…...
如何在Windows 11 WSL2 Ubuntu 环境下安装和配置perf性能分析工具?
在Windows 11 WSL2 Ubuntu 环境下完整安装和配置perf性能分析工具 一、背景二、准备工作三、获取并编译Linux内核源码四、安装和配置perf五、测试perf六、总结 一、背景 由于WSL2使用的是微软定制的内核,并非标准的Ubuntu内核,因此直接使用apt安装linux…...
人工智能知识分享第十天-机器学习_聚类算法
聚类算法 1 聚类算法简介 1.1 聚类算法介绍 一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。 目的是将数据集中的对象分成多个簇(Cluster),使得同一簇内的对象相似度较高,而不同簇之间的对象相…...
使用wav2vec 2.0进行音位分类任务的研究总结
使用wav2vec 2.0进行音位分类任务的研究总结 原文名称: Using wav2vec 2.0 for phonetic classification tasks: methodological aspects 研究背景 自监督学习在语音中的应用 自监督学习在自动语音识别任务中表现出色,例如说话人识别和验证。变换器模型…...
【Leetcode 热题 100】33. 搜索旋转排序数组
问题背景 整数数组 n u m s nums nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前, n u m s nums nums 在预先未知的某个下标 k ( 0 ≤ k < n u m s . l e n g t h ) k(0 \le k \lt nums.length) k(0≤k<nums.length) 上进行了 旋转&…...
【VScode】设置代理,通过代理连接服务器
文章目录 VScode编辑器设置代理1.图形化界面1.1 进入proxy设置界面1.2 配置代理服务器 2.配置文件(推荐)2.1 打开setting.json 文件2.2 配置代理 VScode编辑器设置代理 根据情况安装nmap 1.图形化界面 1.1 进入proxy设置界面 或者使用快捷键ctrl , 。…...
每日一题-两个链表的第一个公共结点
文章目录 两个链表的第一个公共结点问题描述示例说明示例 1示例 2 方法及实现方法描述代码实现 复杂度分析示例运行过程示例 1示例 2 总结备注 两个链表的第一个公共结点 问题描述 给定两个无环的单向链表,找到它们的第一个公共节点。如果没有公共节点,…...
Linux存储管理之核心秘密(The Core Secret of Linux Storage Management)
Linux存储管理之核心秘密 如果你来自Windows环境,那么Linux处理和管理存储设备的方式对你而言可能显得格外不同。我们知道,Linux的文件系统并不采用Windows那样的物理驱动器表示方式(如C:、D:或E:),而是构建了一个以&…...
js单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 静态方法实现 class SingleTon{//全局的访问点static getInstance(){// 保证一个类只有一个实例if(!this.instance){this.instancenew SingleTon()}return this.instance}}let aSingleTon.getInstance()let bSing…...
搭建一个本地轻量级且好用的学习TypeScript语言的环境
需求说明 虽然 TypeScript 的在线 Playground 很方便 https://www.tslang.com.cn/play/,但毕竟是在浏览器中使用,没有本地的 IDE 那么顺手。所以我想搭建一个本地类似 Playground 的环境,这样在学习 TypeScript 的过程中,可以更方…...
大模型(LLM)面试全解:主流架构、训练目标、涌现能力全面解析
系列文章目录 大模型(LLMs)基础面 01-大模型(LLM)面试全解:主流架构、训练目标、涌现能力全面解析 大模型(LLMs)进阶面 文章目录 系列文章目录大模型(LLMs)基础面一、目…...
入门嵌入式(七)——PWM
PWM 脉冲宽度调制PWM(Pulse-Width Modulation) 一组方波 周期 1ms 频率 1s / 周期 占空比 高电平/周期 数字信号:0/1高低电平 串口 IIC PWM都属于数字信号 模拟信号:电压值, 会受到电磁影响 ADC 模数转换 用于读取…...
Flutter 实现 列表滑动过程控件停靠效果 学习
实现一个 Flutter 应用程序,使用 Sliver 系列组件来创建具有滚动效果的复杂布局。使用 NestedScrollView 和 SliverPersistentHeader 来实现固定和动态的头部效果,以及一个可滚动的列表。 前置知识点学习 SingleTickerProviderStateMixin SingleTicker…...
STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显
资料下载地址:STM32WIFI获取网络时间8位数码管显示0.96OLED 1、项目介绍 主控芯片STM32C8T6 接线:串口1:PA9 PA10 OELD :PB6 PB7 数码管使用:MAX7219 8位数码管 Max7219_pinCLK PAout(5) Max7219_pinC…...
Kivy App开发之UX控件Slider滑块
在app中可能会调节如音量,亮度等,可以使用Slider来实现,该控件调用方便,兼容性好,滑动平稳。在一些参数设置中,也可以用来调整数值。 支持水平和垂直方向,可以设置默认值,最小及最大值。 使用方法,需用引入Slider类,通过Slider类生成一个滑块并设置相关的样式后,再…...
STM32学习(十)
I2C模块内部结构 I2C(Inter-Integrated Circuit)模块是一种由Philips公司开发的二线式串行总线协议,用于短距离通信,允许多个设备共享相同的总线。 硬件连接简单:I2C通信仅需要两条总线,即SCL&…...
何为“正则表达式”!
详细解释: ^:在JSON的正则表达式中,^表示匹配输入字符串的开始位置。这意味着正则表达式将从字符串的开头开始进行匹配,确保整个字符串符合后续的模式要求。例如,对于字符串"3.14",正则表达式会…...
创建Java项目,并添加MyBatis包和驱动包
一 : Mybatis和jsp使用上,只有Dao层有区别 Mybatis 使用方法: 测试类的7步骤 1.读取核心配置文件 2.构建sql会话工厂 3.开启sql会话 4.获取mapper接口 5.调用相对应的增删改查方法 6.打印 7.关闭回话 /*** 用户列表* throws IOException*/Testpublic void roleList() throws IO…...
目标检测文献阅读-DETR:使用Transformer进行端到端目标检测
目录 摘要 Abstract 1 引言 2 DETR结构 2.1 Backbone 2.2 Encoder 2.3 Decoder 2.4 FFN 3 目标检测集合预测损失 3.1 二分图匹配损失 3.2 损失函数 总结 摘要 本周阅读的论文题目是《End-to-End Object Detection with Transformers》(使用Transformer进行端到端目…...
C#里对已经存在的文件进行压缩生成ZIP文件
先要对目录下所有文件获取到: private List<string> GetXDFiles(string dirPath){//获取目录中的所有文件string suffix = "*.txt"; // 要查找的文件后缀var files = Directory.GetFiles(dirPath, suffix, SearchOption.TopDirectoryOnly).ToList();return fi…...
单片机软件定时器V4.0
单片机软件定时器V4.0 用于单片机定时执行任务等,比如LED GPIO等定时控制,内置前后台工作模式 头文件有使用例子 #ifndef __SORFTIME_APP_H #define __SORFTIME_APP_H#ifdef __cplusplus extern "C" { #endif#include <stdint.h>// #…...
【嵌入式硬件】嵌入式显示屏接口
数字显示串行接口(Digital Display Serial Interface) SPI 不过多赘述。 I2C-bus interface 不过多赘述 MIPI DSI MIPI (Mobile Industry Processor Interface) Alliance, DSI (Display Serial Interface) 一般用于移动设备,下面是接口…...
vuedraggable 选项介绍
vuedraggable 是基于 SortableJS 的 Vue 组件,提供了丰富的选项来定制拖拽行为。以下是 vuedraggable 常用的选项和它们的详细说明: 常用选项介绍 group 配置拖拽分组。多个列表可以共享同一个分组,允许它们之间的项目互相拖拽。 group: { na…...
OpenAI CEO 奥特曼发长文《反思》
OpenAI CEO 奥特曼发长文《反思》 --- 引言:从 ChatGPT 到 AGI 的探索 ChatGPT 诞生仅一个多月,如今我们已经过渡到可以进行复杂推理的下一代模型。新年让人们陷入反思,我想分享一些个人想法,谈谈它迄今为止的发展,…...
Appium(一)--- 环境搭建
一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装:默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(3) 验证…...
如何查看服务器上的MySQL/Redis等系统服务状态和列表
如果呢你知道系统服务名称,要看状态很简单: systemctl status server-name 比如 systemctl status nginxsystemctl status redis # 等 这是一个nginx的示例: 那问题是 当你不知道服务名称时该怎么办。举个例子,比如mysql在启动…...
多模态论文笔记——U-ViT
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节,虽然没有后续的DiT在AIGC领域火爆,但为后来的研究奠定了基础,但其开创性的探索值得学习…...
08-1_队列的理论讲解
08-1_队列的理论讲解 队列概念理解 队列就是一个传送带,就是一个流水线 工人放入的数据, 放在传送带上,送给消费者, 消费者第一次拿到的数据,就是工人第一次放上的数据(类比队列,先进先出) freertos队列应用思考 队列对于消费者(取数据): (1)当队列没有数据, 消费者需要进入…...
HTML基础入门——简单网页页面
目录 一,网上转账电子账单 编辑 1,所利用到的标签 2,代码编写 3,运行结果 二,李白诗词 1,所用到的标签 2,照片的编辑 3,代码编写 4,运行结果 一,网…...
Proteus-8086调试汇编格式的一点心得
这阵子开始做汇编的微机实验(微机原理与接口技术题解及实验指导,吴宁版本13章),中间出了挺多问题,解决后记录下。 先上电路图 用子电路来仿真发现仿真的时候子电路这块根本没有高低电平输出,只好把子电路拿…...
Python入门教程 —— 多任务
1.线程 1.1.线程安全问题 线程访问全局变量 import threading g_num = 0 def test(n):global g_numfor x in range(n):g_num += xg_num -= xprint(g_num)if __name__ == __main__:t1 = threading.Thread(target=test, args=(10,))t2 = threading.Thread(target=test, args=(…...
【笔记】算法记录
1、求一个数的素因子(试除法) // 获取一个数的所有素因子 set<int> getPrimeFactors(int num) {set<int> primeFactors;for (int i 2; i * i < num; i) {while (num % i 0) {primeFactors.insert(i);num / i;}}if (num > 1) {prime…...
2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无
2024年1月4日蜻蜓hr人才招聘系统v1.1.7更新-正式版发布-客户端源代码开源发布供学习-本产品完成上线正式版-修复多个bug-优雅草果果|小无 前端代码开源库 关于开源说明:企业服务-招聘信息管理系统-前端uniapp-系统前端开放源代码仅供学习-优雅草科技-目前优雅草科…...
【网络】计算机网络的分类 局域网 (LAN) 广域网 (WAN) 城域网 (MAN)个域网(PAN)
局域网是通过路由器接入广域网的 分布范围 局域网Local Area Network:小范围覆盖,速度高,延迟低(办公室,家庭,校园,网络) 广域网Wide Area Network 大范围覆盖,速度相对低,延迟高…...