外星人入侵游戏-(创新版)

🌈write in front🌈
🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️
📝个人主页:Aileen_0v0🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0🧸的PYTHON学习系列专栏——CSDN博客
🗼我的格言:"没有罗马,那就自己创造罗马~" 

目录

首先,在python上 安装pygame

然后,创建文件夹 要注意分级别​

 插入的图片

主函数 Aileen_invasion的文件

创建外星人aileen的文件

子弹bullet的文件

按钮button的文件

 游戏数据game_stats的文件

游戏分数scoreboard的文件

游戏设置settings的文件 

游戏飞船ship的文件

​编辑 全屏模式下的游戏

​编辑

小窗口下的游戏


首先,在python上 安装pygame

资源--->https://download.csdn.net/download/Aileenvov/88301424?spm=1001.2014.3001.5503

然后转到228页,根据步骤进行安装

然后,创建文件夹 要注意分级别

 插入的图片

插入图片:需要注意图片的大小比例,否则可能显示不出来,这需要根据系统屏幕大小进行设置,

将所需要的图片和音乐拖到对应的文件夹,这是我的图片

主函数 Aileen_invasion的文件

import sys
from time import sleep
import pygame
from settings import Settings
from game_starts import GameStats
from scoreboard import Scoreboard
from button import Button
from ship import Ship
from bullet import Bullet
from aileen import Aileen
class AileenInvasion:"""Overall class to manage game assets and behavior.整体类来管理游戏资产和行为"""def __init__(self):#初始化"""Initialize the game, and create game resources."""pygame.init()self.settings = Settings()self.screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN)self.settings.screen_width = self.screen.get_rect().widthself.settings.screen_height = self.screen.get_rect().height# self.screen = pygame.display.set_mode(#     (self.settings.screen_width,self.settings.screen_height))#类中变量前有self,说明该变量绑定在当前实例化本身pygame.display.set_caption("Aileen Invasion")# Creation an instance to store game statistics.self.stats = GameStats(self)# Create an instance to store game statics,# and create a scoreboard.self.sb = Scoreboard(self)self.ship = Ship(self)self.bullets = pygame.sprite.Group()#Group可以批量使用的函数self.aileens = pygame.sprite.Group()self._create_fleet()#Make the play button.self.play_button = Button(self,"Play")self.bg_color =(0,0,225)  #代表红 绿 蓝 三颜色# def _create_fleet(self):#     """Create the fleet of aileens."""#     #Make a aileen#     aileen = Aileen(self)#     self.aileens.add(aileen)#     #set the background color.def run_game(self): #功能:1监听事件,2处理事件,3更新屏幕事件"""Start the main loop for the game."""while True:# 1监听事件函数--监听和处理用户的行为self._check_events()#将监听事件(封装)外包给这个函数,减轻run_game的工作量---这个过程叫重构(refactory)if self.stats.game_active:# 2处理事件函数self.ship.update()#更新子弹self._update_bullets()self._update_aileens()# 3 屏幕更新函数self._update_screen()def _update_bullets(self):self.bullets.update()if not self.aileens:# Destory existing  bullets and create new fleetself.bullets.empty()self._create_fleet()# Get rid of the bullets that have disappeared.for bullet in self.bullets.copy():if bullet.rect.bottom <= 0:self.bullets.remove(bullet)self._check_bullet_aileen_collisions()def _check_bullet_aileen_collisions(self):"""Respond to bullet-aileen collisions."""""" Remove any bullets and aileens that have collided  """#👇collisions = pygame.sprite.groupcollide(self.bullets, self.aileens,True,True)if collisions:  #collision是字典类型变量# for aileens in collisions.values():self.stats.score += self.settings.aileen_points  #* len(aileens)for aileens in collisions.values():self.stats.score += self.settings.aileen_points * len(aileens)self.sb.prep_score()self.sb.check_high_score()self.sb.prep_high_score()if not self.aileens:# Destory existing bullets and create new fleet.self.bullets.empty()self._create_fleet()self.settings.increase_speed()# Increase levelself.stats.level += 1self.sb.prep_level()# print(len(self.bullets))# Watch for keyboard and mouse events.  监听用户在做什么操作--这里设置游戏菜单栏def _check_events(self): ##--snip--"""Respond to keypress and mouse events"""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)elif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()self._check_play_button(mouse_pos)def _check_play_button(self,mouse_pos):"""Start a new game when the player clicks Play."""button_clicked = self.play_button.rect.collidepoint(mouse_pos)if button_clicked and not self.stats.game_active:# Hide the mouse cursor.pygame.mouse.set_visible(False)# Reset the game statistics.self.stats.reset_stats()self.stats.game_active = True# 确保分数清0self.sb.prep_score()self.sb.prep_level()self.sb.prep_ships()# Get rid of any remaining aileens and bullets.self.aileens.empty()self.bullets.empty()#Create  A new fleet and center the ship.self._create_fleet()self.ship.center_ship()#Reset the game settings.self.settings.initialize_dynamic_settings()pygame.mixer.init()pygame.mixer.music.load("music/香香 - 猪之歌.mp3")# pygame.mixer.music.set_volume(2)pygame.mixer.music.play()def _check_keydown_events(self,event):"""Respond to keypress"""#判断右键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_UP:self.ship.moving_up = Trueelif event.key == pygame.K_DOWN:self.ship.moving_down = Trueelif event.key == pygame.K_q:#按q键退出游戏sys.exit()elif event.key == pygame.K_SPACE:self._fire_bullet()def _check_keyup_events(self,event):"""Respond to key release."""if event.key == pygame.K_RIGHT:self.ship.moving_right = Falseelif event.key == pygame.K_LEFT:self.ship.moving_left = False# Move the ship to the right.self.ship.rect.x += 1elif event.key == pygame.K_m:self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)self.settings.screen_width =self.screen.get_rect().widthself.settings.screen_height = self.screen.get_rect().heightself.ship = Ship(self)self.aliens = pygame.sprite.Group()self._create_fleet()elif event.key == pygame.K_n:self.settings = Settings()self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))self.ship = Ship(self)self.aliens = pygame.sprite.Group()self._create_fleet()elif event.key == pygame.K_UP:self.ship.moving_up = Falseelif event.key == pygame.K_DOWN:self.ship.moving_down = Falsedef _fire_bullet(self):"""create a new bullet and add it to the bullets group."""if len(self.bullets) < self.settings.bullets_allowed:new_bullet = Bullet(self)self.bullets.add(new_bullet)def _create_fleet(self):#self传的也是ai"""Create the fleet of aileens."""#Create an aileen  and find the number of aileens in a row#Spacing between each aileen is equal to one aileen width.aileen = Aileen(self)aileen_width, aileen_height  = aileen.rect.sizeavailable_space_x = self.settings.screen_width - (2 * aileen_width)print(available_space_x)print(self.settings.screen_width)print(2 * aileen_width)number_aileen_x = available_space_x // (2 * aileen_width)# Determine the number of rows of aileens that fit on the screen.ship_height =self.ship.rect.heightavailable_space_y = (self.settings.screen_height -(3 * aileen_height) - ship_height)number_rows = available_space_y // (2 * aileen_height)#Create the first row of aileens.for row_number in range(number_rows):for aileen_number in range(number_aileen_x):self._create_aileen(aileen_number, row_number)def _create_aileen(self,aileen_number, row_number):# Create an aileen and place it in row.# Make a aileenaileen = Aileen(self)aileen_width, aileen_height =aileen.rect.sizeaileen.x = aileen_width + 2 * aileen_width * aileen_numberaileen.rect.x = aileen.xaileen.rect.y = aileen.rect.height + 2 * aileen.rect.height * row_numberself.aileens.add(aileen)def _check_aileens_bottom(self):"""Check if any aileens have reached the bottom of the screen."""screen_rect = self.screen.get_rect()for aileen in self.aileens.sprites():if aileen.rect.bottom >= screen_rect.bottom:#Treat this the same as if the ship got hit.self._ship_hit()break# Redraw the screen during each  pass through the loop.  更新画布颜色def _update_aileens(self):"""Check if the fleet is at an edge,then update the positions of all aliens in the fleet."""self._check_fleet_edges()"""Update the positions of all aileens in the fleet."""self.aileens.update()# Look for aileen-ship collisions.if pygame.sprite.spritecollideany(self.ship, self.aileens):self._ship_hit()print("Ship hit!!!")# Look for aileens hitting the bottom of the screenself._check_aileens_bottom()def _check_fleet_edges(self):"""Respond appropriately if any aileens have reached an edge."""for aileen in self.aileens.sprites():if aileen.check_edges():self._change_fleet_direction()breakdef _change_fleet_direction(self):"""Drop the entire fleet and change the fleet's direction."""for aileen in self.aileens.sprites():aileen.rect.y += self.settings.fleet_drop_speedself.settings.fleet_direction *= -1def _ship_hit(self):"""Respond to the ship being hit by an allien"""if self.stats.ships_left > 0:# Decrement ships_left.and update scoreboardself.stats.ships_left -= 1self.sb.prep_ships()# Get rid of any remaining aileens and bullets.self.aileens.empty()self.bullets.empty()# Create a new fleet and center the ship.self._create_fleet()self.ship.center_ship()# Pausesleep(0.5)else:self.stats.game_active = Falsepygame.mouse.set_visible(True)def _update_screen(self):"""Update images on the screen , and flip to the new screen"""self.screen.fill(self.settings.bg_color)self.ship.blitme()for bullet in self.bullets.sprites():bullet.draw_bullet()self.aileens.draw(self.screen)#Draw the score information.self.sb.show_score()# Draw the play button if the games is inactive.if not self.stats.game_active:self.play_button.draw_button()self.bullets.draw(self.screen)pygame.display.flip()def check_high_score(self):"""Check to see if there's a new high score."""if self.stats.score > self.stats.high_score:self.stats.high_score = self.stats.scoreself.prep_high_score()if __name__ == '__main__':#  Make a game instance , and run the game.ai = AileenInvasion()#游戏本身的实例化,ai就是那个AileenInvasionai.run_game()

创建外星人aileen的文件

import pygame
from pygame.sprite import Spriteclass Aileen(Sprite):"""A class to represent a single alien in the fleet"""def __init__(self,ai_game):"""Initilize the aileen and set its starting position."""super().__init__()self.screen = ai_game.screenself.settings = ai_game.settings# Load the aileen image and set its rect attribute.self.image = pygame.image.load("images/aileen.png")self.rect = self.image.get_rect()# Start each new aileen near the top left of the screen.self.rect.x = self.rect.width#将矩形左上角的值作为外星人的宽度self.rect.y = self.rect.height#通过飞船左上角的坐标来控制其它图片的位置#Store the aileen's exact horizontal position.self.x = float(self.rect.x)def check_edges(self):"""Return True if aileen is at edge of screen"""screen_rect = self.screen.get_rect()if self.rect.right >= screen_rect.right or self.rect.left <= 0:return Truedef update(self):"""Move the aileen to the right or left"""self.x += (self.settings.aileen_speed *self.settings.fleet_direction)self.rect.x = self.x

子弹bullet的文件

import pygame
import random
from pygame.sprite import Spriteclass Bullet(Sprite):#子弹bullet继承Sprite类--继承"""A class to manage bullets fired from the ship"""def __init__(self,ai_game):"""Create a bullet object at the ship's current position"""super().__init__()#调用父类初始化函数self.screen = ai_game.screenself.settings = ai_game.settingsself.color = self.settings.bullet_color# Load the aileen image and set its rect attribute.self.bullet_images = [pygame.image.load("images/heart.png"),pygame.image.load("images/banana.png"),pygame.image.load("images/cherry.png")]self.image = random.choice(self.bullet_images)self.rect = self.image.get_rect()#Create a bullet rect at(0,0) and then set correct position.self.rect =pygame.Rect(0,0,self.settings.bullet_width,self.settings.bullet_height)self.rect.midtop =ai_game.ship.rect.midtop#利用ai将船和子弹初始位置绑定,使得子弹在船中上方# Store the bullet's position as a decimal value.self.y = float(self.rect.y)def update(self):"""move the bullet up the screen."""#update the decimal position of the bullet.self.y -= self.settings.bullet_speed#update the rect position.self.rect.y = self.ydef draw_bullet(self):"""draw the bullet to the screen"""self.screen.blit(self.image,self.rect)pygame.draw.rect(self.screen, self.color, self.rect)

按钮button的文件

import  pygame.fontclass Button:def __init__(self,ai_game,msg):"""Initialize button attributes."""self.screen = ai_game.screenself.screen_rect = self.screen.get_rect()# Set the dimensions and properties(财产,属性==attributes) of the buttonself.width, self.height = 200, 50self.button_color = (0, 255, 0)self.text_color = (255,255,255)self.font = pygame.font.SysFont(None, 48)# Build the button's rect object and center it.self.rect = pygame.Rect(0,0,self.width,self.height)self.rect.center = self.screen_rect.center# The button message needs to be prepped(准备) only once.self._prep_msg(msg)def _prep_msg(self,msg):"""Turn msg into a rendered image and center and center text on the button."""self.msg_image = self.font.render(msg,True, self.text_color,self.button_color)self.msg_image_rect = self.msg_image.get_rect()self.msg_image_rect.center = self.rect.centerdef draw_button(self):# Draw blank button and then draw message.self.screen.fill(self.button_color,self.rect)self.screen.blit(self.msg_image,self.msg_image_rect)

 游戏数据game_stats的文件

class GameStats:"""Track statics for Aileen Invasion."""def __init__(self,ai_game):# High score should never be reset.self.high_score = 0# Start Aileen Invasion in an active state.self.game_active = True"""Initiallize statistics."""self.settings = ai_game.settingsself.reset_stats()# Start game in an inactive state.self.game_active = Falsedef reset_stats(self):"""Initialize statistics that can change during the game."""self.ships_left = self.settings.ship_limitself.score = 0self.level=1

游戏分数scoreboard的文件

import pygame.font
from pygame.sprite import Group
from ship import Shipclass Scoreboard:"""A class to report scoring information."""def __init__(self,ai_game):"""Initialize scorekeeping attributes."""self.ai_game = ai_gameself.screen = ai_game.screenself.screen_rect = self.screen.get_rect()self.settings = ai_game.settingsself.stats = ai_game.stats# Font settings for scoring information.self.text_color = (30,30,30)self.font = pygame.font.SysFont(None,48)#Prepare the initial score image.self.prep_score()self.prep_high_score()self.prep_level()self.prep_ships()def prep_ships(self):"""Show how many ships are left."""self.ships = Group ()for ship_number in range(self.stats.ships_left):ship= Ship(self.ai_game)ship.rect.x = 10 + ship_number * ship.rect.widthship.rect.y = 10self.ships.add(ship)def prep_score(self):"""Turn the score into a rendered image (将分数转换为渲染图像)"""score_str = str(self.stats.score)"""Turn the score into a rendered image."""rounded_score = round(self.stats.score,-1)score_str = "{:,}".format(rounded_score)  #round 取整self.score_image = self.font.render(score_str,True,self.text_color,self.settings.bg_color)#Display the score at the top right of the screen.self.score_rect = self.score_image.get_rect()self.score_rect.right = self.screen_rect.right - 20self.score_rect.top = 20def prep_high_score(self):"""Turn the high score into a rendered image"""high_score = round(self.stats.high_score,-1)high_score_str = "{:,}".format(high_score)self.high_score_image = self.font.render(high_score_str,True,self.text_color,self.settings.bg_color)# Center the high score at the top of the screen.self.high_score_rect = self.high_score_image.get_rect()self.high_score_rect.centerx = self.screen_rect.centerxself.high_score_rect.top = self.score_rect.topdef check_high_score(self):"""Check to see if there's a new high score."""if self.stats.score > self.stats.high_score:self.stats.high_score = self.stats.scoreself.prep_high_score()def prep_level(self):"""Turn the level into a rendered image."""level_str = str(self.stats.level)self.level_image = self.font.render(level_str,True,self.text_color,self.settings.bg_color)#Position the level below the score.self.level_rect = self.level_image.get_rect()self.level_rect.right = self.score_rect.rightself.level_rect.top = self.score_rect.bottom + 10def show_score(self):"""Draw score,level,and ships to the screen"""self.screen.blit(self.score_image,self.score_rect)self.screen.blit(self.high_score_image,self.high_score_rect)self.screen.blit(self.level_image,self.level_rect)self.ships.draw(self.screen)

游戏设置settings的文件 

class Settings:"""A class store all settings for Aileen Invasion."""def __init__(self):"""Initialize the game'settings """#Ship settingsself.ship_speed = 1.5self.ship_limit = 3# Screen settingsself.screen_width =1200self.screen_height=800self.bg_color =(255,255,255)# Bullet settingsself.bullet_speed = 1self.bullet_width = 3self.bullet_height = 15self.bullet_color = (60,60,60)self.bullets_allowed = 3#Aileen settingsself.aileen_speed = 1.0self.fleet_drop_speed = 10# How quickly the game speeds upself.speedup_scale = 2# How quickly the aileen point values increaseself.score_scale =1.5self.initialize_dynamic_settings()def initialize_dynamic_settings(self):"""Initialize speed settings"""self.ship_speed = 1.5self.bullet_speed = 1.5self.aileen_speed = 10# Scoringself.aileen_points =50# fleet_direction of 1 represents right ; -1 represents left.self.fleet_direction = 1def increase_speed(self):"""Increase speed settings""""""Increase speed settings and aileen point values"""self.ship_speed *= self.speedup_scaleself.bullet_speed *= self.speedup_scaleself.aileen_speed *= self.speedup_scaleself.aileen_points = int(self.aileen_points * self.score_scale)print(self.aileen_points)

游戏飞船ship的文件

import  pygame
from pygame.sprite import Spriteclass Ship(Sprite):"""A class to manage the ship."""def __init__(self,ai_game):"""Initialize the ship and set its starting position."""super().__init__()self.screen = ai_game.screenself.settings = ai_game.settingsself.screen_rect = ai_game.screen.get_rect()#返回窗口矩形# Load the ship image and get its rect.self.image = pygame.image.load("images/ship.png")self.rect=self.image.get_rect()#取得屏幕的矩形 rect=rectangle 拿到图片矩形# Start each new ship at the bottom center of the screen.self.rect.midbottom = self.screen_rect.midbottom#通过赋值:图片的中下方的坐标,等于屏幕中下方的坐标# Store a decimal value for the ship's horizontal position.self.x = float(self.rect.x)self.y = float(self.rect.y)# Movement flagself.moving_right =Falseself.moving_left =Falseself.moving_up =Falseself.moving_down =Falsedef center_ship(self):"""Center the ship on the screen"""self.rect.midbottom = self.screen_rect.midbottomself.x = float(self.rect.x)def update(self):"""Update the ship's position based on the movement flag"""# Update the ship's value, not the rect.# if self.moving_right:if self.moving_right and self.rect.right < self.screen_rect.right:self.x += self.settings.ship_speed#不断增加飞船左上角的横坐标带动图片移动self.rect.x += 1# if self.moving_left:if self.moving_left and self.rect.left > 0:self.x -= self.settings.ship_speedself.rect.x -= 1#topif self.moving_up and self.rect.top > 720 :self.y -= self.settings.ship_speedself.rect.y -= 1if self.moving_down and self.rect.bottom < self.screen_rect.bottom:self.y += self.settings.ship_speedself.rect.y += 1def blitme(self):#渲染函数,让图片显示出来"""Draw the ship at its current location."""self.screen.blit(self.image,self.rect)

 全屏模式下的游戏

小窗口下的游戏

🐖今天的打猪游戏就分享到这里啦~🐖

🐖喜欢就一键三连支持一下吧~🐖

🐖谢谢家人们!🐖

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

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

相关文章

【Tensorflow 2.12 电影推荐项目搭建】

Tensorflow 2.12 电影推荐项目搭建 学习笔记工具、环境创建项目项目配置安装相关python包召回模型实现排序模型实现实现电影推荐导入模块设置要推荐的用户召回推荐排序推荐推荐结果结尾学习笔记 Tensorflow 2.12 电影推荐项目搭建记录~ Tensorflow是谷歌开源的机器学习框架,可…

再次理解Android账号管理体系

目录 ✅ 0. 需求 &#x1f4c2; 1. 前言 &#x1f531; 2. 使用 2.1 账户体系前提 2.2 创建账户服务 2.3 操作账户-增删改查 &#x1f4a0; 3. 源码流程 ✅ 0. 需求 试想&#xff0c;自己去实现一个账号管理体系&#xff0c;该如何做呢&#xff1f; ——————————…

MySQL 学习笔记(基础)

首先解释数据库DataBase&#xff08;DB&#xff09;&#xff1a;即存储数据的仓库&#xff0c;数据经过有组织的存储 数据库管理系统DataBase Management System&#xff08;DBMS&#xff09;&#xff1a;管理数据库的软件 SQL&#xff08;Structured Query Language&#xf…

3D视觉到三维视觉之结构光

3D视觉是计算机视觉的终极体现形式 2D视觉技术主要在二维空间下完成工作&#xff0c;三维信息基本上没有得到任何利用&#xff0c;而三维信息才真正能够反映物体和环境的状态&#xff0c;也更接近人类的感知模式。近年来&#xff0c;学术界和工业界推出了一系列优秀的算法和产…

redis 哨兵(sentinel)机制

1. 前言 sentinel&#xff08;哨兵&#xff09;是Redis 的高可用性解决方案之一。通过哨兵可以创建一个当主服务器出现故障时自动将从服务器升级为主服务器的分布式系统&#xff0c;解决了主从复制出现故障时需要人为干预的问题。 redis 的主从复制的作用有数据预热、负载均衡…

【初阶数据结构】树(tree)的基本概念——C语言

目录 一、树&#xff08;tree&#xff09; 1.1树的概念及结构 1.2树的相关概念 1.3树的表示 1.4树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 二、二叉树的概念及结构 2.1二叉树的概念 2.2现实中真正的二叉树 2.3特殊的二叉树 2.4二叉树的性质…

使用 Feature Flags 实现数据库灰度迁移的监控与可观测性

作者&#xff1a;观测云与胡博 场景描述 很多企业会遇到数据库升级、或数据库迁移的情况&#xff0c;尤其是在自建数据库服务向云数据库服务、自建机房向云机房、旧数据库向新数据库迁移等场景。 然而&#xff0c;我们需要在整个移植过程中保证其稳定性、避免数据遗失、服务宕…

获取spring容器中的bean实例

在开发过程中&#xff0c;我们可能需要动态获取spring容器中的某个bean的实例&#xff0c;此时我们就会用到ApplicationContext spring应用上下文&#xff0c;这里做一下记录&#xff0c;网上很多类似的的工具类。 先写好工具类再测试一下是否好用 工具类&#xff1a; packag…

【pytest】生成测试报告

0. 脚本&#xff1a; fixture/test_fixtures_02.py # 功能函数 import pytestdef multiply(a, b):return a * bclass TestMultiply:# fixturesclassmethoddef setup_class(cls):print("setup_class>")classmethoddef teardown_class(cls):print("teardown_c…

最小二乘法

Least Square Method 1、相关的矩阵公式2、线性回归3、最小二乘法3.1、损失函数&#xff08;Loss Function&#xff09;3.2、多维空间的损失函数3.3、解析法求解3.4、梯度下降法求解 1、相关的矩阵公式 P r e c o n d i t i o n : ξ ∈ R n , A ∈ R n ∗ n i : σ A ξ σ ξ…

Linux驱动之INPUT设备驱动

目录 一、开发环境 二、编写按键input设备的注册与事件上报 2.1 修改设备树文件 1 添加 pinctrl 节点 2、添加 KEY 设备节点 3、检查 PIN 是否被其他外设使用 2.2 驱动程序编写 2.3 测试APP编写 2.4 运行测试 三、Linux内核自带按键input设备驱动 3.1 自带按键驱动程序源码简…

C#实现钉钉自定义机器人发送群消息帮助类

一、自定义机器人发送群消息使用场景 在企业中,针对一些关键指标内容(如每天的生产产量、每天的设备报警信息等信息),需要同时给多人分享,此时就可以将需要查看这些数据的人员都拉到一个群中,让群里的机器人将这些关键指标内容推送到群里即可【(目前已实现在钉钉群里创建…

Web 器学习笔记(基础)

Filter 过滤器 概念&#xff1a;表示过滤器&#xff0c;是 JavaWeb 三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一 作用&#xff1a;顾名思义可以过滤资源的请求&#xff0c;并实现特殊的需求 Filter 接口及它核心的 doFilter() 方法&#xff08;执行前就是…

Excel 公式函数:学习基本示例

数据准备 对于本教程&#xff0c;我们将使用以下数据集。 家居用品预算 S / N项目数量价格小计价格适中吗&#xff1f;1芒果96002橘子312003番茄125004食用油565005汤力水133900 房屋建筑项目时间表 S/NITEM开始日期结束日期持续时间&#xff08;天&#xff09;1调查土地0…

000_差分信号

1.什么是差分信号 差分信号又叫做差模信号&#xff0c;使用差分信号传输时&#xff0c;需要2根信号线&#xff0c;这2根信号线的振幅相等&#xff0c;相位相反&#xff0c;通过2根信号线的电压差值来表示逻辑0和逻辑1。 差分信号表示逻辑值如下图&#xff1a; 2.差分信号的特…

IDEA2023.2.1中创建第一个Tomcat的web项目

首先&#xff0c;创建一个普通的java项目。点击【file】-【new】-【project】 创建一个TomcatDemo项目 创建如下图 添加web部门。点击【file】-【project structure】 选择【modules】-选中项目“TomcatDemo” 点击项目名上的加号【】&#xff0c;添加【web】模块 我们就会发现…

【Vue】快速入门案例与工作流程的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Vue快速入门》。&#x1f…

Springboot 实践(18)Nacos配置中心参数自动刷新测试

前文讲解了Nacos 2.2.3配置中心的服务端的下载安装&#xff0c;和springboot整合nacos的客户端。Springboot整合nacos关键在于使用的jar版本要匹配&#xff0c;文中使用版本如下&#xff1a; ☆ springboot版本: 2.1.5.RELEASE ☆ spring cloud版本 Greenwich.RELEASE ☆ sp…

学信息系统项目管理师第4版系列09_配置管理

1. 配置管理 1.1. 应用技术的和管理的指导和监控方法以标识和说明配置项的功能和物理特征&#xff0c;控制这些特征的变更&#xff0c;记录和报告变更处理和实现状态并验证与规定的需求的遵循性 1.1.1. GB/T 11457《信息技术软件工程术语》 2. 配置项 2.1. Configuration I…

Scapy 解析 pcap 文件从HTTP流量中提取图片

Scapy 解析 pcap 文件从HTTP流量中提取图片 前言一、网络环境示例二、嗅探流量示例三、pcap 文件处理最后参考 ​ 作者&#xff1a;高玉涵 ​ 时间&#xff1a;2023.9.17 10:25 ​ 环境&#xff1a;Linux kali 5.15.0-kali3-amd64&#xff0c;Python 3.11.4&#xff0c;scapy…