python飞机大战(只需要两个python文件)附带pycharm的导包方法
两个python文件实现飞机大战(附带pycharm的导包方法)
开发工具:pycharm
相关注释直接在代码中讲解
运行结果图
代码:
plane_main.py
import pygame
from plane_sprites import *class PlaneGame(object):def __init__(self):print("游戏初始化")self.screen = pygame.display.set_mode(SCREEN_RECT.size)self.clock = pygame.time.Clock()self.__create_sprites()pygame.time.set_timer(CREATE_ENEMY_EVENT, 1000)pygame.time.set_timer(HERO_FIRE_EVENT, 500)def __create_sprites(self):bg1 = Background()bg2 = Background(True)self.back_group = pygame.sprite.Group(bg1, bg2)self.enemy_group = pygame.sprite.Group()self.hero = Hero()self.hero_group = pygame.sprite.Group(self.hero)def start_game(self):print("游戏开始...")while True:self.clock.tick(FRAME_PER_SEC)self.__event_handler()self.__check_collide()self.__update_sprites()pygame.display.update()def __event_handler(self):for event in pygame.event.get():if event.type == pygame.QUIT:PlaneGame.__game_over()elif event.type == CREATE_ENEMY_EVENT:# print("敌机出场。。。")enemy = Enemy()self.enemy_group.add(enemy)# elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:# print("向右移动。。。")elif event.type == HERO_FIRE_EVENT:self.hero.fire()keys_pressed = pygame.key.get_pressed()if keys_pressed[pygame.K_RIGHT]:self.hero.speed = 2elif keys_pressed[pygame.K_LEFT]:self.hero.speed = -2else:self.hero.speed = 0def __check_collide(self):pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)if len(enemies) > 0:self.hero.kill()PlaneGame.__game_over()def __update_sprites(self):self.back_group.update()self.back_group.draw(self.screen)self.enemy_group.update()self.enemy_group.draw(self.screen)self.hero_group.update()self.hero_group.draw(self.screen)self.hero.bullets.update()self.hero.bullets.draw(self.screen)@staticmethoddef __game_over():print("游戏结束")pygame.quit()exit()if __name__ == '__main__':game = PlaneGame()game.start_game()
plane_sprites.py
import random
import pygameSCREEN_RECT = pygame.Rect(0, 0, 480, 700)
FRAME_PER_SEC = 60
CREATE_ENEMY_EVENT = pygame.USEREVENT
HERO_FIRE_EVENT = pygame.USEREVENT + 1class GameSprite(pygame.sprite.Sprite):def __init__(self, image_name, speed=1):super().__init__()self.image = pygame.image.load(image_name)self.rect = self.image.get_rect()self.speed = speeddef update(self):self.rect.y += self.speedclass Background(GameSprite):def __init__(self, is_alt=False):super().__init__("./images/background.png")if is_alt:self.rect.y = -self.rect.heightdef update(self):super().update()if self.rect.y >= SCREEN_RECT.height:self.rect.y = -self.rect.heightclass Enemy(GameSprite):def __init__(self):super().__init__("./images/enemy1.png")self.speed = random.randint(1, 3)self.rect.bottom = 0max_x = SCREEN_RECT.width - self.rect.widthself.rect.x = random.randint(0, max_x)def update(self):super().update()if self.rect.y >= SCREEN_RECT.height:# print("飞出屏幕,需要从精灵组删除。。。")self.kill()def __del__(self):# print("敌机挂了 %s" % self.rect)passclass Hero(GameSprite):def __init__(self):super().__init__("./images/me1.png", 0)self.rect.centerx = SCREEN_RECT.centerxself.rect.bottom = SCREEN_RECT.bottom - 120self.bullets = pygame.sprite.Group()def update(self):self.rect.x += self.speedif self.rect.x < 0:self.rect.x = 0elif self.rect.right > SCREEN_RECT.right:self.rect.right = SCREEN_RECT.rightdef fire(self):print("发射子弹。。。")for i in (0, 1, 2):bullet = Bullet()bullet.rect.bottom = self.rect.y - i * 20bullet.rect.centerx = self.rect.centerxself.bullets.add(bullet)class Bullet(GameSprite):def __init__(self):super().__init__("./images/bullet1.png", -2)def update(self):super().update()if self.rect.bottom < 0:self.kill()def __del__(self):print("子弹被销毁。。。")
导包问题解决如下
一、首先打开pycharm后点击file中的setting选项
二、之后打开这个Project选项(每个人的项目名称都不一样,你们肯定也不会是Project:HelloWorldPy,除非咱们想到一起了哈哈哈,但是只要打开Project:这个选项就对了)
三、点击右边的“+”,搜索你自己所需要的包,然后点击下边的安装即可(这个是需要联网的,因为是要下载)。
其中的图片可以私信我找我拿
简易版贪吃蛇
下期我会整理一个简易版的贪吃蛇小游戏,这个可以利用python的自身优势自定义颜色实现,不需要添加图片,只需一个python文件即可实现贪吃蛇游戏
python飞机大战(只需要两个python文件)附带pycharm的导包方法相关推荐
- python飞机大战游戏代码_用python语言如何实现飞机大战游戏
python语言博大精深,它目前来说已经很火热了,在学好python的同时还要学会用python,可以使用它来开发一些项目最好不过了.下面小编用python实现一个小游戏-飞机大战,使用的python ...
- 【Python飞机大战游戏实战+笔记】黑马程序员Python教程项目实战记录【超详细】
博主在哔哩哔哩上学习了黑马程序员的python教程,并且完成了老师讲的项目实战,为了巩固知识点通过这篇博客来记录一下. 目录 1. 创建python项目+pygame模块下载 1.1 创建项目 1.2 ...
- python飞机大战设计思路_python飞机大战pygame游戏背景设计详解
本文实例讲述了python飞机大战pygame游戏背景设计.分享给大家供大家参考,具体如下: 目标 背景交替滚动的思路确定 显示游戏背景 01. 背景交替滚动的思路确定 运行 备课代码,观察 背景图像 ...
- python飞机大战联网版_Python 飞机大战搞怪版本
python 飞机大战搞怪版本 (飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) ...
- C++的学习心得和知识总结(十六)|基于EasyX实现小甲鱼Python飞机大战项目(C++版)
目录结构 注:提前言明 本文借鉴了以下博主.书籍或网站的内容,其列表如下: 1.小甲鱼Python项目 – 飞机大战 2.本文使用的掩码图生成工具 自动生成遮罩图的程序,点击前往 3.EasyX官方链 ...
- python飞机大战源码素材包_小甲鱼python基础教程飞机大战源码及素材
原博文 2018-12-22 23:32 − 百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取 ...
- python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...
怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...
- python飞机大战,感受python的乐趣(详细中文解读,含完整代码)
python飞机大战 本文章代码是根据<python编程从入门到实践>(第2版)编写而成. 1.外星人部分代码 import pygame from pygame.sprite impor ...
- python飞机大战功能模块图_基于Python的飞机大战游戏设计
第 2 3 卷 第 1 期 2019年 3 月 扬 州 职 业 大 学 学 报 Journal of Yangzhou Polytechnic College Vol .23 No . 1 Mar . ...
最新文章
- 安全性断言标记语言(SAML)介绍
- 查看Linux服务器下的内存使用情况
- 阿里巴巴CEO马云最新超经典哲学语录
- SQL Server 2008 无法删除用户的解决方法
- 记一次笑哭的unterminated string literal报错
- CSS之引入方式和选择器
- @ResponseBody注解學習
- python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结
- maven中,xml文件无法编译,想要在Java中写xml文件,需要配置xml信息,另外springBoot设置如何在资源目录下扫描xml文件
- 使用 VMware vRealize Automation 6.2.1 中的 Remote Console (VMRC) 选项连接到资源失败,并显示以下错误: 无法建立远程控制台连接
- InstallShield使用完全教程
- 计算机微积分基础试题及答案,试题及答案_基础微积分Ⅱ_大学网课答案
- 边缘计算以及kubeedge概念的通俗解释
- 3D打印切片软件cura使用
- 扫码枪扫码直接提交ajax,js监听页面扫码枪
- 天池比赛二手车预测Task2-数据分析
- 电子商务网站设计与实现
- .net微信 验证 Token完整代码
- Python|泰坦尼克号幸存者画像
- 微擎打开导航提示该网页无法正常运作