#!/usr/bin/python
#!coding:utf-8
import pygame
import time
#导入按键的检测包,之前没有加载这个包导致按键没有反应,代码异常
from pygame.locals import *
import random
#要定义玩家飞机的类和子弹飞机的位置和子弹的位置密切相关class playerPlane(object):def __init__(self,screen):self.playerName = 'player'playerImage = './打飞机/player.png'self.Image = pygame.image.load(playerImage).convert()self.x = 5self.y = 450self.bullet = []self.screen = screen#定义一个方法,让飞机显示不同的位置,不能是死位置不动,飞机和#子弹的位置密切相关所以画了飞机,接着画子弹,值得注意的是画子弹的函数与画飞机#的函数不同,有反复调用的感觉。#最初时,我在主程序也可以画子弹,运行效果与此相同。def draw(self):self.screen.blit(self.Image,(self.x ,self.y))for temp in self.bullet:temp.draw2()#控制玩家飞机飞机的合理区域,不能超出窗口的边界def playerRange(self):if self.x < 0:self.x = 0elif self.x > 330:self.x = 330elif self.y < 0:self.y = 0elif self.y > 470:self.y = 470#定义一个按键控制飞机的方法def keyHandle(self,keyValue):global G_Bulletif keyValue == 'left':self.x -= 20self.playerRange()elif keyValue == 'right':self.x += 20self.playerRange()elif keyValue == 'up':self.y -= 20self.playerRange()elif keyValue == 'down':self.y += 20self.playerRange()elif keyValue == 'space':print('发射导弹')
#这一句比较复杂,需要深刻理解,增加子弹并传参
#同时用列表对象,使用了append,使得子弹不再是一个,而是多个self.bullet.append(Bullet(self.screen, self.x ,self.y))class Bullet(object):def __init__(self ,screen, x ,y):bulletImage = './打飞机/bullet.png'self.ziDan = pygame.image.load(bulletImage).convert()
#把传递的参数消化接受,转成自己的属性,很重要self.screen = screenself.x = x + 40self.y = y
#定义一个画玩家子弹的方法def draw2(self):self.y -= 5self.screen.blit(self.ziDan,(self.x ,self.y))
#创建电脑飞机,来回的飞,且不断发射子弹
class EnemyPlane(object):def __init__(self,screen):self.name = 'enemy'enemyPlneImage = './打飞机/enemyPlane.png'self.image = pygame.image.load(enemyPlneImage).convert()self.x = 0self.y = 0self.enemyScreen = screenself.direction = 'right'self.enemyBul = []#定义敌机的运行轨迹def moveEnemy(self):if self.x >=390:self.direction = 'left'elif self.x < 0:self.direction = 'right'if self.direction == 'right':self.x += 10elif self.direction == 'left':self.x -= 10randomNum = random.randint(0,100)if randomNum in [1,2,3,4,5,6,8,10]:self.enemyBul.append(enemyBullet(screen,self.x ,self.y))def draw3(self):self.moveEnemy()self.enemyScreen.blit(self.image ,(self.x ,self.y))for temp in self.enemyBul:temp.draw4()
class enemyBullet(object):def __init__(self, screen, x ,y):enemyBul = './打飞机/enemybullet.png'self.enemyBulImage = pygame.image.load(enemyBul).convert()self.x = x + 15self.y = y + 30self.eneScreen =screendef draw4(self):self.y += 5self.eneScreen.blit(self.enemyBulImage,(self.x ,self.y))
#加载工具包后,创建游戏界面
if __name__ == '__main__':screen = pygame.display.set_mode((410,527),0,32)bgImageFile = './打飞机/background.png'backGround = pygame.image.load(bgImageFile).convert()player = playerPlane(screen)enemyPlane = EnemyPlane(screen)while True:screen.blit(backGround,(0,0))
#定义一个捕捉玩家按键的操作,并作出初步判断,把得到的值传递出去for event in pygame.event.get():if event.type == QUIT:# if event.type == quit:print('退出')quit()elif event.type == KEYDOWN:if event.key == K_a or event.key == K_LEFT:print('left')player.keyHandle('left')elif event.key == K_d or event.key == K_RIGHT:print('right')player.keyHandle('right')elif event.key == K_w or event.key == K_UP:print('up')player.keyHandle('up')elif event.key == K_s or event.key == K_DOWN:print('down')player.keyHandle('down')elif event.key == K_SPACE:print('发射')player.keyHandle('space')player.draw()enemyPlane.draw3()pygame.display.update()
#让CPU运行的慢一点time.sleep(0.1)

重点要关注子弹初发射的坐标和飞机有密切相关性,因此创建对象的时候要注意。

python:打飞机游戏相关推荐

  1. 手把手带你做一个Python打飞机游戏

    搭建界面 #coding=utf-8 import pygame'''1\. 搭建界面,主要完成窗口和背景图的显示 '''if __name__ == "__main__":#1\ ...

  2. python 之路200行Python代码写了个打飞机游戏

    先看一下项目结构 \ """ PlayPlane/ |-- bin/ | |-- main.py 程序运行主体程序 |-- config/ | |-- settings. ...

  3. python 之路,200行Python代码写了个打飞机游戏!

    先看一下项目结构 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 """ PlayPlane/ |-- bin/ |   |-- mai ...

  4. python写飞机大战游戏_python实现飞机大战游戏

    飞机大战(Python)代码分为两个python文件,工具类和主类,需要安装pygame模块,能完美运行(网上好多不完整的,调试得心累.实现出来,成就感还是满满的),如图所示: 完整代码如下: 1.工 ...

  5. python飞机游戏视频教程_10分钟教你用Python做个打飞机小游戏超详细教程

    01 前言 这次还是用python的pygame库来做的游戏.关于这个库的内容,读者可以上网了解一下.本文只讲解用到的知识.代码参考自网上,自己也做了一点代码简化.尽量把最核心的方面用最简单的方式呈现 ...

  6. Python之路—200行Python代码搞了个打飞机游戏!!

    早就知道pygame模块,就是没怎么深入研究过,恰逢这周未没约到妹子,只能自己在家玩自己啦,一时兴起,花了几个小时写了个打飞机程序. 很有意思,跟大家分享下. 先看一下项目结构 1 2 3 4 5 6 ...

  7. python做飞机大战游戏_python实现飞机大战游戏

    飞机大战(Python)代码分为两个python文件,工具类和主类,需要安装pygame模块,能完美运行(网上好多不完整的,调试得心累.实现出来,成就感还是满满的),如图所示: 完整代码如下: 1.工 ...

  8. python实现飞机大战游戏

    python实现飞机大战小游戏(含源码+视频资源) 导语: 正文: 1.开发工具 2.环境搭建 3.效果如下 Step1:定义精灵类 Step2:实现游戏主循环 Step3:制作简易的游戏开始和结束界 ...

  9. python制作飞机大战游戏准备工作相关知识点

    python制作飞机大战游戏准备工作相关知识点 1.初始化背景 `import pygame` : 导入pygame模块 `pygame.init()` : 导入并初始化所有 `pygame` 模块, ...

  10. python识图打怪_识别×图片、打飞机游戏,Python这些事你都知道吗?

    Python是挺神奇的. 可以做很多好玩的事情,今天就带大家看看,Python做的那些神奇好玩的事. 1.Python - Django 搭建简易博客 使用 Django 开发一个简单的博客 Web应 ...

最新文章

  1. oracle执行长任务,oracle 里面定时执行任务设置
  2. React系列---React+Redux工程目录结构划分
  3. mySql安装时常见问题处理
  4. territory pop up window是否显示的逻辑,和transaction type差不多
  5. python读取文本文件的三种方法
  6. mysql begin operations_MySQL入门(七):More JOIN operations
  7. Spring(1)—初识
  8. Eclipse中ICTCLAS 2011 的java调用
  9. 设置java heap_JAVA HEAP SPACE解决方法和JVM参数设置
  10. OpenGL超级宝典(第7版)环境配置和相关问题
  11. Nachos 用户进程地址分配
  12. Customer类的设计
  13. idea解决Untracked Files Prevent Merge问题
  14. Android 仿微信实现语音聊天功能
  15. 杨百翰大学计算机科学,杨百翰大学
  16. 什么是物联网?这里有你需要了解的一切
  17. 小博老师浅谈Context(一)
  18. 【苹果推iMessage送】摆设overrideUserInterfaceStyle属性以使该视图及其子视图具备特定的UIUserInterfaceStyle
  19. 解决windows图标和程序真正图标不一致的问题。
  20. 人的一生会遇上的四个人

热门文章

  1. matlab upfc,UPFC是什么意思
  2. 计算机怎么不显示打开文件桌面,开机不显示桌面图标怎么办【解决方法】
  3. uclinux和linux的使用区别,基于uClinux和Linux的对比分析
  4. 强大数定律与弱大数定律(民科解释)
  5. vue 在线答题功能
  6. kafka报错:Replication factor:larger than available brokers
  7. android 126邮箱格式,如何在Android系统邮件应用程序中添加帐户(默认POP3)
  8. flvjs is not defined
  9. 我爱淘冲刺阶段站立会议2每天任务6
  10. 监督学习与无监督学习