飞机大战基本功能实现

基本功能包括:

  1. 玩家飞机显示
  2. 玩家发射子弹
  3. 敌机显示
  4. 敌机发射子弹
# -*- coding: utf-8 -*-
"""
Created on Mon Feb 24 08:09:08 2020

@author: Administrator
"""
import pygame,sys,time,random
from pygame.locals import *

class PlayerPlane(object):
    def __init__(self,screen):
        #飞机子弹
        self.bullet = []
        
        
        #设置速度
        self.speed = 5
        #设置飞机名字
        self.name = "player"
        
        #飞机zhaop
        planeImage = "Resources/hero.png"
        self.image = pygame.image.load(planeImage).convert() 
          #设置默认坐标
        self.x = 200
        self.y = 520
       
        #窗口属性
        self.chuangkou = screen
        
    def draw(self):
        self.chuangkou.blit(self.image,(self.x,self.y))
        for temp in self.bullet:
            temp.draw()
    def planeHandle(self,keyValue):

        if keyValue == "right":
            self.x+= 10
            print("right")
        elif keyValue == "left":
            self.x -= 10
            print("left")
        elif keyValue == "space":
            print("space")
            self.bullet.append(Bullet("player",self.x+32,self.y-15,self.chuangkou))
            
class Bullet(object):
    def __init__(self,name,x,y,screen):
        #子弹照片
        
        #子弹位置
        self.x = x
        self.y = y
        #子弹的名称
        self.name = name
        if self.name == "player":
            bulletImage = "Resources/bullet-1.png"
            self.image = pygame.image.load(bulletImage).convert()
        elif self.name == "enemy":
            bulletImage = "Resources/bullet-3.png"
            self.image = pygame.image.load(bulletImage).convert()
        self.chuangkou = screen
    def draw(self):
        if self.name == "enemy":
            self.y += 4     
        elif self.name == "player":
            self.y -= 3
        self.chuangkou.blit(self.image,(self.x,self.y))
    
class EnemyPlane(object):
    def __init__(self,screen):
        #飞机子弹
        self.bullet = []
        #设置速度
        self.speed = 5
        #设置飞机名字
        self.name = "enemy"
        #飞机zhaop
        planeImage = "Resources/enemy-2.png"
        self.image = pygame.image.load(planeImage).convert()
        #设置默认坐标
        self.x = 20
        self.y = 20
        #窗口属性
        self.chuangkou = screen
        self.fangxiang = "向右"
        self.bullet = []
    def draw(self):
        self.chuangkou.blit(self.image,(self.x,self.y))
        for temp in self.bullet:
            temp.draw()
      
    def move(self):
        if self.fangxiang =="向右":
            self.x +=2
        elif self.fangxiang =="向左":
            self.x -=2
        if self.x>400:
            self.fangxiang = "向左"
        elif self.x<0:
            self.fangxiang = "向右"
        randnum = random.randint(1,100)
        if randnum in [1,50]:
            self.bullet.append(Bullet("enemy",self.x+25,self.y+60,self.chuangkou))
            

        
    

    
if __name__ == "__main__":
    #创建界面
    screen = pygame.display.set_mode((480,600),0,32)
    bgImageFile = "Resources/background.png"
    background = pygame.image.load(bgImageFile).convert()
    player = PlayerPlane(screen)
    enemy =  EnemyPlane(screen)
    #显示背景
    while True:
        screen.blit(background,(0,0))

        #判断是否点击了退出按钮
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                print("exit")
                
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a or event.key == K_LEFT:
                    player.planeHandle("left")
                elif event.key == pygame.K_b or event.key == K_RIGHT:
                    player.planeHandle("right")
                elif event.key == K_SPACE:
                    player.planeHandle("space") 
                    
        player.draw()
        enemy.draw()
        enemy.move()
      
      
        pygame.display.update()
        
        time.sleep(0.01) 
          
                  --------- 视频学习 小酥仙儿  2020.2.24 --------      
发布了5 篇原创文章 · 获赞 0 · 访问量 47

猜你喜欢

转载自blog.csdn.net/qq_40278637/article/details/104474422