《Python编程从入门到实践》day24

# 昨日知识点学习

创建外星人从一个到一行

# 主程序snipdef _create_fleet(self):"""创建外星人群"""# 创建一个外星人并计算一行可容纳多少个外星人# 外星人的间距为外星人的宽度alien = Alien(self)alien_width = alien.rect.widthavailable_space_x = self.settings.screen_width - (2 * alien_width)number_aliens_x = available_space_x // (2 * alien_width)# 创建第一行外星人for alien_number in range(number_aliens_x):# 创建一个外星人并将其加入当前行alien = Alien(self)alien.x = alien_width + 2 * alien_width * alien_number# self没有定义rect属性# self.rect.x = alien.xalien.rect.x = alien.xself.aliens.add(alien)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

运行结果:(一行外星人出现)

# 今日知识点学习

        13.3.3 重构_create_fleet()

 # 主程序片段# 创建第一行外星人for alien_number in range(number_aliens_x):self._create_alien(alien_number)def _create_alien(self, alien_number):"""创建一个外星人并将其加入当前行"""alien = Alien(self)alien_width = alien.rect.widthalien.x = alien_width + 2 * alien_width * alien_number        alien.rect.x = alien.xself.aliens.add(alien)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        13.3.4 添加行

               可用的垂直空间=屏幕宽度-第一行外星人的上边距(外星人高度)、飞船的高度以及外星人最初与飞船之间的局里(外星人高度的两倍)

                        available_space_y = settings.screen_height - ( 3 * alien_height) - ship_height

               每行下方的空白区域设为外星人的高度

                        number_rows = available_space_y // ( 2* alien_height)

import sys
import pygame
from Settings import Settings
from Ship import Ship
from alien import Alien
from bullet import Bulletclass AlienInvasion:"""管理游戏资源和行为的类"""def __init__(self):"""初始化游戏并创建游戏资源"""pygame.init()self.settings = Settings()# 非全屏运行self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))# 全屏运行# self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)# self.settings.screen_width = self.screen.get_rect().width# self.settings.screen_height = self.screen.get_rect().height# 设置当前窗口标题pygame.display.set_caption("Alien Invasion")self.ship = Ship(self)# 创建子弹精灵组self.bullets = pygame.sprite.Group()# 创建外星人精灵组self.aliens = pygame.sprite.Group()self._create_fleet()def _create_fleet(self):"""创建外星人群"""alien = Alien(self)alien_width, alien_height = alien.rect.size# 创建一个外星人并计算一行可容纳多少个外星人# 外星人的间距为外星人的宽度available_space_x = self.settings.screen_width - (2 * alien_width)number_aliens_x = available_space_x // (2 * alien_width)# 计算屏幕可容纳多少行外星人ship_height = self.ship.rect.heightavailable_space_y = (self.settings.screen_height - (3 * alien_height) - ship_height)number_rows = available_space_y // (2 * alien_height)# 创建外星人群for row_number in range(number_rows):for alien_number in range(number_aliens_x):self._create_alien(alien_number, row_number)def _create_alien(self, alien_number, row_number):"""创建一个外星人并将其加入当前行"""alien = Alien(self)alien_width, alien_height = alien.rect.sizealien.x = alien_width + 2 * alien_width * alien_numberalien.rect.x = alien.xalien.rect.y = alien.rect.height + 2 * alien.rect.height * row_numberself.aliens.add(alien)def run_game(self):"""开始游戏的主循环"""while True:self._check_events()self.ship.update()self.bullets.update()self._update_bullets()# # 删除消失的子弹# for bullet in self.bullets.copy():#     if bullet.rect.bottom <= 0:#         self.bullets.remove(bullet)# print(len(self.bullets))self._update_screen()def _check_events(self):"""响应按键和鼠标事件"""for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:self._check_keydown_events(event)elif event.type == pygame.KEYUP:self._check_keyup_events(event)def _check_keydown_events(self, event):"""响应按键"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Trueelif event.key == pygame.K_LEFT:self.ship.moving_left = Trueelif event.key == pygame.K_q:sys.exit()elif event.key == pygame.K_SPACE:self._fire_bullet()def _check_keyup_events(self, event):"""响应松开"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Falseelif event.key == pygame.K_LEFT:self.ship.moving_left = Falsedef _fire_bullet(self):"""创建一颗子弹,并将其加入编组bullets中"""if len(self.bullets) < self.settings.bullets_allowed:new_bullet = Bullet(self)self.bullets.add(new_bullet)def _update_screen(self):"""更新屏幕上的图像,并切换到新屏幕。"""self.screen.fill(self.settings.bg_color)self.ship.blitme()for bullet in self.bullets.sprites():bullet.draw_bullet()self.aliens.draw(self.screen)# 让最近绘制的屏幕可见pygame.display.flip()def _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)if __name__ == '__main__':# 创建游戏实例并运行游戏ai = AlienInvasion()ai.run_game()
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

13.4 让外星人移动

         13.4.1 向右移动外星人群

# Settings.py
class Settings():"""存储《外星人入侵》的所有设置的类"""def __init__(self):"""初始化游戏的设置"""# 屏幕设置self.screen_width = int(1200)self.screen_height = int(800)self.bg_color = (230, 230, 230)# 飞船设置self.ship_speed = 1.5# 子弹设置self.bullet_speed = 1.0self.bullet_width = 3self.bullet_height = 15self.bullet_color = (60, 60, 60)self.bullets_allowed = 3# 外星人设置self.alien_speed = 1.0
# alien.py
import pygame
from pygame.sprite import Spriteclass Alien(Sprite):"""表示单个外星人的类"""def __init__(self, ai_game):"""初始化未设置其起始位置"""super().__init__()self.screen = ai_game.screenself.settings = ai_game.settings# 加载外星人图像,并设置其rect属性self.image = pygame.image.load('images/alien.bmp')self.rect = self.image.get_rect()# 每个外星人最初都在屏幕左上角附近self.rect.x = self.rect.widthself.rect.y = self.rect.height# 存储外星人的准确位置self.x = float(self.rect.x)def update(self) :"""向右移动外星人"""self.x += self.settings.alien_speedself.rect.x = self.x
# 主程序snipdef run_game(self):"""开始游戏的主循环"""while True:self._check_events()self.ship.update()self.bullets.update()self._update_bullets()self._update_aliens()self._update_screen()def _update_aliens(self):"""更新外星人群中所有外星人的位置"""self.aliens.update()

运行结果:(外星人向右移动)

        13.4.2 创建表示外星人移动方向的设置 

# Settings.pysnip
# 外星人设置self.alien_speed = 1.0self.fleet_drop_speed = 10# fleet_direction为1表示向右移,为-1表示向左移self.fleet_direction = 1

        13.4.3 检查外星人是否撞到了屏幕边缘

# alien.pysnipdef check_edges(self):"""如果外星人处于屏幕边缘,就返回True"""screen_rect = self.screen.get_rect()if self.rect.right >= screen_rect.right or self.rect.left <= 0:return Truedef update(self) :"""向右移动外星人"""self.x += (self.settings.alien_speed * self.settings.fleet_direction)self.rect.x = self.x

        13.4.4 向下移动外星人群并改变移动方向

# 主程序snip def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()def _check_fleet_edges(self):"""有外星人到达边缘时采取相应的措施"""for alien in self.aliens.sprites():if alien.check_edges():self._change_fleet_direction()breakdef _change_fleet_direction(self):"""将整群外星人下移,并改变它们的方向"""for alien in self.aliens.sprites():alien.rect.y += self.settings.fleet_drop_speedself.settings.fleet_direction *= -1

运行结果:(外星人在屏幕上左右到达屏幕边缘后向下来回移动)

 13.5 射杀外星人

        碰撞:游戏元素重叠在一起

        使用sprite.groupcollide()检测两个编组成员之间的碰撞

        13.5.1 检测子弹与外星人的碰撞

# 主程序
snipdef _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)# 检查是否有子弹击中了外星人# 如果是,就删除相应的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)

        13.5.2 为测试创建大子弹

# Settings.pysnip
# 子弹设置self.bullet_speed = 1.0self.bullet_width = 300self.bullet_height = 15self.bullet_color = (60, 60, 60)self.bullets_allowed = 3

        13.5.3 生成新的外星人群

# 主程序snipdef _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)if not self.aliens:# 删除现有的子弹并新建一群外星人self.bullets.empty()self._create_fleet()

        13.5.4 提高子弹的速度

# Settings.pysnip
# 子弹设置self.bullet_speed = 1.5self.bullet_width = 3self.bullet_height = 15self.bullet_color = (60, 60, 60)self.bullets_allowed = 3# 外星人设置self.alien_speed = 1.0self.fleet_drop_speed = 10# fleet_direction为1表示向右移,为-1表示向左移self.fleet_direction = 1

        13.5.5 重构_update_bullets()        

# 主程序snipdef _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)self._check_bullet_alien_collisions()def _check_bullet_alien_collisions(self):"""相应子弹和外星人碰撞"""# 删除发生碰撞的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)if not self.aliens:# 删除现有的子弹并新建一群外星人self.bullets.empty()self._create_fleet()

13.6 结束游戏

        结束条件:①时间范围内未能完全消灭外星人

                          ②外星人撞到飞船或者抵达屏幕底端

                          ③限制玩家可使用的飞船数,飞船数量用完、

        13.6.1 检测外星人与飞船碰撞        

# 主程序def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()# 检测外星人与飞船之间的碰撞if pygame.sprite.spritecollideany(self.ship, self.aliens):print("Ship hit!!!")

        13.6.2 响应外星人与飞船碰撞

# game_stats.py
class GameStats:"""跟踪游戏的统计信息"""def __init__(self, ai_game):"""初始化统计信息"""self.settings = ai_game.settingsself.reset_stats()def reset_stats(self):"""初始化在游戏运行期间可能变化的统计信息"""self.ships_left = self.settings.ship_limit
# Settings.pysnip
# 飞船设置self.ship_speed = 1.5self.ship_limit = 3
# ship.py
----snip----def center_ship(self):"""让飞船在屏幕底端居中"""self.rect.midbottom = self.screen_rect.midbottomself.x = float(self.rect.x)

 

# 主程序
import sys
from time import sleepimport pygamefrom Settings import Settings
from game_stats import GameStats
from Ship import Ship
from alien import Alien
from bullet import Bulletclass AlienInvasion:"""管理游戏资源和行为的类"""def __init__(self):"""初始化游戏并创建游戏资源"""pygame.init()self.settings = Settings()# 非全屏运行self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))# 全屏运行# self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)# self.settings.screen_width = self.screen.get_rect().width# self.settings.screen_height = self.screen.get_rect().height# 设置当前窗口标题pygame.display.set_caption("Alien Invasion")# 创建一个用于存储游戏统计信息的实例self.stats = GameStats(self)self.ship = Ship(self)# 创建子弹精灵组self.bullets = pygame.sprite.Group()# 创建外星人精灵组self.aliens = pygame.sprite.Group()self._create_fleet()def _create_fleet(self):"""创建外星人群"""alien = Alien(self)alien_width, alien_height = alien.rect.size# 创建一个外星人并计算一行可容纳多少个外星人# 外星人的间距为外星人的宽度available_space_x = self.settings.screen_width - (2 * alien_width)number_aliens_x = available_space_x // (2 * alien_width)# 计算屏幕可容纳多少行外星人ship_height = self.ship.rect.heightavailable_space_y = (self.settings.screen_height - (3 * alien_height) - ship_height)number_rows = available_space_y // (2 * alien_height)# 创建外星人群for row_number in range(number_rows):for alien_number in range(number_aliens_x):self._create_alien(alien_number, row_number)def _create_alien(self, alien_number, row_number):"""创建一个外星人并将其加入当前行"""alien = Alien(self)alien_width, alien_height = alien.rect.sizealien.x = alien_width + 2 * alien_width * alien_numberalien.rect.x = alien.xalien.rect.y = alien.rect.height + 2 * alien.rect.height * row_numberself.aliens.add(alien)def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()# 检测外星人与飞船之间的碰撞if pygame.sprite.spritecollideany(self.ship, self.aliens):self._ship_hit()def _check_fleet_edges(self):"""有外星人到达边缘时采取相应的措施"""for alien in self.aliens.sprites():if alien.check_edges():self._change_fleet_direction()breakdef _change_fleet_direction(self):"""将整群外星人下移,并改变它们的方向"""for alien in self.aliens.sprites():alien.rect.y += self.settings.fleet_drop_speedself.settings.fleet_direction *= -1def _check_events(self):"""响应按键和鼠标事件"""for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:self._check_keydown_events(event)elif event.type == pygame.KEYUP:self._check_keyup_events(event)def _check_keydown_events(self, event):"""响应按键"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Trueelif event.key == pygame.K_LEFT:self.ship.moving_left = Trueelif event.key == pygame.K_q:sys.exit()elif event.key == pygame.K_SPACE:self._fire_bullet()def _check_keyup_events(self, event):"""响应松开"""if event.key == pygame.K_RIGHT:self.ship.moving_right = Falseelif event.key == pygame.K_LEFT:self.ship.moving_left = Falsedef _fire_bullet(self):"""创建一颗子弹,并将其加入编组bullets中"""if len(self.bullets) < self.settings.bullets_allowed:new_bullet = Bullet(self)self.bullets.add(new_bullet)def _update_screen(self):"""更新屏幕上的图像,并切换到新屏幕。"""self.screen.fill(self.settings.bg_color)self.ship.blitme()for bullet in self.bullets.sprites():bullet.draw_bullet()self.aliens.draw(self.screen)# 让最近绘制的屏幕可见pygame.display.flip()def _update_bullets(self):"""更新子弹的位置并消除消失的子弹"""# 更新子弹的位置self.bullets.update()# 删除消失的子弹for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)self._check_bullet_alien_collisions()def _check_bullet_alien_collisions(self):"""相应子弹和外星人碰撞"""# 删除发生碰撞的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)if not self.aliens:# 删除现有的子弹并新建一群外星人self.bullets.empty()self._create_fleet()def _ship_hit(self):"""相应飞船被外星人撞到"""# 将Ship_left减1self.stats.ships_left -= 1# 清空余下的外星人和子弹self.aliens.empty()self.bullets.empty()# 创建一批新的外星人,并将飞船放到屏幕底部的中央self._create_fleet()self.ship.center_ship()# 暂停sleep(0.5)def run_game(self):"""开始游戏的主循环"""while True:self._check_events()self.ship.update()self.bullets.update()self._update_bullets()self._update_aliens()self._update_screen()if __name__ == '__main__':# 创建游戏实例并运行游戏ai = AlienInvasion()ai.run_game()

        13.6.3 有外星人到达屏幕底端

# 主程序def _update_aliens(self):"""检查是否有外星人位于屏幕边缘,并更新外星人的位置"""self._check_fleet_edges()self.aliens.update()# 检测外星人与飞船之间的碰撞if pygame.sprite.spritecollideany(self.ship, self.aliens):self._ship_hit()# 检查是否有外星人到达了屏幕底部self._check_aliens_bottom()def _check_aliens_bottom(self):"""检查是否有外星人到达屏幕底端"""screen_rect = self.screen.get_rect()for alien in self.aliens.sprites():if alien.rect.bottom >= screen_rect.bottom:# 想飞船被撞到一样处理self._ship_hit()break

        13.6.4 游戏结束

# 主程序
----snip----def _ship_hit(self):"""响应飞船被外星人撞到"""if self.stats.ships_left > 0:# 将Ship_left减1self.stats.ships_left -= 1# 清空余下的外星人和子弹self.aliens.empty()self.bullets.empty()# 创建一批新的外星人,并将飞船放到屏幕底部的中央self._create_fleet()self.ship.center_ship()# 暂停sleep(0.5)else:self.stats.game_active = False# game_stats.pyclass GameStats:"""跟踪游戏的统计信息"""def __init__(self, ai_game):"""初始化统计信息"""self.settings = ai_game.settingsself.reset_stats()# 游戏在刚启动时处于活动状态self.game_active = Truedef reset_stats(self):"""初始化在游戏运行期间可能变化的统计信息"""self.ships_left = self.settings.ship_limit

13.7 确定应运行游戏的哪些部分

# 主程序
---snip---def run_game(self):"""开始游戏的主循环"""while True:self._check_events()if self.stats.game_active:self.ship.update()self.bullets.update()self._update_bullets()self._update_aliens()self._update_screen()---snip---

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型常用微调数据集

文章目录 指令微调数据集人类对齐数据集 为了增强模型的任务解决能力&#xff0c;大语言模型在预训练之后需要进行适应性微调&#xff0c;通常涉及两个主要步骤&#xff0c;即指令微调&#xff08;有监督微调&#xff09;和对齐微调。 指令微调数据集 在预训练之后&#xff0c…

动手学深度学习——多层感知机

1. 感知机 感知机本质上是一个二分类问题。给定输入x、权重w、偏置b&#xff0c;感知机输出&#xff1a; 以猫和狗的分类问题为例&#xff0c;它本质上就是找到下面这条黑色的分割线&#xff0c;使得所有的猫和狗都能被正确的分类。 与线性回归和softmax的不同点&#xff1…

Ubuntu/Linux 安装Docker + PyTorch

文章目录 1. 提前准备2. 安装Docker2.1. 卸载冲突软件&#xff08;非必要&#xff09;2.2. 在Ubuntu系统上添加Docker的官方GPG密钥2.3. 将Docker的仓库添加到Ubuntu系统的APT源列表中2.4. 安装最新Docker2.5. 检查 3. 安装Nvidia Container Toolkit3.1. 在Ubuntu系统上添加官方…

求一个B站屏蔽竖屏视频的脚本

求一个B站屏蔽竖屏视频的脚本 现在B站竖屏竖屏越来越多了&#xff0c;手机还好点给我一个按钮&#xff0c;选择不喜欢&#xff0c;但是我一般都用网页版看视屏&#xff0c;网页版不给我选择不喜欢的按钮&#xff0c;目测大概1/4到1/3的视频都是竖屏视频。 目前网页版唯一的进…

MarkText 下载安装和运行

1 官网页面 2 Github 页面 3 选择合适的版本&#xff0c;下载后运行。 附录&#xff1a; 官网&#xff1a; https://www.marktext.cc/ Github 地址&#xff1a; https://github.com/marktext/marktext/releases 目前最新版 v0.17.1&#xff0c;Mar 8, 2022。

二叉树的遍历(前序 中序 后序)

一、前序遍历 顺序为&#xff1a; 根-->左子树---->右子树 先访问根节点&#xff0c;再递归进入根节点的左子树&#xff08;通过递归不断往下遍历&#xff09;&#xff0c;直到访问的节点没有左子树&#xff0c;此时递归进入其右子树&#xff08;通过递归进行相同操作&a…

有限单元法-编程与软件应用(崔济东、沈雪龙)【PDF下载】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

在centos7中运行向量数据库PostgreSQL连接不上如何排查?

1. 检查 PostgreSQL 服务状态 首先&#xff0c;您需要确认 PostgreSQL 服务是否正在运行。您可以使用以下命令来检查服务状态&#xff1a; sudo systemctl status postgresql如果服务没有运行&#xff0c;您需要启动它&#xff1a; sudo systemctl start postgresql2. 确认 …

OSPF链路状态数据库

原理概述 OSPF是一种基于链路状态的动态路由协议&#xff0c;每台OSPF路由器都会生成相关的LSA&#xff0c;并将这些LSA通告出去。路由器收到LSA后&#xff0c;会将它们存放在链路状态数据库LSDB中。 LSA有多种不同的类型&#xff0c;不同类型的LSA的功能和作用是不同的&…

【智能优化算法】金豺狼优化算法(Golden jackal optimization,GJO)

金豺狼优化(Golden jackal optimization,GJO)是期刊“Expert Systems with Applications”&#xff08;中科院一区IF 8.3&#xff09;的2022年智能优化算法 01.引言 金豺狼优化(Golden jackal optimization,GJO)旨在为解决实际工程问题提供一种替代的优化方法。GJO的灵感来自金…

【智能优化算法】卷尾猴搜索算法(Capuchin search algorithm,CapSA)

【智能优化算法】卷尾猴搜索算法(Capuchin search algorithm,CapSA)是期刊“NEURAL COMPUTING & APPLICATIONS”&#xff08;IF 6.0&#xff09;的2021年智能优化算法 01.引言 【智能优化算法】卷尾猴搜索算法(Capuchin search algorithm,CapSA)用于解决约束和全局优化问…

VMware Workstation 17 Player 创建虚拟机教程

本教程是以windows server 2012物理机服务器安装好的VMware Workstation 17 Player为例进行演示&#xff0c;安装VMware Workstation 17 Player大家可以自行网上搜索安装。 1、新建虚拟机 双击安装好的VMvare图标&#xff0c;点击创建虚拟机。 2、选择是否安装系统 本步骤选…

【静态分析】软件分析课程实验A4-类层次结构分析与过程间常量传播

官网&#xff1a;作业 4&#xff1a;类层次结构分析与过程间常量传播 | Tai-e 参考&#xff1a;https://www.cnblogs.com/gonghr/p/17984124 ----------------------------------------------------------------------- 1 作业导览 为 Java 实现一个类层次结构分析&#xf…

shiro-quickstart启动报错

说明&#xff1a;最近在学登录框架&#xff0c;记录一下学习刚shiro框架&#xff0c;启动快速入门样例的错误&#xff1b; 场景 把shiro代码download下来&#xff0c;打开samples&#xff08;样例&#xff09;包&#xff0c;打开快速入门&#xff0c;启动&#xff0c;报错&am…

聊天室项目思路

发起群聊&#xff1a; 从好友表选取人发送到服务器&#xff0c;服务器随机生成不重复的群号&#xff0c;存储在数据库&#xff0c;同时建立中间表&#xff0c;处理用户与群聊的关系 申请入群&#xff1a; 输入群号&#xff0c;发消息给服务器&#xff0c;服务器查询是否存在…

06-xss攻防于绕过

xss的攻击于防御 攻击的利用方式 1&#xff09;获取cookie&#xff0c;实现越权&#xff0c;如果是获取到网站管理员的cookie&#xff0c;也可以叫提权。注意尽量尽快退出账号&#xff0c;删除session&#xff0c;让session失效 2&#xff09;钓鱼网站&#xff0c;模拟真实的…

Android 按钮Button点击音效

一、新建工程 编译运行&#xff0c;确保工程无误&#xff0c;这里不过多赘述。 二、UI布局 添加两个播放音效Button <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"…

leetcode-括号生成-101

题目要求 思路 1.左括号的数量等于右括号的数量等于n作为判出条件&#xff0c;将结果存到res中 2.递归有两种&#xff0c;一种是增加左括号&#xff0c;一种是增加右括号&#xff0c;只要左括号的数量不超过n&#xff0c;就走增加左括号的递归&#xff0c;右括号的数量只要小于…

element ui的table多选

使用el-table的selection-change事件来获取选中的值&#xff1b; 例&#xff1a; html代码&#xff1a; <el-button type"primary" click"openTableSet">列表设置</el-button><!-- 列表设置弹框 --> <el-dialog :close-on-click-mo…

【文化课学习笔记】【物理】功与能

【物理】功与能 功 基础概念 定义 一个物体在力的作用下&#xff0c;沿力的方向&#xff0c;通过一段距离(位移)&#xff0c;则称这个力做了功。 公式 功的定义式&#xff1a; \[W Fx \] 这里的 \(x\) 指的是物体沿力的方向上发生的位移。由于力 \(F\) 和位移 \(x\) 都是矢量&…