Python实现简单飞机大战

本文实例为大家分享了Python实现简单飞机大战的具体代码,供大家参考,具体内容如下

功能

玩家飞机可以移动,可以发射子弹,敌机随机产生,自由坠落。未添加击落敌机的功能。主要用来练习类的封装与继承。

源码

# -*- coding=utf-8 -*-
import pygame, random
from pygame.locals import *

class Base(object):
    def __init__(self, x, y, screen):
        self.screen = screen
        self.x = x
        self.y = y

class Player(Base):
    def __init__(self):
        super().__init__(210, 600, screen)
        self.playerName = "./feiji/hero.gif"
        self.player = pygame.image.load(self.playerName).convert()
        self.bullet_list = []

    def display(self):
        self.screen.blit(self.player, (self.x, self.y))
        for bullet in self.bullet_list:
            bullet.display()
            bullet.mov()

    def move_left(self):
        self.x -= 10

    def move_right(self):
        self.x += 10

    def move_up(self):
        self.y -= 10

    def move_down(self):
        self.y += 10

    def shot(self):
        bullet = Bullet()
        self.bullet_list.append(bullet)

class Bullet(Base):
    def __init__(self):
        super().__init__(player.x+40, player.y-20, screen)
        self.bulletName = "./feiji/bullet-3.gif"
        self.bullet = pygame.image.load(self.bulletName).convert()

    def display(self):
        self.screen.blit(self.bullet, (self.x, self.y))

    def mov(self):
        self.y -= 10

class Enemy(Base):
    def __init__(self):
        super().__init__(random.randint(1, 10)*40, 0, screen)
        self.enemyName = "./feiji/enemy-1.gif"
        self.enemy = pygame.image.load(self.enemyName).convert()
        self.enemy_list = []
        self.i = 0

    def mov(self):
        self.y += 2

class EnemyArea(Enemy):
    def display(self):
        # 每隔一段时间创建一架敌机
        if self.i % 80 == 0:
            new_enemy = Enemy()
            self.enemy_list.append(new_enemy)
        self.i += 1
        for enemy in self.enemy_list:
            self.screen.blit(enemy.enemy, (enemy.x, enemy.y))
            enemy.mov()

if __name__ == '__main__':
    # 创建一个窗口,用来显示内容
    screen = pygame.display.set_mode((480, 890))
    # 创建一个和窗口大小的图片,用来充当背景
    background = pygame.image.load("./feiji/background.png").convert()
    player = Player()
    enemy = Enemy()
    enemy_area = EnemyArea()
    while True:
        screen.blit(background, (0, 0))
        player.display()
        enemy_area.display()
        # 判断按键
        for event in pygame.event.get():
            if event.type == QUIT:
                exit()
            elif event.type == KEYDOWN:
                if event.key == K_a or event.key == K_LEFT:
                    player.move_left()
                elif event.key == K_d or event.key == K_RIGHT:
                    player.move_right()
                elif event.key == K_w or event.key == K_UP:
                    player.move_up()
                elif event.key == K_s or event.key == K_DOWN:
                    player.move_down()
                elif event.key == K_SPACE:
                    player.shot()
                elif event.key == K_q:
                    exit()
        pygame.display.update()
        pygame.time.delay(10)

结果展示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python实现飞机大战

    本文实例为大家分享了python实现飞机大战的具体代码,供大家参考,具体内容如下 实现的效果如下: 主程序代码如下: import pygame from plane_sprites import * class PlaneGame(object): """飞机大战主游戏""" def __init__(self): print("游戏初始化") # 1,绘制屏幕窗口 self.screen = pygame.display.

  • python pygame模块编写飞机大战

    本文实例为大家分享了python pygame模块编写飞机大战的具体代码,供大家参考,具体内容如下 该程序没有使用精灵组,而是用列表存储对象来替代精灵组的动画效果.用矩形对象的重叠来判断相撞事件.该程序可以流畅运行,注释较为详细,希望可以帮助大家. import pygame from pygame.locals import * from sys import exit import time import random # 创建子弹类,把子弹的图片转化为图像对象,设定固定的移动速度 clas

  • python飞机大战pygame碰撞检测实现方法分析

    本文实例讲述了python飞机大战pygame碰撞检测实现方法.分享给大家供大家参考,具体如下: 目标 了解碰撞检测方法 碰撞实现 01. 了解碰撞检测方法 pygame 提供了 两个非常方便 的方法可以实现碰撞检测: pygame.sprite.groupcollide() 两个精灵组 中 所有的精灵 的碰撞检测 groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict 如果将 dokill 设

  • python实现飞机大战项目

    本文实例为大家分享了python实现飞机大战的具体代码,供大家参考,具体内容如下 引用了小甲鱼的框架,往上面添加了一些新功能 1.我方飞机模块 import pygame class MyPlane(pygame.sprite.Sprite): def __init__(self,bg_size): pygame.sprite.Sprite.__init__(self) self.image1 = pygame.image.load(r'E:\learn pygame\image\me1.png

  • python实现飞机大战游戏

    飞机大战(Python)代码分为两个python文件,工具类和主类,需要安装pygame模块,能完美运行(网上好多不完整的,调试得心累.实现出来,成就感还是满满的),如图所示: 完整代码如下: 1.工具类plane_sprites.py import random import pygame # 屏幕大小的常量 SCREEN_RECT = pygame.Rect(0, 0, 480, 700) # 刷新的帧率 FRAME_PER_SEC = 60 # 创建敌机的定时器常量 CREATE_ENEM

  • python版飞机大战代码分享

    利用pygame实现了简易版飞机大战.源代码如下: # -*- coding:utf-8 -*- import pygame import sys from pygame.locals import * from pygame.font import * import time import random class Hero(object): #玩家 英雄类 def __init__(self, screen_temp): self.x = 210 self.y = 700 self.life

  • python实现飞机大战微信小游戏

    0.前言 我学一种语言,可以说学任何东西都喜欢自己动手实践,总感觉自己动手一遍,就可以理解的更透彻,学python也一样,自己动手写代码,但更喜欢做点小东西出来,一边玩一边学.下面我就展示一下我最近做的一个小游戏. 1.素材准备 首先我们先来预览一下游戏的最终运行界面 根据游戏界面,我们可以清楚的知道必须要先准备游戏背景图片,飞机图片,子弹图片等等.这些素材我已经放到网上, 点我下载 ,里面包括了我的代码和图片素材. 2.代码部分 库依赖: pygame 本游戏主要有两个py文件,主文件plan

  • 用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动

    目标是拷贝微信的飞机大战,当然拷贝完以后大家就具备自己添加不同内容的能力了. 首先是要拿到一些图片素材,熟悉使用图像处理软件和绘画的人可以自己制作,并没有这项技能的同学只能和我一样从网上下载相应的素材了. 网上可以找到相应的这样的图片,注意,所有的元件图片要是png类型的图片,那样可以有透明的背景,否则会有白色的边框露出来. 找到素材以后我们就要开始搭建我们的飞机大战了. 微信上的飞机大战是由手指控制的,在电脑上,我们就先用鼠标代替了. 按照之前我们在天空上移动云的那个程序,我们可以知道该怎么做

  • python实现飞机大战小游戏

    本文实例为大家分享了python实现飞机大战的具体代码,供大家参考,具体内容如下 初学Python,写了一个简单的Python小游戏. 师出bilibili某前辈 pycharm自带了第三方库pygame,安装一下就好了,很方便. 虽然很多大佬已经给出了步骤,我这里还是啰嗦一下,也为了自己巩固一下. 上图: 这里再给出代码的逻辑架构 plane_main.py import pygame from plane_sprites import * class PlaneGame(object): "

  • python实现飞机大战游戏(pygame版)

    简介 使用python实现pygame版的飞机大战游戏: 环境:Windows系统+python3.8.0 游戏规则: 1.点击"PLAY"或者按键"P"开始游戏: 2.敌机根据设置频率从顶部随机位置生成,生成后向下移动: 3.飞船在底部中间生成,玩家使用上下左右键控制飞船移动,敲击空格键发射子弹: 4.子弹打到敌机,该敌机产生爆炸效果并累计分数到右上角: 5.消灭10只飞机后,等级升高,敌机生成频率变快,下落速度也变快: 6.当三条命都消失了,游戏结束. 游戏运行

随机推荐