【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').convert_alpha()
		self.image2 = pygame.image.load(r'E:\learn pygame\image\me2.png').convert_alpha()
		self.image3 = pygame.image.load(r'E:\learn pygame\image\me_protect.png').convert_alpha()
		self.destroy_images = []
		self.destroy_images.extend([\
			pygame.image.load(r'E:\learn pygame\image\me_destroy_1.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\me_destroy_2.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\me_destroy_3.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\me_destroy_4.png').convert_alpha() \
			])
		self.rect = self.image1.get_rect()
		self.width,self.height = bg_size[0],bg_size[1]
		self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 60
		self.speed = 10
		self.active = True
		self.invincible = False
		self.mask = pygame.mask.from_surface(self.image1)

	def moveUp(self):
		if self.rect.top > 0:
			self.rect.top -= self.speed
		else:
			self.rect.top = 0
			
	def moveDown(self):
		if self.rect.bottom < self.height - 30:
			self.rect.top += self.speed
		else:
			self.rect.bottom = self.height - 30
			
	def moveLeft(self):
		if self.rect.left > 0:
			self.rect.left -= self.speed
		else:
			self.rect.left = 0
			
	def moveRight(self):
		if self.rect.right < self.width:
			self.rect.left += self.speed
		else:
			self.rect.right = self.width
			
	def reset(self):
		self.rect.left,self.rect.top = (self.width - self.rect.width) // 2,self.height - self.rect.height - 30
		self.active = True	
		self.invincible = True
	
		
2、敌机与背景动图模块

import pygame
from random import *

class SmallEnemy(pygame.sprite.Sprite):
	energy = 1
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		self.image = pygame.image.load(r'E:\learn pygame\image\enemy1.png').convert_alpha()
		self.destroy_images = []
		self.destroy_images.extend([\
			pygame.image.load(r'E:\learn pygame\image\enemy1_down1.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy1_down2.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy1_down3.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy1_down4.png').convert_alpha() \
			])
		self.rect = self.image.get_rect()
		self.width,self.height = bg_size[0],bg_size[1]
		self.speed = 2
		self.active = True
		self.rect.left,self.rect.top = \
						randint(0,self.width - self.rect.width), \
						randint(-5 * self.height, 0)
		self.mask = pygame.mask.from_surface(self.image)
		self.energy = SmallEnemy.energy
		self.hit = False
		
	def move(self):
		if self.rect.top < self.height:
			self.rect.top += self.speed
		else:
			self.reset()
	
	def reset(self):
		self.active = True
		self.energy = SmallEnemy.energy
		self.rect.left,self.rect.top = \
					randint(0,self.width - self.rect.width), \
					randint(-5 * self.height, 0)
					
class MidEnemy(pygame.sprite.Sprite):
	energy = 4 
	
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		
		self.image = pygame.image.load(r'E:\learn pygame\image\enemy2.png').convert_alpha()
		self.image_hit = pygame.image.load(r'E:\learn pygame\image\enemy2_hit.png').convert_alpha()
		self.destroy_images = []
		self.destroy_images.extend([\
			pygame.image.load(r'E:\learn pygame\image\enemy2_down1.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy2_down2.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy2_down3.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy2_down4.png').convert_alpha() \
			])
		self.rect = self.image.get_rect()
		self.width,self.height = bg_size[0],bg_size[1]
		self.speed = 2
		self.active = True
		self.rect.left,self.rect.top = \
						randint(0,self.width - self.rect.width), \
						randint(-10 * self.height, -self.height)
		self.mask = pygame.mask.from_surface(self.image)
		self.energy = MidEnemy.energy
		self.hit = False
		
	def move(self):
		if self.rect.top < self.height:
			self.rect.top += self.speed
		else:
			self.reset()
	
	def reset(self):
		self.active = True
		self.energy = MidEnemy.energy
		self.rect.left,self.rect.top = \
					randint(0,self.width - self.rect.width), \
					randint(-10 * self.height, -self.height)
					
					
class BigEnemy(pygame.sprite.Sprite):
	energy = 8
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		
		self.image1 = pygame.image.load(r'E:\learn pygame\image\enemy3_n1.png').convert_alpha()
		self.image2 = pygame.image.load(r'E:\learn pygame\image\enemy3_n2.png').convert_alpha()
		self.image_hit = pygame.image.load(r'E:\learn pygame\image\enemy3_hit.png').convert_alpha()
		self.destroy_images = []
		self.destroy_images.extend([\
			pygame.image.load(r'E:\learn pygame\image\enemy3_down1.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy3_down2.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy3_down3.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy3_down4.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy3_down5.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\enemy3_down6.png').convert_alpha() \
			])
		self.rect = self.image1.get_rect()
		self.width,self.height = bg_size[0],bg_size[1]
		self.speed = 2
		self.active = True
		self.rect.left,self.rect.top = \
						randint(0,self.width - self.rect.width), \
						randint(-15 * self.height, -5 * self.height)
		self.mask = pygame.mask.from_surface(self.image1)
		self.energy = BigEnemy.energy
		self.hit = False
		
	def move(self):
		if self.rect.top < self.height:
			self.rect.top += self.speed
		else:
			self.reset()
	
	def reset(self):
		self.active = True
		self.energy = BigEnemy.energy
		self.rect.left,self.rect.top = \
					randint(0,self.width - self.rect.width), \
					randint(-15 * self.height, -5 * self.height)
					
class Cloud1(pygame.sprite.Sprite):
	energy = 2
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		
		self.image = pygame.image.load(r'E:\learn pygame\image\cloud1.png').convert_alpha()
		self.rect = self.image.get_rect()
		self.width,self.height = bg_size[0],bg_size[1]
		self.speed = 1
		self.active = True
		self.rect.left,self.rect.top = \
						randint(0,self.width - self.rect.width), \
						randint(-5 * self.height, 0)
		self.energy = Cloud1.energy
		
	def move(self):
		if self.rect.top < self.height:
			self.rect.top += self.speed
		else:
			self.reset()
	
	def reset(self):
		self.active = True
		self.energy = Cloud1.energy
		self.rect.left,self.rect.top = \
					randint(0,self.width - self.rect.width), \
					randint(-5 * self.height, 0)
					
class Cloud2(pygame.sprite.Sprite):
	energy = 2
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		
		self.image = pygame.image.load(r'E:\learn pygame\image\cloud1.png').convert_alpha()
		self.rect = self.image.get_rect()
		self.width,self.height = bg_size[0],bg_size[1]
		self.speed = 1
		self.active = True
		self.rect.left,self.rect.top = \
						randint(0,self.width - self.rect.width), \
						randint(-5 * self.height, 0)
		self.energy = Cloud2.energy
	
	def move(self):
		if self.rect.top < self.height:
			self.rect.top += self.speed
		else:
			self.reset()
	
	def reset(self):
		self.active = True
		self.energy = Cloud2.energy
		self.rect.left,self.rect.top = \
					randint(0,self.width - self.rect.width), \
					randint(-5 * self.height, 0)
					
class BombEnemy(pygame.sprite.Sprite):
	energy = 10
	
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		
		self.image1 = pygame.image.load(r'E:\learn pygame\image\bomb_enemy1.png').convert_alpha()
		self.image2 = pygame.image.load(r'E:\learn pygame\image\bomb_enemy2.png').convert_alpha()
		self.rect = self.image1.get_rect()
		self.destroy_images = []
		self.destroy_images.extend([ \
			pygame.image.load(r'E:\learn pygame\image\bomb_enemy_down1.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\bomb_enemy_down2.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\bomb_enemy_down3.png').convert_alpha(), \
			pygame.image.load(r'E:\learn pygame\image\bomb_enemy_down4.png').convert_alpha(), \
			])
		self.width,self.height = bg_size[0],bg_size[1]
		self.speed = 2
		self.active = True
		self.rect.left,self.rect.top = \
						randint(0,self.width - self.rect.width), \
						randint(-15 * self.height, -5 * self.height)
		self.mask = pygame.mask.from_surface(self.image1)
		self.energy = BombEnemy.energy
		self.hit = False
		
	def move(self):
		if self.rect.top < self.height:
			self.rect.top += self.speed
		else:
			self.reset()
	
	def reset(self):
		self.active = True
		self.energy = BombEnemy.energy
		self.rect.left,self.rect.top = \
					randint(0,self.width - self.rect.width), \
					randint(-15 * self.height, -5 * self.height)
					
class BackGround1(pygame.sprite.Sprite):
	def __init__(self,bg_size):
		pygame.sprite.Sprite.__init__(self)
		
		self.image = pygame.image.load(r'E:\learn pygame\image\background1.png').convert_alpha()
		self.rect = self.image.get_rect()
		self.w
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值