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

python例程:《彩图版飞机大战》程序

目录

  • 开发环境要求
  • 运行方法
  • 《彩图版飞机大战》程序使用说明
  • 源码示例
  • 源码及说明文档下载路径

开发环境要求

本系统的软件开发及运行环境具体如下。
操作系统:Windows 7、Windows 10。
Python版本:Python 3.7.1。
开发工具:PyCharm 2018。
Python内置模块:sys、random、codecs。
第三方模块:pygame。
注意:在使用第三方模块时,首先需要使用pip install命令安装该模块,例如,安装pygame模块,可以在Python命令窗口中执行以下命令:

pip install pygame

运行方法

打开PyCharm开发环境,然后在主菜单上选择File→Open菜单项,在打开的Open File or Project对话框中,选择项目foo,如图1所示。

图1 Open File or Project对话框
在这里插入图片描述

单击OK按钮,将弹出 Open Project对话框,在该对话框,如果想要在新的窗体中打开项目,则选中Open in new window单选按钮,否则在当前窗体中打开,则选中Open in current window单选按钮。这里在新窗体中打开文件,如图2所示。

图2 Open Project对话框
在这里插入图片描述

打开项目后,在右侧的Project面板中选中程序的主文件main.py,并且单击鼠标右键,在弹出的快捷菜单中选择“Run ’ main’”菜单项运行项目,如图3所示。

图3 选择“Run ’ main’”即可运行程序
在这里插入图片描述

《彩图版飞机大战》程序使用说明

在PyCharm中运行《彩图版飞机大战》即可进入如图4所示的游戏界面。

图4 游戏主界面
在这里插入图片描述

具体的操作步骤如下:
(1)玩游戏。在游戏主界面中,从屏幕的顶部不断出现下落的敌机,玩家按下键盘上的↑、↓、←、→方向键移动飞机的位置并且发射子弹打掉敌机,每打掉一只敌机得100分。当玩家飞机与敌机发生碰撞时游戏结束,同时显示游戏得分以及排行榜按钮,游戏结束界面如图5所示。

图5 游戏结束界面
在这里插入图片描述

(2)查看排行榜。在游戏结束界面中,单击“排行榜”按钮,将显示排行榜界面,如图6所示。在该界面中,如果想重新玩游戏,可以单击“重新开始”按钮。

图6 游戏排行榜界面
在这里插入图片描述

源码示例

# -*- coding: utf-8 -*-
import pygame           # 导入pygame库
from pygame.locals import *  # 导入pygame库中的一些常量
from sys import exit  # 导入sys库中的exit函数
import random
import codecs# 设置游戏屏幕大小
SCREEN_WIDTH = 480
SCREEN_HEIGHT = 800# 子弹类
class Bullet(pygame.sprite.Sprite):def __init__(self, bullet_img, init_pos):# 调用了父类的初始化方法来初始化sprite的属性pygame.sprite.Sprite.__init__(self)# 调用了父类的初始化方法来初始化sprite的属性self.image = bullet_imgself.rect = self.image.get_rect()self.rect.midbottom = init_posself.speed = 10def move(self):self.rect.top -= self.speed# 玩家飞机类
class Player(pygame.sprite.Sprite):def __init__(self, player_rect, init_pos):pygame.sprite.Sprite.__init__(self)self.image = []  # 用来存储玩家飞机图片的列表for i in range(len(player_rect)):self.image.append(player_rect[i].convert_alpha())self.rect = player_rect[0].get_rect()  # 初始化图片所在的矩形self.rect.topleft = init_pos  # 初始化矩形的左上角坐标self.speed = 8  # 初始化玩家飞机速度,这里是一个确定的值self.bullets = pygame.sprite.Group()  # 玩家飞机所发射的子弹的集合self.img_index = 0  # 玩家飞机图片索引self.is_hit = False  # 玩家是否被击中# 发射子弹def shoot(self, bullet_img):bullet = Bullet(bullet_img, self.rect.midtop)self.bullets.add(bullet)# 向上移动,需要判断边界def moveUp(self):if self.rect.top <= 0:self.rect.top = 0else:self.rect.top -= self.speed# 向下移动,需要判断边界def moveDown(self):if self.rect.top >= SCREEN_HEIGHT - self.rect.height:self.rect.top = SCREEN_HEIGHT - self.rect.heightelse:self.rect.top += self.speed# 向左移动,需要判断边界def moveLeft(self):if self.rect.left <= 0:self.rect.left = 0else:self.rect.left -= self.speed# 向右移动,需要判断边界def moveRight(self):if self.rect.left >= SCREEN_WIDTH - self.rect.width:self.rect.left = SCREEN_WIDTH - self.rect.widthelse:self.rect.left += self.speed# 敌机类
class Enemy(pygame.sprite.Sprite):def __init__(self, enemy_img, enemy_down_imgs, init_pos):pygame.sprite.Sprite.__init__(self)self.image = enemy_imgself.rect = self.image.get_rect()self.rect.topleft = init_posself.down_imgs = enemy_down_imgsself.speed = 2self.down_index = 0# 敌机移动,边界判断及删除在游戏主循环里处理def move(self):self.rect.top += self.speed
""" 
对文件的操作
写入文本:
传入参数为content,strim,path;content为需要写入的内容,数据类型为字符串。
path为写入的位置,数据类型为字符串。strim写入方式
传入的path需如下定义:path= r’ D:\text.txt’
f = codecs.open(path, strim, 'utf8')中,codecs为包,需要用impor引入。
strim=’a’表示追加写入txt,可以换成’w’,表示覆盖写入。
'utf8'表述写入的编码,可以换成'utf16'等。
"""
def write_txt(content, strim, path):f = codecs.open(path, strim, 'utf8')f.write(str(content))f.close()
"""
读取txt:
表示按行读取txt文件,utf8表 示读取编码为utf8的文件,可以根据需求改成utf16,或者GBK等。
返回的为数组,每一个数组的元素代表一行,
若想返回字符串格式,可以将改写成return ‘\n’.join(lines)
"""
def read_txt(path):with open(path, 'r', encoding='utf8') as f:lines = f.readlines()return lines# 初始化 pygame
pygame.init()
# 设置游戏界面大小
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# 游戏界面标题
pygame.display.set_caption('彩图版飞机大战')
# 图标
ic_launcher = pygame.image.load('resources/image/ic_launcher.png').convert_alpha()
pygame.display.set_icon(ic_launcher)
# 背景图
background = pygame.image.load('resources/image/background.png').convert_alpha()
# 游戏结束背景图
game_over = pygame.image.load('resources/image/gameover.png')
# 子弹图片
plane_bullet = pygame.image.load('resources/image/bullet.png')
# 飞机图片
player_img1= pygame.image.load('resources/image/player1.png')
player_img2= pygame.image.load('resources/image/player2.png')
player_img3= pygame.image.load('resources/image/player_off1.png')
player_img4= pygame.image.load('resources/image/player_off2.png')
player_img5= pygame.image.load('resources/image/player_off3.png')
# 敌机图片
enemy_img1= pygame.image.load('resources/image/enemy1.png')
enemy_img2= pygame.image.load('resources/image/enemy2.png')
enemy_img3= pygame.image.load('resources/image/enemy3.png')
enemy_img4= pygame.image.load('resources/image/enemy4.png')
# 开始游戏方法
def startGame():# 设置玩家飞机不同状态的图片列表,多张图片展示为动画效果player_rect = []# 玩家飞机图片player_rect.append(player_img1)player_rect.append(player_img2)# 玩家爆炸图片player_rect.append(player_img2)player_rect.append(player_img3)player_rect.append(player_img4)player_rect.append(player_img5)player_pos = [200, 600]# 初始化玩家飞机player = Player(player_rect, player_pos)# 子弹图片bullet_img = plane_bullet# 敌机不同状态的图片列表,多张图片展示为动画效果enemy1_img = enemy_img1enemy1_rect=enemy1_img.get_rect()enemy1_down_imgs = []enemy1_down_imgs.append(enemy_img1)enemy1_down_imgs.append(enemy_img2)enemy1_down_imgs.append(enemy_img3)enemy1_down_imgs.append(enemy_img4)# 储存敌机enemies1 = pygame.sprite.Group()# 存储被击毁的飞机,用来渲染击毁动画enemies_down = pygame.sprite.Group()# 初始化射击及敌机移动频率shoot_frequency = 0enemy_frequency = 0# 玩家飞机被击中后的效果处理player_down_index = 16# 初始化分数score = 0# 游戏循环帧率设置clock = pygame.time.Clock()# 判断游戏循环退出的参数running = True# 游戏主循环while running:# 绘制背景screen.fill(0)screen.blit(background, (0, 0))# 控制游戏最大帧率为 60clock.tick(60)# 生成子弹,需要控制发射频率# 首先判断玩家飞机没有被击中if not player.is_hit:if shoot_frequency % 15 == 0:player.shoot(bullet_img)shoot_frequency += 1if shoot_frequency >= 15:shoot_frequency = 0for bullet in player.bullets:# 以固定速度移动子弹bullet.move()# 移动出屏幕后删除子弹if bullet.rect.bottom < 0:player.bullets.remove(bullet)# 显示子弹player.bullets.draw(screen)# 生成敌机,需要控制生成频率if enemy_frequency % 50 == 0:enemy1_pos = [random.randint(0, SCREEN_WIDTH - enemy1_rect.width), 0]enemy1 = Enemy(enemy1_img, enemy1_down_imgs, enemy1_pos)enemies1.add(enemy1)enemy_frequency += 1if enemy_frequency >= 100:enemy_frequency = 0for enemy in enemies1:# 移动敌机enemy.move()# 敌机与玩家飞机碰撞效果处理 两个精灵之间的圆检测if pygame.sprite.collide_circle(enemy, player):enemies_down.add(enemy)enemies1.remove(enemy)player.is_hit = Truebreak# 移动出屏幕后删除飞机if enemy.rect.top < 0:enemies1.remove(enemy)# 敌机被子弹击中效果处理# 将被击中的敌机对象添加到击毁敌机 Group 中,用来渲染击毁动画# 方法groupcollide()是检测两个精灵组中精灵们的矩形冲突enemies1_down = pygame.sprite.groupcollide(enemies1, player.bullets, 1, 1)# 遍历key值 返回的碰撞敌机for enemy_down in enemies1_down:# 点击销毁的敌机到列表enemies_down.add(enemy_down)# 绘制玩家飞机if not player.is_hit:screen.blit(player.image[player.img_index], player.rect)# 更换图片索引使飞机有动画效果player.img_index = shoot_frequency // 8else:# 玩家飞机被击中后的效果处理player.img_index = player_down_index // 8screen.blit(player.image[player.img_index], player.rect)player_down_index += 1if player_down_index > 47:# 击中效果处理完成后游戏结束running = False# 敌机被子弹击中效果显示for enemy_down in enemies_down:if enemy_down.down_index == 0:passif enemy_down.down_index > 7:enemies_down.remove(enemy_down)score += 100continue#显示碰撞图片screen.blit(enemy_down.down_imgs[enemy_down.down_index // 2], enemy_down.rect)enemy_down.down_index += 1# 显示精灵enemies1.draw(screen)# 绘制当前得分score_font = pygame.font.Font(None, 36)score_text = score_font.render(str(score), True, (255, 255, 255))text_rect = score_text.get_rect()text_rect.topleft = [10, 10]screen.blit(score_text, text_rect)# 更新屏幕pygame.display.update()# 处理游戏退出for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()# 获取键盘事件(上下左右按键)key_pressed = pygame.key.get_pressed()# 处理键盘事件(移动飞机的位置)if key_pressed[K_w] or key_pressed[K_UP]:player.moveUp()if key_pressed[K_s] or key_pressed[K_DOWN]:player.moveDown()if key_pressed[K_a] or key_pressed[K_LEFT]:player.moveLeft()if key_pressed[K_d] or key_pressed[K_RIGHT]:player.moveRight()# 绘制游戏结束背景screen.blit(game_over, (0, 0))# 游戏 Game Over 后显示最终得分font = pygame.font.Font(None, 48)text = font.render('Score: ' + str(score), True, (255, 255, 255))text_rect = text.get_rect()text_rect.centerx = screen.get_rect().centerxtext_rect.centery = screen.get_rect().centery + 24screen.blit(text, text_rect)# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 30)# 重新开始按钮textstart = xtfont.render('重新开始 ', True, (255, 255, 255))text_rect = textstart.get_rect()text_rect.centerx = screen.get_rect().centerxtext_rect.centery = screen.get_rect().centery + 120screen.blit(textstart, text_rect)# 排行榜按钮textstart = xtfont.render('排行榜 ', True, (255, 255, 255))text_rect = textstart.get_rect()text_rect.centerx = screen.get_rect().centerxtext_rect.centery = screen.get_rect().centery + 180screen.blit(textstart, text_rect)# 判断得分更新排行榜# 临时的变量在到排行榜的时候使用j = 0#获取文件中内容转换成列表使用mr分割开内容arrayscore = read_txt(r'score.txt')[0].split('mr')# 循环分数列表在列表里排序for i in range(0, len(arrayscore)):# 判断当前获得的分数是否大于排行榜上的分数if score > int(arrayscore[i]):# 大于排行榜上的内容 把分数和当前分数进行替换j = arrayscore[i]arrayscore[i] = str(score)score = 0# 替换下来的分数下移动一位if int(j) > int(arrayscore[i]):k = arrayscore[i]arrayscore[i] = str(j)j = k#  循环分数列表 写入文档for i in range(0, len(arrayscore)):# 判断列表中第一个分数if i == 0:# 覆盖写入内容追加mr方便分割内容write_txt(arrayscore[i] + 'mr', 'w', r'score.txt')else:# 判断是否为最后一个分数if (i == 9):# 最近添加内容最后一个分数不添加mrwrite_txt(arrayscore[i], 'a', r'score.txt')else:# 不是最后一个分数,添加的时候添加mrwrite_txt(arrayscore[i] + 'mr', 'a', r'score.txt')# 排行榜
def gameRanking():screen2 = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))# 绘制背景screen2.fill(0)screen2.blit(background, (0, 0))# 使用系统字体xtfont = pygame.font.SysFont('SimHei', 30)# 重新开始按钮textstart = xtfont.render('排行榜 ', True, (255, 0, 0))text_rect = textstart.get_rect()text_rect.centerx = screen.get_rect().centerxtext_rect.centery = 50screen.blit(textstart, text_rect)# 重新开始按钮textstart = xtfont.render('重新开始 ', True, (255, 0, 0))text_rect = textstart.get_rect()text_rect.centerx = screen.get_rect().centerxtext_rect.centery = screen.get_rect().centery + 120screen2.blit(textstart, text_rect)# 获取排行文档内容arrayscore = read_txt(r'score.txt')[0].split('mr')# 循环排行榜文件显示排行for i in range(0, len(arrayscore)):# 游戏 Game Over 后显示最终得分font = pygame.font.Font(None, 48)# 排名重1到10k=i+1text = font.render(str(k) +"  " +arrayscore[i], True, (255, 0, 0))text_rect = text.get_rect()text_rect.centerx = screen2.get_rect().centerxtext_rect.centery = 80 + 30*k# 绘制分数内容screen2.blit(text, text_rect)# 开始游戏
startGame()# 判断点击位置以及处理游戏推出
while True:for event in pygame.event.get():# 关闭页面游戏退出if event.type == pygame.QUIT:pygame.quit()exit()# 鼠标单击elif event.type == pygame.MOUSEBUTTONDOWN:# 判断鼠标单击的位置是否为开始按钮位置范围内if screen.get_rect().centerx - 70 <= event.pos[0] \and event.pos[0] <= screen.get_rect().centerx + 50 \and screen.get_rect().centery + 100 <= event.pos[1] \and screen.get_rect().centery + 140 >= event.pos[1]:# 重新开始游戏startGame()# 判断鼠标是否单击排行榜按钮if screen.get_rect().centerx - 70 <= event.pos[0] \and event.pos[0] <= screen.get_rect().centerx + 50 \and screen.get_rect().centery + 160 <= event.pos[1] \and screen.get_rect().centery + 200 >= event.pos[1]:# 显示排行榜gameRanking()# 更新界面pygame.display.update()

源码及说明文档下载路径

彩图版飞机大战的程序使用说明.zip

相关文章:

python例程:《彩图版飞机大战》程序

目录开发环境要求运行方法《彩图版飞机大战》程序使用说明源码示例源码及说明文档下载路径开发环境要求 本系统的软件开发及运行环境具体如下。 操作系统&#xff1a;Windows 7、Windows 10。 Python版本&#xff1a;Python 3.7.1。 开发工具&#xff1a;PyCharm 2018。…...

【前端八股文】JavaScript系列:Set、Map、String常用属性方法

文章目录Set概念与arr的比较属性和方法并集、交集、差集Map概念属性和方法String用索引值和charAt()的区别charAt()和charCodeAt()方法的区别5个查找方法的区别如何把字符串分割为数组3个截取方法的区别大小写转换3个模式匹配方法&#xff08;正则表达式&#xff09;3个移除字符…...

跳跃-动态规划问题

跳跃-动态规划问题1、题目描述2、解题思路2.1 解法一&#xff1a;动态规划2.2 解法二&#xff1a;DFS深度优先搜索最大权值1、题目描述 小蓝在一个 n 行 m 列的方格图中玩一个游戏。 开始时&#xff0c;小蓝站在方格图的左上角&#xff0c;即第 11 行第 11 列。 小蓝可以在方格…...

Django笔记三十九之settings配置介绍

这一篇笔记介绍 Django 里 settings.py 里一些常用的配置项&#xff0c;这些配置有一些是在之前的笔记中有过介绍的&#xff0c;比如 logging 的日志配置&#xff0c;session 的会话配置等&#xff0c;这里就只做一下简单的回顾&#xff0c;有一些是之前没有介绍过的就着重介绍…...

【JavaSE】类和对象(中)

类和对象&#xff08;中&#xff09;4. this引用4.1 为什么要有this引用4.2 什么是this引用4.3 this引用的特性5. 对象的构造及初始化5.1 如何初始化对象5.2 构造方法&#xff08;构造器&#xff09;5.2.1 概念5.2.2 特性5.3 默认初始化5.4 就地初始化6. 封装6.1 封装的概念6.2…...

C语言例程:学生成绩管理程序

学生成绩管理程序 实例说明 编制一个统计存储在文件中的学生考试分数的管理程序。设学生成绩以一个学生一条记录的 形式存储在文件中&#xff0c;每个学生记录包含的信息有姓名、学号和各门功课的成绩。要求编制具有以 下几项功能的程序&#xff1a;求出各门课程的总分&#…...

完美日记母公司再度携手中国妇基会,以“创美人生”助力女性成长

撰稿 | 多客 来源 | 贝多财经 当春时节&#xff0c;梦想花开。和煦的三月暖阳&#xff0c;唤醒的不止是满城春意&#xff0c;更有逸仙电商“创美人生”公益项目播撒的一份希望。 3月8日“国际妇女节”当日&#xff0c;为积极响应我国促进共同富裕的政策倡导&#xff0c;助力相…...

【JaveEE】线程的创建及常见方法解析(Tread类)

目录 1.Tread类介绍 2线程的构造方法——创建线程 1.继承Thread类&#xff0c;重写run()方法 2.使用Runnbable接口创建线程 3.继承 Thread, 重写 run, 使用匿名内部类 4.实现 Runnable, 重写 run, 使用匿名内部类 5.使用 lambda 表达式&#xff08;重点掌握&#xff09;…...

Linux的诞生过程

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

面部表情识别1:表情识别数据集(含下载链接)

面部表情识别1&#xff1a;表情识别数据集(含下载链接) 目录 面部表情识别1&#xff1a;表情识别数据集(含下载链接) 1.前言 2.表情识别数据集介绍 1.JAFFE数据集 2.KDEF&#xff08;Karolinska Directed Emotional Faces&#xff09;数据集 3.GENKI数据集 4.RaFD数据集…...

CSS实现文字凹凸效果

使用两个div分别用来实现凹凸效果&#xff1b;text-shadow语法 text-shadow: h-shadow v-shadow blur color; h-shadow&#xff1a;必需。水平阴影的位置。允许负值。 v-shadow &#xff1a;必需。垂直阴影的位置。允许负值。 blur&#xff1a;可选&#xff0c;模糊的距离。 co…...

嵌入式常使用的库函数

自己创建简单的mcu中常用的库函数 文章目录自己创建简单的mcu中常用的库函数1. 自己编写库函数的意义2. 计算字符串长度.以\0作为结束符3. 复制字符串4. 字符串比较5. 将整数转换为ASCII数组6. 将ASCII码字符串转换成整数7. 将字节数组转换为16位整数8.计算CRC,用于Modbus协议9…...

【业务安全-02】业务逻辑漏洞之越权操作

越权越权即越权查看被人的信息&#xff0c;又分为水平越权和垂直越权&#xff0c;但是两者的本质都是一样的&#xff0c;只是越权的身份权限不一样而已水平越权&#xff1a;相同级别的用户&#xff0c;如用户A访问用户B垂直越权&#xff1a;普通用户到管理员&#xff0c;普通用…...

完全小白的pycharm深度学习调试+for循环断点条件设置

完全小白的pycharm深度学习调试for循环断点条件设置写在最前面基础方法pycharm断点调试控制台输入代码中循环的debug方法pycharm中图标的介绍常见的BugDebug经验1. 检查激活函数的输入值2. 检查梯度3. 消融实验4. 使用最短的时间5. 静下心来写在最前面 之前把seq2seqattention…...

直方图及其应用

直方图定义直方图是一种描述数据的分布通过将连续变量划分成一系列区间&#xff0c;统计区间频率&#xff0c;并用来表示&#xff0c;以表征其统计特征在图像处理中&#xff0c;直方图可以用来表示图像中像素值的分布状况&#xff0c;描述不同灰度级的像素在图像中的占比直方图…...

《SpringBoot篇》26.SpringBoot整合Jackson超详细教程(附Jackson工具类)

陈老老老板&#x1f9b8;&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;SpringBoot篇&#xff08;主要讲一些与springboot整合相关的内容&#xff09;&#x1f468;‍&#x1f4bb;本文简述&#xff1a;本文讲一下Jackson常见用法&#xff0c;超级详细。&#x1f468;‍&am…...

Redis 如何实现库存扣减操作和防止被超卖?

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…...

(Linux)Ubuntu查看系统版本

uname -a : 查看操作系统的发行版号和操作系统版本 Command: uname -aResult: Linux SERVER 5.19.0-35-generic #36-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 3 18:36:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux uname -v : 查看版本号 Command: uname -vResult: #36-Ubuntu …...

VxWorkds 内存管理(3)

虚拟内存管理 对于带MMU的目标板&#xff0c;VxWorks提供虚拟内存的支持&#xff0c;VxWorks提供了两种虚拟内存管理单元(MMU)的支持: 基本MMU和VxVMI 基本MMU邦定于VxWorks中&#xff0c;可以通过config.h中宏定义INCLUDE MMU BASIC或Tornado工程配置中包含基本MMU组件 VxV…...

单元测试、反射、注解、动态代理

&#x1f3e1;个人主页 &#xff1a; 守夜人st &#x1f680;系列专栏&#xff1a;Java …持续更新中敬请关注… &#x1f649;博主简介&#xff1a;软件工程专业&#xff0c;在校学生&#xff0c;写博客是为了总结回顾一些所学知识点 目录单元测试、反射、注解、动态代理单元测…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...