pycharm小游戏飞机射击

导入pygame模块

下载成功

 

 图片略显粗糙

 

 

python
 复制
import pygame
import random

# 初始化 pygame
pygame.init()

# 屏幕大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# 颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# 飞机速度
PLANE_SPEED = 5

# 子弹速度
BULLET_SPEED = 10

# 敌机速度
ENEMY_SPEED = 3

# 初始化屏幕
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("飞机射击游戏")

# 游戏时钟
clock = pygame.time.Clock()

# 加载飞机图片
plane_image = pygame.image.load("plane.png")
plane_rect = plane_image.get_rect()
plane_rect.x = (SCREEN_WIDTH - plane_rect.width) / 2
plane_rect.y = SCREEN_HEIGHT - plane_rect.height

# 加载子弹图片
bullet_image = pygame.image.load("bullet.png")
bullet_list = []

# 敌机列表
enemy_list = []

# 得分
score = 0

# 游戏结束标志
game_over = False

# 生成敌机函数
def generate_enemy():
    enemy_image = pygame.image.load("enemy.png")
    enemy_rect = enemy_image.get_rect()
    enemy_rect.x = random.randint(0, SCREEN_WIDTH - enemy_rect.width)
    enemy_rect.y = -enemy_rect.height
    enemy_list.append([enemy_image, enemy_rect])

# 游戏主循环
while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True

    keys_pressed = pygame.key.get_pressed()
    if keys_pressed[pygame.K_LEFT] and plane_rect.x > 0:
        plane_rect.x -= PLANE_SPEED
    if keys_pressed[pygame.K_RIGHT] and plane_rect.x < SCREEN_WIDTH - plane_rect.width:
        plane_rect.x += PLANE_SPEED
    if keys_pressed[pygame.K_SPACE]:
        bullet_rect = bullet_image.get_rect()
        bullet_rect.x = plane_rect.x + plane_rect.width / 2 - bullet_rect.width / 2
        bullet_rect.y = plane_rect.y
        bullet_list.append([bullet_image, bullet_rect])

    # 移动子弹
    for bullet in bullet_list:
        bullet[1].y -= BULLET_SPEED
        if bullet[1].y < 0:
            bullet_list.remove(bullet)

    # 移动敌机
    for enemy in enemy_list:
        enemy[1].y += ENEMY_SPEED
        if enemy[1].y > SCREEN_HEIGHT:
            enemy_list.remove(enemy)

        # 检测子弹与敌机的碰撞
        for bullet in bullet_list:
            if enemy[1].colliderect(bullet[1]):
                enemy_list.remove(enemy)
                bullet_list.remove(bullet)
                score += 10

        # 检测敌机与飞机的碰撞
        if plane_rect.colliderect(enemy[1]):
            game_over = True

    # 生成敌机
    if random.randint(0, 100) < 5:
        generate_enemy()

    # 绘制背景
    screen.fill(BLACK)

    # 绘制飞机
    screen.blit(plane_image, plane_rect)

    # 绘制子弹
    for bullet in bullet_list:
        screen.blit(bullet[0], bullet[1])

    # 绘制敌机
    for enemy in enemy_list:
        screen.blit(enemy[0], enemy[1])

    # 显示得分
    font = pygame.font.SysFont(None, 36)
    text = font.render("Score: " + str(score), 1, WHITE)
    screen.blit(text, (10, 10))

    # 刷新屏幕
    pygame.display.flip()

    # 控制游戏帧率
    clock.tick(60)

# 退出游戏
pygame.quit()

请注意,上述代码中需要您准备飞机、子弹和敌机的图片,并将文件名修改为代码中的相应名称。这个游戏实现了飞机的控制、子弹的发射、敌机的生成和碰撞检测等功能。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ELK实现加载多个配置日志文件

服务器准备3台133为ELS存储服务器&#xff0c;135为Kibana前台显示收集服务器&#xff0c;136为logstash客户端 打开136logstash配置pipelines.yml文件path.config:配置模块 打开136的logstash.yml配置文件 在136服务器上查看logstash配置文件 需要将mysql_log.conf和nginx_log…

深入理解Redis的四种模式

Redis是一个内存数据存储系统&#xff0c;支持多种不同的部署模式。以下是Redis的四种主要部署模式。 1、单机模式 单机模式是最简单的部署模式&#xff0c;Redis将数据存储在单个节点上。这个节点包括一个Redis进程和一个持久化存储。单机模式非常适合小型应用程序或者开发和…

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern)

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern) 定义 断路器模式&#xff08;Circuit Breaker Pattern&#xff09;是云计算和微服务架构中的一种保护性设计模式&#xff0c;其目的是避免系统中的调用链出现故障时&#xff0c;导致系统瘫痪。通过断路器模式&#xff…

【react】基础知识点学习

1. 创建项目 npm install -g create-react-app npx create-react-app my-app cd my-app npm startindex.js为入口文件&#xff0c;App.js为根组件。 如何将react应用挂载在页面上&#xff1f; 将App组件渲染到id为root的DOM元素中 2. JSX JSX是|avaScript和XML(HTML)的缩写…

校园社团信息管理:Spring Boot技术的应用与挑战

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

LeetCode3226题. 使两个整数相等的位更改次数解法二(原创)

我之前文章LeetCode3226题. 使两个整数相等的位更改次数&#xff08;原创&#xff09;-CSDN博客对于LeetCode第3226题中给出了解法&#xff0c;后来思考了一下可以用位操作来完成更简洁优雅的实现&#xff1a; 首先计算n和k的异或值m.m中的所有位数中为1的值就是n中为1k中为0&…

Linux:权限的深度解析(进阶)

文章目录 前言一、知识点1. 只有权限的拥有者或root&#xff0c;有权修改自己的权限2. Linux一个文件可执行 这个文件真的能执行 可执行权限3. 身份对比的时候&#xff0c;只依次在user, group, other中比对一次4. 权限的八进制表示与修改&#x1f929;&#x1f929;&#x1…

网络编程(Day35)

一、学习内容 ip地址的网络字节序转换 函数原型 in_addr_t inet_addr(const char *cp); 返回值 in_addr_t&#xff1a;一个 uint32 数据&#xff0c;该数据是结构体struct in_addr {in_addr_t s_addr;};struct in_addr 是结构体 struct sockaddr_in 中的一个数据 参数描述 参…

Rust 力扣 - 1652. 拆炸弹

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们只需要遍历长度长度为k的窗口&#xff0c;然后把窗口内数字之和填充到结果数组中的对应位置即可 题解代码 impl Solution {pub fn decrypt(code: Vec<i32>, k: i32) -> Vec<i32> {let n c…

【开源免费】基于SpringBoot+Vue.J服装商城系统(JAVA毕业设计)

本文项目编号 T 046 &#xff0c;文末自助获取源码 \color{red}{T046&#xff0c;文末自助获取源码} T046&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

AI虚拟主播实时互动模块的搭建与开发!

AI虚拟主播&#xff0c;作为新兴的数字媒体形式&#xff0c;正在逐步改变我们的娱乐和信息获取方式&#xff0c;它们不仅拥有栩栩如生的外貌&#xff0c;还能通过实时互动模块与用户进行流畅的对话&#xff0c;极大地提升了用户体验。 本文将详细介绍AI虚拟主播实时互动模块的…

STM32之看门狗

STM32有独立看门狗&#xff08;IWDG&#xff09;和窗口看门狗(WWDG)。 采用窗口看门狗&#xff08;WWDG&#xff09;&#xff0c;有一个死前中断&#xff0c;可以用来作一个报警的功能。 独立看门狗超时时间计算公式 假设LSI是32KHz,超时时间等于 预分频系数&#xff08;4&…

uni-app 运行HarmonyOS项目

1. uni-app 运行HarmonyOS项目 文档中心 1.1. HarmonyOS端 1.1.1. 准备工作 &#xff08;1&#xff09;下载DevEco Studio开发工具。   &#xff08;2&#xff09;在 DevEco Studio 中打开任意一个项目&#xff08;也可以新建一个空项目&#xff09;。   &#xff08;3&…

巨好看的登录注册界面源码

展示效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…

阿里云docker安装禅道记录

docker network ls docker network create -d bridge cl_network sudo docker run --name zentao --restart always -p 9982:80 --networkcl_network -v /data/zentao:/data -e MYSQL_INTERNALtrue -d hub.zentao.net/app/zentao:18.5 参考&#xff1a;用docker安装禅道…

c++联合

结构体与联合体的区别 结构体(struct)中所有变量是“共存”的——优点是“有容乃大”&#xff0c;全面&#xff1b;缺点是struct内存空间的分配是粗放的&#xff0c;不管用不用&#xff0c;全分配。 而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”&#xff…

XSS-libs

靶场下载地址&#xff1a;https://github.com/do0dl3/xss-labs 下载完成后解压到phpstudy的根目录下&#xff0c;访问就可以 第一关 参数name 存在alert函数&#xff0c;插入&#xff1a;<script>alert(1)</script>&#xff0c;会调用该函数&#xff0c;然后就会返…

人脑与机器连接:神经科技的伦理边界探讨

内容概要 在当今科技飞速发展的时代&#xff0c;人脑与机器连接已成为一个引人注目的前沿领域。在这一背景下&#xff0c;神经科技的探索为我们打开了一个全新的世界&#xff0c;从脑机接口到人工智能的飞跃应用&#xff0c;不仅加速了技术的进步&#xff0c;更触动了我们内心…

基于向量检索的RAG大模型

一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如&#xff0c;二维空间中的向量可以表示为 (&#x1d465;,&#x1d466;) &#xff0c;表示从原点 (0,0)到点 (&#x1d465;,&#x1d466;)的有向线段。 1.1、文本向量 1…

数字媒体技术基础:AMF(ACES 元数据文件 )

在现代电影和电视制作中&#xff0c;色彩管理变得越来越重要。ACES&#xff08;Academy Color Encoding System&#xff0c;美国电影艺术与科学学院颜色编码系统&#xff09;是一个广泛采用的色彩管理和交换系统&#xff0c;旨在解决不同设备、软件和工作流程之间的色彩不一致问…