Pygame游戏实战六:飞机大战

介绍模块

本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个飞机大战,通过控制自己的飞机来攻击敌机,敌机的速度也忽快忽慢,看看这个是你小时候玩的游戏吗?

最小开发框架

详情请看此文章:
Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客

Pygame和sys模块

import pygame # 制作游戏时要使用的模块
import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块

random模块

需要在屏幕上随机生成食物的位置,通过随机一个位置来表示食物的位置

from random import randint

详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客

相关功能 

【童年游戏】飞机大战

飞机类

初始化飞机图片,以及定义子弹射出函数和位置更新函数

class Plane(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = pygame.image.load('player.png')self.image = pygame.transform.scale(self.image, (50, 50))  # 调整尺寸为50x50self.rect = self.image.get_rect()self.rect.x = width // 2self.rect.y = height - 100self.speed = 5def update(self):# 获取键盘按键状态keys = pygame.key.get_pressed()if keys[pygame.K_LEFT]:self.rect.x -= self.speedif keys[pygame.K_RIGHT]:self.rect.x += self.speed# 限制飞机在窗口范围内移动if self.rect.x < 0:self.rect.x = 0if self.rect.x > width - 50:self.rect.x = width - 50def shoot(self):bullet = Bullet(self.rect.x + 23, self.rect.y)all_sprites.add(bullet)bullets.add(bullet)

子弹类

初始化子弹图片,并定义子弹射出的速度函数

class Bullet(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()# 子弹的形状self.image = pygame.image.load('bullet.png')self.image = pygame.transform.scale(self.image, (10, 20))  # 调整尺寸为10x20self.rect = self.image.get_rect()self.rect.x = xself.rect.y = yself.speed = 10def update(self):self.rect.y -= self.speedif self.rect.y < -10:self.kill()

敌机类

初始化敌机图片,并定义敌机运动速度函数

class Enemy(pygame.sprite.Sprite):def __init__(self):super().__init__()# 加载敌机的图片self.image = pygame.image.load('enemy.png')self.image = pygame.transform.scale(self.image, (30, 30))  # 调整尺寸为30x30self.rect = self.image.get_rect()self.rect.x = random.randint(0, width - 30)self.rect.y = 0self.speed = random.randint(1, 5)def update(self):self.rect.y += self.speedif self.rect.y > height:self.rect.x = random.randint(0, width - 30)self.rect.y = 0self.speed = random.randint(1, 5)

射中敌机检测

    # 检测碰撞if pygame.sprite.spritecollide(player, enemies, True):running = Falsefor bullet in bullets:pygame.sprite.spritecollide(bullet, enemies, True)

图片界面

扩展可添加功能

1.让图片与界面更加融合

2.增加敌机攻击子弹事件

3.增加关卡

4.增加音效

5.增加背景

源码获取

PyGame/飞机大战 at main · mzc421/PyGame (github.com)

 欢迎关注我的公众号:@AI算法与电子竞赛    

​​

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

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

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

相关文章

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树&#xff0c;Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式&#xff0c;这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径&#xff0c;…

Ubuntu20.04安装向日葵、开机自启、解决windows系统远程黑屏(笔记)

这里写目录标题 动机1. Ubuntu20.04 安装向日葵2. 设置开机自启3. 解决windows不可远程的问题4. 大公告成 动机 办公室有个工作站&#xff0c;要比我的笔记本的CPU稍微好一点&#xff0c;用来跑陆面过程。我信心满满的装了个Ubuntu20.04双系统,但是发现向日葵安装不上了。我少…

面试必会-JAVA基础篇-02

文章目录 11. ArrayList 和 LinkedList 的区别是什么&#xff1f;12. 说一下HashMap的实现原理&#xff1f;13. HashMap的put方法的具体流程&#xff1f;14. 讲一讲HashMap的扩容机制15. ConcurrentHashMap 底层具体实现知道吗&#xff1f;16. 创建线程的四种方式17. runnable …

【C++ STL】vector类最全详解(什么是vector?vector类的常用接口有哪些?)

目录 一、前言 二、什么是vector ? &#x1f4a6; vector的基本概念 &#x1f4a6;vector的作用是什么 &#x1f4a6;总结 三、 vector的(一维)定义 四、vector(一维)常用接口的使用 &#x1f4a6;vector的常见构造&#xff08;初始化&#xff09; &#x1f4a6;vector…

python处理pdf中二维码图片,批量生成图片

比如一种pdf页面上有很多二维码&#xff0c;这些二维码比如是用于停车的&#xff0c;每次打开pdf截图或者其他模式存下来&#xff0c;然后扫码使用是不是感觉很麻烦&#xff0c;可以使用python把每个二维码生成图片&#xff0c;然后保存起来使用&#xff0c;当然想方便的话还可…

配置攻击防范示例

1、组网需求。 如果局域网内存在Hacker向SwitchA发起畸形报文攻击、分片报文攻击和泛洪攻击&#xff0c;将会造成SwitchA瘫痪。为了预防这种情况&#xff0c;管理员希望通过在SwitchA上部署各种攻击防范措施来为用户提供安全的网络环境&#xff0c;保障正常的网络服务。 2、配…

奥本海默-电影剧情简介

片头&#xff0c;奥本海默 脑海浮现恒星生命周期画面 1925年&#xff0c;奥本海默离开美国去欧洲学习新物理&#xff08;量子力学&#xff09; 脑海浮现量子力学相关画面&#xff08;像 德布罗意波&#xff09; 1927年从德国哥廷根大学毕业&#xff0c;获得物理学博士学位。…

ssm农业信息管理系统源码和论文

摘 要 网络的广泛应用给生活带来了十分的便利。所以把农业信息管理与现在网络相结合&#xff0c;利用java技术建设农业信息管理系统&#xff0c;实现农业信息管理的信息化。则对于进一步提高农业信息管理发展&#xff0c;丰富农业信息管理经验能起到不少的促进作用。 农业信息…

二极管:二极管的基本原理

一、认识导体、绝缘体、半导体 什么是导体&#xff1f; 导体 conductor &#xff0c;是指电阻率很小&#xff0c;且容易传导电流的物质。导体中存在大量可自由移动的带电粒子&#xff0c;也称为载流子。在外电场的作用下&#xff0c;载流子作定向运动&#xff0c;形成电流。 …

【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现

文章目录 一、进程创建1.fork函数2.fork函数返回值3.写时拷贝4.fork常规用法5.fork调用失败的原因 二、进程终止1.进程退出码2.进程退出场景3.进程常见退出方法 三、进程等待1.为什么要进行进程等待2.如何进行进程等待1.wait方法2.waitpid方法3.获取子进程status4.进程的阻塞等…

Nginx 简单入门操作

前言:之前的文章有些过就不罗嗦了。 Nginx 基础内容 是什么? Nginx 是一个轻量级的 HTTP 服务器,采用事件驱动、异步非阻塞处理方式的服务器,它具有极好的 IO 性能,常用于 HTTP服务器(包含动静分离)、正向代理、反向代理、负载均衡 等等. Nginx 和 Node.js 在很多方…

Android Studio的笔记--String和byte[]

String和byte[]的相互转换&#xff0c;字节数组转换 String转换byte[]文本16进制字节数组 byte[]转换String文本16进制 其它 String转换byte[] 文本 将字符串&#xff08;String&#xff09;转换为字节&#xff08;byte&#xff09;的方法。默认使用的是UTF-8编码 StandardCh…