Python开发: 飞机大战 小游戏

玩法

你可以控制飞机左右移动,躲避敌机子弹,同时发射自己的炮弹,将敌人击落!
在这里插入图片描述

部署方案:

1、代码如下图;
2、将代码保存到一个python中,比如planeFight.py;
3、在你的电脑中安装python环境,然后使用命令:“py planeFight.py” 运行这个文件即可;

代码

import pygame
import random# 初始化 Pygame
pygame.init()# 设置屏幕尺寸
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))# 设置标题
pygame.display.set_caption("飞机大战")# 加载并缩放图片
player_image = pygame.image.load("player.png")
player_image = pygame.transform.scale(player_image, (50, 50))enemy_image = pygame.image.load("enemy.png")
enemy_image = pygame.transform.scale(enemy_image, (50, 50))bullet_image = pygame.image.load("bullet.png")
bullet_image = pygame.transform.scale(bullet_image, (10, 30))# 设置字体
font = pygame.font.Font(None, 36)# 玩家类
class Player(pygame.sprite.Sprite):def __init__(self):super(Player, self).__init__()self.image = player_imageself.rect = self.image.get_rect()self.rect.center = (screen_width // 2, screen_height - 50)self.speed = 5self.lives = 3  # 初始生命值self.score = 0  # 初始分数def update(self):keys = pygame.key.get_pressed()if keys[pygame.K_LEFT] and self.rect.left > 0:self.rect.x -= self.speedif keys[pygame.K_RIGHT] and self.rect.right < screen_width:self.rect.x += self.speeddef draw(self, surface):surface.blit(self.image, self.rect)# 敌人类
class Enemy(pygame.sprite.Sprite):def __init__(self):super(Enemy, self).__init__()self.image = enemy_imageself.rect = self.image.get_rect()self.rect.x = random.randint(0, screen_width - self.rect.width)self.rect.y = random.randint(-100, -40)self.speed = random.randint(1, 3)def update(self):self.rect.y += self.speedif self.rect.top > screen_height:self.rect.x = random.randint(0, screen_width - self.rect.width)self.rect.y = random.randint(-100, -40)self.speed = random.randint(1, 3)# 子弹类
class Bullet(pygame.sprite.Sprite):def __init__(self, x, y):super(Bullet, self).__init__()self.image = bullet_imageself.rect = self.image.get_rect()self.rect.center = (x, y)self.speed = 5def update(self):self.rect.y -= self.speedif self.rect.bottom < 0:self.kill()# 创建精灵组
player = Player()
enemies = pygame.sprite.Group()
bullets = pygame.sprite.Group()for _ in range(10):enemy = Enemy()enemies.add(enemy)all_sprites = pygame.sprite.Group()
all_sprites.add(player)
all_sprites.add(enemies)# 游戏主循环
running = True
while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE:bullet = Bullet(player.rect.centerx, player.rect.top)bullets.add(bullet)all_sprites.add(bullet)# 更新all_sprites.update()# 检查子弹与敌人的碰撞hits = pygame.sprite.groupcollide(bullets, enemies, True, True)for hit in hits:player.score += 10enemy = Enemy()enemies.add(enemy)all_sprites.add(enemy)# 检查敌人和玩家的碰撞hits = pygame.sprite.spritecollide(player, enemies, True)for hit in hits:player.lives -= 1enemy = Enemy()enemies.add(enemy)all_sprites.add(enemy)if player.lives <= 0:running = False# 绘制screen.fill((0, 0, 0))all_sprites.draw(screen)# 显示分数和生命值score_text = font.render("score: " + str(player.score), True, (255, 255, 255))lives_text = font.render("life: " + str(player.lives), True, (255, 255, 255))screen.blit(score_text, (10, 10))screen.blit(lives_text, (10, 40))pygame.display.flip()# 控制帧率pygame.time.Clock().tick(60)pygame.quit()

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

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

相关文章

为什么需要云仓?

云仓&#xff0c;即云端仓储管理&#xff0c;是指通过互联网技术整合和管理仓储资源&#xff0c;实现高效、低成本的库存管理和物流服务。随着电子商务的发展和企业供应链全球化的加剧&#xff0c;云仓成为现代企业管理的一种重要手段。 1、云仓可以显著提高仓储管理效率&#…

算法测试.

一.CodeForces 1829A 题意&#xff1a; 题目意思就是给你t个字符串&#xff0c;让你找出每个串与codeforces这个串有多少不同的字母&#xff1b; 题解&#xff1a; 定义一个变量循环比较字符串&#xff0c;不相同计数即可&#xff1b; 代码&#xff1a; #include <iost…

SQL二次注入

目录 1.什么是二次注入&#xff1f; 2.二次注入过程 2.1寻找注入点 2.2注册admin#用户 2.3修改密码 1.什么是二次注入&#xff1f; 当用户提交的恶意数据被存入数据库后&#xff0c;因为被过滤函数过滤掉了&#xff0c;所以无法生效&#xff0c;但应用程序在从数据库中拿…

TCP Analysis Flags 之 TCP Window Full

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

supermap制作发布二三维地图服务

一、下载安装 软件版本&#xff1a; SuperMap iDesktopX 11i(2023) SP1 for Windows SuperMap iServer 11i(2023) SP1 for Windows 下载地址&#xff1a; http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx 二、运行 服务端&#xff1a;双击iserver的…

C# Unity 面向对象补全计划 设计者模式 之 单例模式

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 了解我的专栏C#面向对象与进阶:http://t.csdnimg.cn/mIitr&#xff0c;尤其是关于类的那篇文章即…

Python(模块---pandas+matplotlib+pyecharts)

import pandas as pd import matplotlib.pyplot as plt dfpd.read_excel(简易数据.xlsx) # print(df) plt.rcParams[font.sans-serif][SimHei] #设置画布的大小 plt.figure(figsize(10,6)) labelsdf[电影中文名] ydf[国籍] # print(labels) # print(y)# import pandas as pd im…

在Stable Diffusion中驱动Tesla P40

一、安装P40显卡 在前面我的“在win10电脑上搭建python环境下的本地AI绘画工具Stable Diffusion”博文中&#xff0c;Stable Diffusion的运行完全依赖CPU和内存&#xff0c;因此每生成一次图片&#xff0c;需几小时之多&#xff0c;我常是在临下班时开始生成&#xff0c;到第二…

Go语言标准库中的双向链表的基本用法

什么是二分查找区间&#xff1f; 什么是链表&#xff1f; 链表节点的代码实现&#xff1a; 链表的遍历&#xff1a; 链表如何插入元素&#xff1f; go语言标准库的链表&#xff1a; 练习代码&#xff1a; package mainimport ("container/list""fm…

连接一切:Web3如何重塑物联网的未来

传统物联网的挑战 物联网&#xff08;IoT&#xff09;正在迅速改变我们的世界&#xff0c;通过将各种设备连接到互联网&#xff0c;它使得设备能够相互交流&#xff0c;提供智能化的服务和解决方案。然而&#xff0c;随着物联网的迅猛发展&#xff0c;安全性、隐私保护和设备互…

React 知识点(二)

文章目录 一、React 组件二、React 组件通信 - 父子通信三、React 组件通信 - 子父通信四、React 组件通信 - 兄弟通信五、React 组件通信 - 跨组件通信(祖先)六、结合组件通信案例七、props-children 属性八、props-类型校验九、React 生命周期十、setState 扩展 一、React 组…

MySQL的简单介绍

文章目录 数据库关系型数据库非关系型数据”数据库的概念和用途MySQL数据库服务器、数据库和表的关系数据库的创建和删除表创建表修改常见的数据类型和约束字符串类型日期和时间类型PRIMARY KEY使用AUTO_INCREMENT使用UNIQUE使用FOREIGN KEY使用 SQL语言基础SQL语言简介SQL分类…

C++入门基础知识

在之前我们学习了C语言和初阶数据结构的相关知识&#xff0c;现在已经有了一定的代码能力和对数据结构也有了基础的认识&#xff0c;接下来我们将进入到新的专题当中&#xff0c;这个专题就是C。在C中我们需要花费更大的精力和更长的时间去学习这门建立在C语言基础之上的计算机…

接了一个2000块的小活,大家进来看看值不值,附源码

如题&#xff0c;上周的一天&#xff0c;朋友圈的一个旧友找到了我&#xff0c;说让我帮他开发一个小工具&#xff0c;虽然活不大&#xff0c;但没个几年的全栈经验还不一定能接下来&#xff0c;因为麻雀虽小&#xff0c;涉及的内容可不少&#xff1a; 需求分析 原型设计 详细…

LSPatch制作内置模块应用软件无需root 教你制作内置应用

前言 LSPatch功能非常强大&#xff0c;它是一款基于LSPosed核心的免Root Xposed框架软件。这意味着用户无需进行手机root操作&#xff0c;即可轻松植入内置Xposed模块&#xff0c;享受更多定制化的功能和体验&#xff0c;比如微某内置模块版等&#xff0c;这为那些不想root手机…

vue项目部署在子路径中前端配置

vue.config.JS router/index.js或者是man.js

【开发踩坑】windows查看jvm gc信息

windows查看jvm gc信息 EZ 找出java进程PID 控制面板----搜索任务管理器---- 任务管理器----搜索 java----详细信息 这里PID是4856 cmd jstat gc面板 reference&#xff1a; jstat命令

Llama3.1是AI界的Linux?先部署起来再说!

本文简介 前段时间&#xff0c;Meta 发布了 Llama 3.1&#xff0c;这次带来的中杯、大杯和超大杯3个版本。 从纸面数据来看&#xff0c;Llama 3.1 超大杯已经能跟 GPT-4 Omni、Claude 3.5 Sonnet 分庭抗礼了。 而中杯和大杯更是将同量级的对手摁在地上摩擦。 要知道&#xff0…

常见中间件漏洞(一、Tomcat合集)

目录 一&#xff0e;Tomcat Tomcat介绍 1.1 CVE-2017-12615 影响范围 环境搭建 漏洞复现 1.2 后台弱口令部署war包 漏洞原理 影响版本 环境搭建 1.3 CVE-2020-1938 漏洞原理 影响版本 环境搭建 漏洞复现 一&#xff0e;Tomcat Tomcat介绍 tomcat是一个开源而且…