藁城网站建设哪家好/百度极速版免费下载安装

藁城网站建设哪家好,百度极速版免费下载安装,邯郸有什么互联网大公司吗,手机app开发网站建设这个游戏简而言之就是操作一个飞机对前方的飞船进行射击,和一款很久之前的游戏很像,这里是超级低配版那个游戏,先来看看效果图: 由于设计的是全屏的,所以电脑不能截图。。。。 下面的就是你操控的飞船,上面…

这个游戏简而言之就是操作一个飞机对前方的飞船进行射击,和一款很久之前的游戏很像,这里是超级低配版那个游戏,先来看看效果图:

由于设计的是全屏的,所以电脑不能截图。。。。

下面的就是你操控的飞船,上面的是要消灭的外星舰队,左上角是剩余的生命,中间是历史最高分,右边是当前分数以及当前阶段。

每当你消灭完整个外星舰队时,就会进入下一阶段,各种属性都会得到提升。下面话不多说,直接展示完整代码:

1.image

首先是图片素材,我都放在了image这个文件夹里面:

可以直接复制我这个图片,我这个后缀是bmp,如果用网上找的图片的话要注意一下后缀问题,不然有一部分代码会报错的,需要自己更改

2.alian_invasion.py

这个是整个项目的主文件,运行的时候要在这个文件下面运行,里面注释写的比较完整,可以直接看详细的注释,相关代码如下:

import sys
import pygamefrom settings import Settings
from ship import Ship
from bullet import Bullet
from alien import  Alien
from time import sleep
from game_stats import GameStats
from button import Button
from scoreboard import Scoreboardclass AlienInvasion():"""管理游戏资源和行为的类"""def __init__(self):"""初始化游戏并创建游戏资源"""pygame.init()self.clock = pygame.time.Clock()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().heightpygame.display.set_caption("Alien Invasion")#创建一个用于存储游戏统计信息的实例self.stats = GameStats(self)self.sb = Scoreboard(self)self.ship = Ship(self)self.bullets = pygame.sprite.Group()self.aliens = pygame.sprite.Group()self._create_fleet()#游戏启动后处于非存活状态self.game_active = False#创造play按钮self.play_button = Button(self,"play")def run_game(self):"""开始游戏的主循环"""while True:self._check_events()if self.game_active:self.ship.update()self._update_bullets()self._update_aliens()self._update_screen()self.clock.tick(60)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)elif event.type == pygame.MOUSEBUTTONDOWN:mouse_pos = pygame.mouse.get_pos()self._check_play_button(mouse_pos)def _check_play_button(self,mouse_pos):"""在玩家点击play时开始新的游戏"""button_clicked = self.play_button.rect.collidepoint(mouse_pos)if button_clicked and not self.game_active:#还原游戏设置self.settings.initialize_dynamic_settings()#重置游戏的统计信息self.stats.reset_stats()self.sb.prep_score()self.sb.prep_level()self.sb.prep_ships()self.game_active = True#清空外星人列表和子弹列表self.bullets.empty()self.aliens.empty()#创造一个新的外星舰队,并将飞船放在屏幕下方的中央self._create_fleet()self.ship.center_ship()#隐藏光标pygame.mouse.set_visible(False)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 _fire_bullet(self):"""创造一个子弹,并将其加入编组buttle"""if len(self.bullets) < self.settings.bullet_allowed:new_bullet = Bullet(self)self.bullets.add(new_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 _update_screen(self):# 每次循环都重绘屏幕self.screen.fill(self.settings.bg_color)for bullet in self.bullets.sprites():bullet.draw_bullet()self.ship.blitme()self.aliens.draw(self.screen)#显示得分self.sb.show_score()#如果游戏处于非存活状态,就绘制play按钮if not self.game_active:self.play_button.draw_button()# 让最近绘制的屏幕可见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 _create_fleet(self):"""创造外星舰队"""#创造一个外星人alien = Alien(self)alien_width,alien_height = alien.rect.sizecurrent_x,current_y = alien_width,alien_heightwhile current_y < (self.settings.screen_height - 3 * alien_height):while current_x < (self.settings.screen_width - 2 * alien_width):self._creat_alien(current_x,current_y)current_x += 2 * alien_width#添加一个外星人后,重置x值并递增y值current_x = alien_widthcurrent_y += 2 * alien_heightdef _creat_alien(self,x_position,y_position):"""创造一个外星人,并将其放入外星舰队"""new_alien = Alien(self)new_alien.x = x_positionnew_alien.rect.x = x_positionnew_alien.rect.y = y_positionself.aliens.add(new_alien)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 _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_bullet_alien_collisions(self):# 检测是否有子弹击中了外星人# 如果是,就删除相应的子弹和外星人collisions = pygame.sprite.groupcollide(self.bullets, self.aliens, True, True)if collisions:for aliens in collisions.values():self.stats.score += self.settings.alien_points * len(aliens)self.sb.prep_score()self.sb.check_high_score()if not self.aliens:# 删除现有的子弹创造一个新的外星舰队self.bullets.empty()self._create_fleet()self.settings.increase_speed()#提高等级self.stats.level += 1self.sb.prep_level()def _ship_hit(self):"""响应飞船和外星人的碰撞"""if self.stats.ships_left > 0:#将ships_left减1并更新计分板self.stats.ships_left -= 1self.sb.prep_ships()self.bullets.empty()self.aliens.empty()self._create_fleet()self.ship.center_ship()sleep(0.5)else:self.game_active = Falsepygame.mouse.set_visible(True)def _check_aliens_bottom(self):"""检查是否有外星人到达了屏幕的下边缘"""for alien in self.aliens.sprites():if alien.rect.bottom >= self.settings.screen_height:#像飞船一样被处理self._ship_hit()breakif __name__ == '__main__':#创建游戏实例并运行游戏ai = AlienInvasion()ai.run_game()

3.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('image/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 check_edges(self):"""如果外星人位于屏幕边界,返回true"""screen_rect = self.screen.get_rect()return (self.rect.right >= screen_rect.right) or (self.rect.left <= 0)def update(self):"""向右移动外星人"""self.x += self.settings.alien_speed * self.settings.fleet_directionself.rect.x = self.x

4.bullet.py

管理飞船发射子弹的类,详细的代码如下:

import pygame
from pygame.sprite import Spriteclass Bullet(Sprite):"""管理飞船所发射子弹的类"""def __init__(self,ai_game):super().__init__()self.screen = ai_game.screenself.settings = ai_game.settingsself.color = self.settings.bullet_color#在(0,0)处创造一个表达子弹的矩形,再设置正确的位置self.rect = pygame.Rect(0,0,self.settings.bullet_width,self.settings.bullet_height)self.rect.midtop = ai_game.ship.rect.midtopself.y = float(self.rect.y)def update(self):"""向上移动子弹"""self.y -= self.settings.bullet_speed#更新表示子弹的rect的位置self.rect.y = self.ydef draw_bullet(self):"""再屏幕上绘制子弹"""pygame.draw.rect(self.screen,self.color,self.rect)

5.button.py

管理游戏创造按钮的类,下面是详细的代码:

import pygame.fontclass Button:"""为游戏创造按钮的类"""def __init__(self,ai_game,msg):"""初始化按钮的属性"""self.screen = ai_game.screenself.screen_rect = self.screen.get_rect()#按钮尺寸和其他属性self.width,self.height = 200,50self.button_color = (0,135,0)self.text_colot = (255,255,255)self.font = pygame.font.SysFont(None,48)#创造按钮的rect对象,并使其居中self.rect = pygame.Rect(0,0,self.width,self.height)self.rect.center = self.screen_rect.center#按钮标签只需要创造一次self._prep_msg(msg)def _prep_msg(self,msg):"""将msg渲染成图像爱过你,并将其在按钮上居中"""self.msg_image = self.font.render(msg,True,self.text_colot,self.button_color)self.msg_image_rect = self.msg_image.get_rect()self.msg_image_rect.center = self.rect.centerdef draw_button(self):"""绘制一个用颜色填充的按钮,再绘制文本"""self.screen.fill(self.button_color,self.rect)self.screen.blit(self.msg_image,self.msg_image_rect)

6.game_stats.py

管理游戏信息的类,详细的代码如下:

class GameStats:"""跟踪游戏的统计信息"""def __init__(self,ai_game):"""统计初始信息"""self.settings = ai_game.settingsself.reset_stats()#在任何情况下都不应该重置最高分self.high_score = 0def reset_stats(self):"""初始化在游戏运行期间可能变化的统计信息"""self.ships_left = self.settings.ship_limitself.score = 0self.level = 1

7.scoreboard.py

关于游戏得分的类,详细代码如下:

import pygame.font
from pygame.sprite import Groupfrom ship import Ship
class Scoreboard:"""显示游戏得分的类"""def __init__(self,ai_game):"""初始化显示得分的属性"""self.ai_game = ai_gameself.screen = ai_game.screenself.screen_rect = self.screen.get_rect()self.settings =ai_game.settingsself.stats = ai_game.stats#显示得分信息时用的字体self.text_color = (30,30,30)self.font = pygame.font.SysFont(None,48)#准备初始得分图像self.prep_score()self.prep_high_score()self.prep_level()self.prep_ships()def prep_score(self):"""将得分渲染成图像"""rounded_score = round(self.stats.score,-1)score_str = f"{rounded_score:,}"self.score_image = self.font.render(score_str,True,self.text_color,self.settings.bg_color)#在屏幕右上角显示得分self.score_rect = self.score_image.get_rect()self.score_rect.right = self.screen_rect.right - 20self.score_rect.top = 20def show_score(self):"""在屏幕上显示得分"""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)def prep_high_score(self):"""将最高分渲染成图像"""high_score = round(self.stats.high_score,-1)high_score_str = f"{high_score:,}"self.high_score_image = self.font.render(high_score_str,True,self.text_color,self.settings.bg_color)#将最高分放在屏幕顶部的中央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):"""检查是否产生了新高分"""if self.stats.score > self.stats.high_score:self.stats.high_score = self.stats.scoreself.prep_high_score()def prep_level(self):"""将等级渲染成图像"""level_str = str(self.stats.level)self.level_image = self.font.render(level_str,True,self.text_color,self.settings.bg_color)#将等级放在得分下面self.level_rect = self.level_image.get_rect()self.level_rect.right = self.score_rect.rightself.level_rect.top = self.score_rect.bottom + 10def prep_ships(self):"""显示还剩下多少飞船"""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)

8.settings.py

关于游戏设置的类,详细代码如下:

class Settings:"""初始化游戏的静态设置"""def __init__(self):"""初始化游戏设置"""#屏幕设置self.screen_width = 1200self.screen_height = 800self.bg_color = (230,230,230)#飞船的设置self.ship_speed = 1.5self.ship_limit = 3#子弹设置self.bullet_speed = 2.5self.bullet_width = 3self.bullet_height = 15self.bullet_color = (60,60,60)self.bullet_allowed = 3#外星人设置self.alien_speed = 1.0self.fleet_drop_speed = 10#fleet_direction为1表示向右移动,-1表示向左移动self.fleet_direction = 1#以什么速度加快游戏的节奏self.speedup_scale = 1.1#外星人分数的提高速度self.score_scale = 1.5self.initialize_dynamic_settings()def initialize_dynamic_settings(self):"""初始化随游戏进行而变化的设置"""self.ship_speed = 1.5self.bullet_speed = 2.5self.alien_speed = 1.0#fleet_direction为1表示向右,-1向左self.fleet_direction = 1# 记分设置self.alien_points = 50def increase_speed(self):"""提高速度设置的值"""self.ship_speed *= self.speedup_scaleself.bullet_speed *= self.speedup_scaleself.alien_speed *= self.speedup_scaleself.alien_points = int(self.alien_points * self.score_scale)

9.ship.py

关于飞船的类,详细代码如下:

import pygame
from pygame.sprite import Sprite
class Ship(Sprite):"""管理飞船的类"""def __init__(self,ai_game):"""初始化飞船并设置其初始位置"""super().__init__()self.screen = ai_game.screenself.settings = ai_game.settingsself.screen_rect = ai_game.screen.get_rect()#加载飞船图像并获取外部形状self.image = pygame.image.load('image/ship.bmp')self.rect = self.image.get_rect()#每艘飞船都放在屏幕底部的中央self.rect.midbottom = self.screen_rect.midbottom#在飞船的属性中储存一个浮点数self.x = float(self.rect.x)#移动标志self.moving_right = Falseself.moving_left = Falsedef update(self):"""根据移动标志调整飞船位置"""if self.moving_right and self.moving_right < self.screen_rect.right:self.x += self.settings.ship_speedif self.moving_left and self.moving_left > 0:self.x -= self.settings.ship_speed#根据self.x更新rect对象self.rect.x = self.xdef blitme(self):"""在指定位置绘制飞船"""self.screen.blit(self.image,self.rect)def center_ship(self):"""把飞船放在屏幕中间"""self.rect.midbottom = self.screen_rect.midbottomself.x = float(self.rect.x)

以上就是本项目的完整代码,可以把他们放在同一个文件夹下面来运行试试。

如果遇到了一些报错,在本地运行不了的情况,可以去这个连接直接下载我的完整项目,不过正常情况应该是不得报错的,https://github.com/00paning/alian-invasion,我把整个项目放在了我这个GitHub仓库里面,需要的可以自取。

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

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

相关文章

23种设计模式-备忘录(Memento)设计模式

备忘录设计模式 &#x1f6a9;什么是备忘录设计模式&#xff1f;&#x1f6a9;备忘录设计模式的特点&#x1f6a9;备忘录设计模式的结构&#x1f6a9;备忘录设计模式的优缺点&#x1f6a9;备忘录设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是…

某鱼、某宝 sign 签名算法分析记录

【作者主页】&#xff1a;小鱼神1024 【知识星球】&#xff1a;小鱼神的逆向编程圈 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用&#xff0c;不用于其…

【C语言】分支与循环(上)

前言&#xff1a;C语言是由顺序结构、选择结构、循环结构组成的结构化的程序设计语言。 那C语言是如何设计和实现这些结构的呢&#xff1f;话不多说&#xff0c;马上开始。 三种结构如图所示&#xff1a; 我们可以使用 if else语句、 switch语句 来实现选择&#xff08;分支&am…

Springboot学习笔记3.20

目录 1.实战篇第一课 我们将会在本次实战中学习到哪些知识点&#xff1f; 开发模式和环境搭建&#xff1a; 注册接口 1.Lombok 2.开发流程 1.controller层&#xff0c;这个层会指明访问路径和要执行的逻辑&#xff1a; 2.我们把返回结果根据接口文档包装成一个类result&a…

全新升级 | Built For You Spring ‘25 发布,Fin 智能客服实现新突破!

图像识别、语音交互、任务自动化&#xff0c;立即体验智能客服蜕变&#xff01; 上周&#xff0c;Intercom 举办了 Built For You Spring 25 发布会&#xff0c;正式揭晓了 AI Agent Fin 的一系列令人振奋的更新。Fin 正在以前所未有的速度革新客户支持模式——它已经成功解决了…

需求导向的K8S网络原理分析:Kube-proxy、Flannel、Calico的地位和作用

最近发现自己似乎从来没学明白过Kubernetes网络通信方案&#xff0c;特开一贴复习总结一下。 在k8s中&#xff0c;每个 Pod 都拥有一个独立的 IP 地址&#xff0c;而且假定所有 Pod 都在一个可以直接连通的、扁平的网络空间中。所以不管它们是否允许在同一个 Node&#xff08;宿…

Vulnhub:Digitalword.local: FALL靶机渗透

将靶机按照图中连接方式打开&#xff0c;fall在virtualBox中打开 信息收集 扫描得ip arp-scan -l 扫描端口 nmap -A -T4 -sV -p- 扫描目录 gobuster dir -u http://192.168.117.160 -x php,txt,html -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 一个一个…

4、网工软考—VLAN配置—hybird配置

1、实验环境搭建&#xff1a; 2、实验过程 SW1&#xff1a; 先创建vlan2和vlan3 [Huawei-Ethernet0/0/2]port link-type hybrid //hybird端口 [Huawei-Ethernet0/0/2]port hybrid pvid vlan 2 [Huawei-Ethernet0/0/2]port hybrid untagged vlan 10 //撕掉vlan10的标签 …

2025年数智化电商产业带发展研究报告260+份汇总解读|附PDF下载

原文链接&#xff1a;https://tecdat.cn/?p41286 在数字技术与实体经济深度融合的当下&#xff0c;数智化产业带正成为经济发展的关键引擎。 从云南鲜花产业带的直播热销到深圳3C数码的智能转型&#xff0c;数智化正重塑产业格局。2023年数字经济规模突破53.9万亿元&#xff…

【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV5模型部署

【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV5模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…

线程同步——读写锁

Linux——线程同步 读写锁 目录 一、基本概念 1.1 读写锁的基本概念 1.2 读写锁的优点 1.3 读写锁的实现 1.4 代码实现 一、基本概念 线程同步中的读写锁&#xff08;Read-Write Lock&#xff09;&#xff0c;也常被称为共享-独占锁&#xff08;Shared-Exclusive Lock&a…

全面解析PRN文件:从原理到可视化的完整指南 【标签打印】

文章目录 一、PRN文件概述二、PRN文件结构深度解析2.1 文件头配置2.1 绘图指令详解2.3 文本处理方案2.4 条码/二维码实现2.5 RFID指令集 三、实战&#xff1a;PRN可视化工具开发3.1 基于Canvas的实现方案3.2 坐标转换关键算法 四、常见问题解决方案4.1 内容偏移问题4.2 中文乱码…

C++:函数(通识版)

一、函数的基础 1.什么是函数&#xff1f;&#xff08;独立的功能单位&#xff09; 函数是C中封装代码逻辑的基本单元&#xff0c;用于执行特定任务。 作用&#xff1a;代码复用、模块化、提高可读性。 2、函数的基本结构 返回类型 函数名(参数列表) {// 函数体return 返回值…

sql注入语句学习

说明 注入漏洞作为登顶过web十大漏洞多次的漏洞&#xff0c;危害性不言而喻&#xff0c;其中sql注入就是注入漏洞常用的手段。其形成的原因是由于web在接收传参数据时&#xff0c;对数据的过滤不够严格&#xff0c;将其带入到数据库查询中&#xff0c;导致用户可以通过传参一些…

云钥科技多通道工业相机解决方案设计

项目应用场景分析与需求挑战 1. 应用场景 ‌目标领域‌&#xff1a;工业自动化检测&#xff08;如精密零件尺寸测量、表面缺陷检测&#xff09;、3D立体视觉&#xff08;如物体建模、位姿识别&#xff09;、动态运动追踪&#xff08;如高速生产线监控&#xff09;等。 ‌核心…

puppeteer+express服务端导出页面为pdf

以下是开发步骤&#xff1a; 1、创建目录 puppeteer_demo 目录&#xff0c;打开目录 初始化项目&#xff08;命令为&#xff1a;npm init -y&#xff09; 页面如&#xff1a; 初始化后&#xff0c;项目目录会出现 package.json 文件 2、安装 puppeteer &#xff0c;使用命令&a…

西域平台商品详情接口设计与实现‌

接口描述&#xff1a; 该接口用于获取西域平台中指定商品的详细信息&#xff0c;包括商品名称、价格、库存、描述、图片等。 点击获取key和secret 接口地址&#xff1a; GET /api/product/detail 请求参数&#xff1a; 参数名 类型 是否必填 描述 productId st…

项目-苍穹外卖(十五) Apache ECharts+数据统计

一、介绍 二、营业额统计 需求分析和设计&#xff1a; Controller: Service: /*** 营业额统计* param begindate* param enddate* return* */Overridepublic TurnoverReportVO turnoverStatistics(LocalDate begindate, LocalDate enddate) {//创建时间集合List<LocalDate&…

体育比分网站开发避坑指南:如何选择靠谱的数据服务商?(10年行业经验总结,避免踩坑!)

作为一家专业的体育比分数据服务商&#xff0c;我们接触过大量客户&#xff0c;发现很多人在开发体育比分网站或接入数据API时&#xff0c;由于选择不靠谱的服务商&#xff0c;导致项目延期、数据延迟、售后无响应、隐性收费等问题&#xff0c;最终影响运营效果&#xff0c;甚至…

离心萃取机在毕赤酵母萃取中的应用

在生物医药领域&#xff0c;毕赤酵母因其高效表达重组蛋白的能力&#xff0c;成为基因工程的“明星宿主”。然而&#xff0c;如何从复杂的发酵体系中高效提取目标产物&#xff0c;一直是行业痛点。离心萃取机的出现&#xff0c;凭借其高速分离、精准提纯的特性&#xff0c;正在…