开枪
class Zidan:
def __init__(self,shashangli):
self.shashangli = shashangli
def gongjizhi(self):
return self.shashangli
class Danjia:
def __init__(self,rongliang):
self.danjiarongliang = rongliang
self.zidanliebiao = []
def zhuangzidan(self,zidan):
self.zidanliebiao.append(zidan)
print("子弹+1....当前的子弹数是:%d"%len(self.zidanliebiao))
def chuzidan(self):
if len(self.zidanliebiao)>0:
zidan = self.zidanliebiao[-1]
shashangli = zidan.gongjizhi()
self.zidanliebiao.pop()
print("子弹-1....当前的子弹数是:%d"%len(self.zidanliebiao))
else:
shashangli = 0
return shashangli
class Qiang:
def __init__(self,name):
self.name = name
def huandanjia(self,danjia):
self.danjia = danjia
def fashe(self,mubiao):
shashangli = self.danjia.chuzidan()
mubiao.diaoxue(shashangli)
class Ren:
def __init__(self):
self.shengmingzhi = 100
def maiqiang(self,qiang):
self.qiang = qiang
print('买了一把枪')
def yazidan(self,danjia,zidan):
danjia.zhuangzidan(zidan)
def zhuangdanjia(self,danjia):
self.qiang.huandanjia(danjia)
def kaiqiang(self,mubiao):
self.qiang.fashe(mubiao)
def diaoxue(self,shashangli):
self.shengmingzhi -= shashangli
print('剩余的生命值为:%d'%self.shengmingzhi)
xiaoming = Ren()
daju = Qiang('daju')
xiaoming.maiqiang(daju)
danjia = Danjia(100)
zidan = Zidan(5)
xiaoming.yazidan(danjia,zidan)
xiaoming.zhuangdanjia(danjia)
laowang = Ren()
zidan = Zidan(10)
xiaoming.yazidan(danjia,zidan)
zidan = Zidan(11)
xiaoming.yazidan(danjia,zidan)
xiaoming.kaiqiang(laowang)
xiaoming.kaiqiang(laowang)
xiaoming.kaiqiang(laowang)
object
class Wupin:
def __init__(self,mianji):
self.__zhanyongmianji = mianji
def huoqumianji(self):
return self.__zhanyongmianji
def gengmianji(self,mianji):
if mianji<10:
self.__zhanyongmianji = mianji
class Chuang(Wupin):
pass
class Chaji(Wupin):
@classmethod
def createNumChaji(cls, num):
tempList = []
tempList.append(Chaji(2))
tempList.append(Chaji(2))
tempList.append(Chaji(2))
return tempList
class Home:
def __init__(self,mianji):
self.keyongmianji = mianji
def rongna(self,wupin):
if self.keyongmianji>wupin.huoqumianji():
self.keyongmianji = self.keyongmianji - wupin.huoqumianji()
print("可以安置好物品,,,,,,剩余面积为:%d"%self.keyongmianji)
else:
print("不能安置好物品,,,,,,剩余面积为:%d"%self.keyongmianji)
chajiList = Chaji.createNumChaji(3)
print(len(chajiList))
飞机
import pygame
from pygame.locals import *
import random
from sys import exit
import time
class Bullet:
def __init__(self,planeName,x,y):
print('Bullet----->>>')
if planeName == 'enemy':
imageName = './image/bullet-1.gif'
self.directioin = 'down'
elif planeName == 'hero':
imageName = './image/bullet-3.gif'
self.directioin = 'up'
self.image = pygame.image.load(imageName).convert()
self.x = x
self.y = y
def draw(self,screen):
if self.directioin == 'down':
self.y += 2
elif self.directioin == 'up':
self.y -= 2
screen.blit(self.image, (self.x, self.y))
class Plane:
def __init__(self):
self.bulletSleepTime = 1
self.lastShootTime = time.time()
self.bulletList = []
def draw(self,screen):
screen.blit(self.planeImage, (self.x, self.y))
def shoot(self):
if time.time()-self.lastShootTime>self.bulletSleepTime:
if random.randint(1,6)>=3:
self.bulletList.append(Bullet(self.planeName,self.x,self.y))
self.lastShootTime = time.time()
class Hero(Plane):
def __init__(self):
Plane.__init__(self)
planeImageName = './image/hero.gif'
self.planeImage = pygame.image.load(planeImageName).convert()
self.x = 230
self.y = 600
self.speed = 5
self.planeName = 'hero'
def keyHandle(self,keyValue):
if keyValue=='left':
self.x -= 20
elif keyValue == 'right':
self.x += 20
elif keyValue == 'space':
self.bulletList.append(Bullet('hero',self.x+40,self.y))
class Enemy(Plane):
def __init__(self):
Plane.__init__(self)
randomImageNum = random.randint(1,3)
planeImageName = './image/enemy-' + str(randomImageNum) + '.gif'
self.planeImage = pygame.image.load(planeImageName).convert()
self.x = 0
self.y = 0
self.directioin = 1
self.speed = random.randint(1,5)
self.planeName = 'enemy'
def move(self):
if self.directioin == 1:
self.x += self.speed
elif self.directioin == 0:
self.x -= self.speed
if self.x>480:
self.directioin = 0
elif self.x<0:
self.directioin = 1
class GameInit:
gameLevel = 1
g_enemyList = []
hero = object
@classmethod
def showMenu(cls):
print('='*40)
print(' python 飞机大战\n\n')
print('难度等级:1: 简单 2: 中等 3: 困难')
print('='*40)
@classmethod
def getMenuNum(cls):
cls.gameLevel = input("请输入要难度等级的序号:")
@classmethod
def createEnemys(cls):
for i in range(cls.gameLevel):
cls.g_enemyList.append(Enemy())
@classmethod
def createHero(cls):
cls.hero = Hero()
@classmethod
def setXY(cls):
for i in cls.g_enemyList:
i.move()
@classmethod
def draw(cls,screen):
for i in cls.g_enemyList:
i.draw(screen)
delBulletList = []
k = 0
for j in i.bulletList:
j.draw(screen)
if j.y>890:
delBulletList.append(k)
k+=1
for m in delBulletList:
del i.bulletList[m]
cls.hero.draw(screen)
k = 0
delBulletList = []
for j in cls.hero.bulletList:
j.draw(screen)
if j.y<0:
delBulletList.append(k)
k+=1
for m in delBulletList:
del cls.hero.bulletList[m]
@classmethod
def gameInit(cls):
cls.showMenu()
cls.getMenuNum()
cls.createEnemys()
cls.createHero()
@classmethod
def heroPlaneKey(cls, keyValue):
cls.hero.keyHandle(keyValue)
@classmethod
def shoot(cls):
for i in cls.g_enemyList:
i.shoot()
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((480,890),0,32)
bgImageFile = './image/background.png'
background = pygame.image.load(bgImageFile).convert()
pygame.display.update()
GameInit.gameInit()
while True:
screen.blit(background,(0,0))
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:
print('left')
GameInit.heroPlaneKey('left')
elif event.key == K_d or event.key == K_RIGHT:
print('right')
GameInit.heroPlaneKey('right')
elif event.key == K_SPACE:
print('space')
GameInit.heroPlaneKey('space')
GameInit.shoot()
GameInit.setXY()
GameInit.draw(screen)
pygame.display.update()