两个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的导包方法相关推荐

  1. python飞机大战游戏代码_用python语言如何实现飞机大战游戏

    python语言博大精深,它目前来说已经很火热了,在学好python的同时还要学会用python,可以使用它来开发一些项目最好不过了.下面小编用python实现一个小游戏-飞机大战,使用的python ...

  2. 【Python飞机大战游戏实战+笔记】黑马程序员Python教程项目实战记录【超详细】

    博主在哔哩哔哩上学习了黑马程序员的python教程,并且完成了老师讲的项目实战,为了巩固知识点通过这篇博客来记录一下. 目录 1. 创建python项目+pygame模块下载 1.1 创建项目 1.2 ...

  3. python飞机大战设计思路_python飞机大战pygame游戏背景设计详解

    本文实例讲述了python飞机大战pygame游戏背景设计.分享给大家供大家参考,具体如下: 目标 背景交替滚动的思路确定 显示游戏背景 01. 背景交替滚动的思路确定 运行 备课代码,观察 背景图像 ...

  4. python飞机大战联网版_Python 飞机大战搞怪版本

    python 飞机大战搞怪版本 (飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) ...

  5. C++的学习心得和知识总结(十六)|基于EasyX实现小甲鱼Python飞机大战项目(C++版)

    目录结构 注:提前言明 本文借鉴了以下博主.书籍或网站的内容,其列表如下: 1.小甲鱼Python项目 – 飞机大战 2.本文使用的掩码图生成工具 自动生成遮罩图的程序,点击前往 3.EasyX官方链 ...

  6. python飞机大战源码素材包_小甲鱼python基础教程飞机大战源码及素材

    原博文 2018-12-22 23:32 − 百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取 ...

  7. python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...

    怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...

  8. python飞机大战,感受python的乐趣(详细中文解读,含完整代码)

    python飞机大战 本文章代码是根据<python编程从入门到实践>(第2版)编写而成. 1.外星人部分代码 import pygame from pygame.sprite impor ...

  9. python飞机大战功能模块图_基于Python的飞机大战游戏设计

    第 2 3 卷 第 1 期 2019年 3 月 扬 州 职 业 大 学 学 报 Journal of Yangzhou Polytechnic College Vol .23 No . 1 Mar . ...

最新文章

  1. 安全性断言标记语言(SAML)介绍
  2. 查看Linux服务器下的内存使用情况
  3. 阿里巴巴CEO马云最新超经典哲学语录
  4. SQL Server 2008 无法删除用户的解决方法
  5. 记一次笑哭的unterminated string literal报错
  6. CSS之引入方式和选择器
  7. @ResponseBody注解學習
  8. python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结
  9. maven中,xml文件无法编译,想要在Java中写xml文件,需要配置xml信息,另外springBoot设置如何在资源目录下扫描xml文件
  10. 使用 VMware vRealize Automation 6.2.1 中的 Remote Console (VMRC) 选项连接到资源失败,并显示以下错误: 无法建立远程控制台连接
  11. InstallShield使用完全教程
  12. 计算机微积分基础试题及答案,试题及答案_基础微积分Ⅱ_大学网课答案
  13. 边缘计算以及kubeedge概念的通俗解释
  14. 3D打印切片软件cura使用
  15. 扫码枪扫码直接提交ajax,js监听页面扫码枪
  16. 天池比赛二手车预测Task2-数据分析
  17. 电子商务网站设计与实现
  18. .net微信 验证 Token完整代码
  19. Python|泰坦尼克号幸存者画像
  20. 微擎打开导航提示该网页无法正常运作

热门文章

  1. 癌症与各种微量元素的关系
  2. CityMaker学习教程12 osg模型的创建
  3. 集群和均衡负载[摘]
  4. “Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么?”
  5. Objective-C 之父 Brad Cox 逝世,创建过乐队、推动苹果软件生态
  6. 操作系统中四步法实现PV操作
  7. 不用再期待别人的认可
  8. 通过 JFR 与日志深入探索 JVM - TLAB 原理详解
  9. 吉尔伯特定律(转载)
  10. Linux下C语言 对pow、exp未定义引用问题