python飞机大作战的实验过程中_python实践——飞机大战

importpygameimportrandomimporttimefrom pygame.locals import *

'''实现飞机的显示,控制飞机的移动'''

classHeroPlane(object):def __init__(self,screen):##飞机的默认位置

self.x=225self.y=510

##设置显示内容窗口

self.screen=screen##生成飞机的图片对象

#elf.imageName='./feiji/zwt.png'

self.image=pygame.image.load('./feiji/zwt.png')##存放子弹列表

self.bulletList=[]#self.image=pygame.image.load(self.imageName)

pass

defmoveleft(self):if self.x>0:

self.x-=30

pass

defmoveright(self):if self.x<380:

self.x+=30

pass

defdisplay(self):

self.screen.blit(self.image,(self.x,self.y))##完善子弹展示逻辑

needDelItemList=[]for item inself.bulletList:ifitem.judge():

needDelItemList.append(item)###重新遍历

for i inneedDelItemList:

self.bulletList.remove(i)for bullet inself.bulletList:

bullet.display()##显示子弹的位置

bullet.move()##让子弹进行移动,下次再显示的时候就会看到子弹修改后的位置

pass

defsheBullet(self):

newBullet=Bullet(self.x,self.y,self.screen)

self.bulletList.append(newBullet)pass

pass

###创建子弹类对象

classBullet(object):def __init__(self,x,y,screen):

self.x=x+13self.y=y-20self.screen=screen

self.imgage=pygame.image.load('./feiji/Bullet.png')pass

defdisplay(self):

self.screen.blit(self.imgage,(self.x,self.y))defmove(self):

self.y-=8

defjudge(self):##判断子弹越界

if self.y<0:returnTrueelse:returnFalse##敌人子弹

classEnemyBullet(object):def __init__(self,x,y,screen):

self.x=x

self.y=y+60self.screen=screen

self.imgage=pygame.image.load('./feiji/Bullet2.png')pass

defdisplay(self):

self.screen.blit(self.imgage,(self.x,self.y))defmove(self):

self.y+=2

defjudge(self):##判断子弹越界

if self.y>550:returnTrueelse:returnFalse##创建敌人

classEnemyPlane:def __init__(self, screen):##m默认设置一个方向

self.direction='right'

##飞机的默认位置

self.x =0

self.y=0##设置显示内容窗口

self.screen =screen##生成飞机的图片对象

#elf.imageName='./feiji/zwt.png'

self.image = pygame.image.load('./feiji/cz.png')

self.bulletList=[]pass

defdisplay(self):

self.screen.blit(self.image,(self.x,self.y))

needDelItemList=[]for item inself.bulletList:ifitem.judge():

needDelItemList.append(item)###重新遍历

for i inneedDelItemList:

self.bulletList.remove(i)for bullet inself.bulletList:

bullet.display()##显示子弹的位置

bullet.move() ##让子弹进行移动,下次再显示的时候就会看到子弹修改后的位置

defsheBullet(self):###敌人随机发射子弹

num=random.randint(1,20)if num==3:

newBullet=EnemyBullet(self.x,self.y,self.screen)

self.bulletList.append(newBullet)defmove(self):##随机移动

if self.direction=='right':

self.x+=2

elif self.direction=='left':

self.x-=2

if self.x>410:

self.direction='left'

elif self.x<0:

self.direction='right'

##控制键盘

defkey_control(HeroObj):

eventlist=pygame.event.get()for event ineventlist:if event.type ==QUIT:print('退出')

exit()pass

elif event.type ==KEYDOWN:if event.type == K_a or event.key ==K_LEFT:print('left')

HeroObj.moveleft()elif event.type == K_d or event.key ==K_RIGHT:print('right')

HeroObj.moveright()elif event.key ==K_SPACE:print('k_SPACE')

HeroObj.sheBullet()pass

##主函数

defmain ():

screen=pygame.display.set_mode((450,550),0,32) ##创建一个窗口

backgrond=pygame.image.load('./feiji/background.jpg') #设定一个背景图

pygame.display.set_caption('cz大战zwt')###添加背景音乐

pygame.mixer.init()

pygame.mixer.music.load('./feiji/background.mp3')

pygame.mixer.music.set_volume(0.1) #设置音量

pygame.mixer.music.play(-1) ##无限循环

##创建飞机对象

hero=HeroPlane(screen)##创建敌人

enemyplane=EnemyPlane(screen)whileTrue:

screen.blit(backgrond,(0,0))##居中显示背景图

hero.display() ##显示我方飞机

enemyplane.display() ##显示敌人

enemyplane.move()##敌人移动

enemyplane.sheBullet()##敌人发射子弹

key_control(hero)

pygame.display.update()##更新显示内容

pygame.time.Clock().tick(15)##一秒执行多少次

if __name__=='__main__':

main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值