zoukankan      html  css  js  c++  java
  • python学习日记第五天(飞机大战)

    main.py

    import pygame
    import time
    from pygame.locals import *
    from plane import *

    def start(): #开始游戏
    #创建一个窗口,用来显示内容
    screen=pygame.display.set_mode((480,890),0,32)
    #创建一个和窗口大小的图片,用来充当背景
    image_file_path='./beijing.jpg'
    background=pygame.image.load(image_file_path).convert() #
    #创建一个飞机的对象
    hero_plane=HeroPlane(screen,"hero")
    enemy_plane=EnemyPlane(screen,"enemy")
    #把背景图片放到窗口中显示
    while True:
    screen.blit(background,(0,0))
    hero_plane.display()
    enemy_plane.display()
    enemy_plane.move()
    enemy_plane.launch_bullet()
    #判断是否点击了退出按钮
    for event in pygame.event.get():
    if event.type == QUIT:
    print("exit")
    exit()
    elif event.type == KEYDOWN:
    if event.key == K_a or event.key == K_LEFT:
    print("left")
    hero_plane.move_left()
    elif event.key == K_d or event.key == K_RIGHT:
    print("right")
    hero_plane.move_right()
    elif event.key == K_w or event.key == K_UP:
    print("up")
    hero_plane.move_up()
    elif event.key == K_s or event.key == K_DOWN:
    print("down")
    hero_plane.move_down()
    elif event.key == K_SPACE:
    print("space")
    hero_plane.launch_bullet()
    time.sleep(0.01)
    pygame.display.update()

    if __name__=='__main__':
    start()



    plane.py
    import pygame
    import random
    from bullet import*
    class Plane(object):
    def __init__(self,screen,name):
    #设置飞机的默认位置
    self.name=name
    #设置要显示内容的窗口
    self.screen =screen
    #用来保存玩家的图片
    #根据图像名称生成飞机图片
    self.image=pygame.image.load(self.image_name).convert()
    self.bullet_list=[]
    def display(self):
    self.screen.blit(self.image,(self.x,self.y))
    need_def_list=[]
    for i in self.bullet_list:
    if i.judge():
    need_def_list.append(i)
    for i in need_def_list:
    self.bullet_list.remove(i)
    for bullet in self.bullet_list:
    bullet.display()
    bullet.move()
    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 launch_bullet(self):
    new_bullet=PublicBullet(self.x,self.y,self.screen,self.name)
    self.bullet_list.append(new_bullet)
    class HeroPlane(Plane):
    def __init__(self,screen,name):
    #设置飞机的默认位置
    self.x=230
    self.y=600
    self.image_name = "./11/1 (13).png"
    super().__init__(screen,name)
    class EnemyPlane(Plane):
    def __init__(self,screen,name):
    self.x=0
    self.y=0
    self.image_name = "./11/1 (6).png"
    super().__init__(screen,name)
    self.direction="right"
    def move(self):
    if self.direction == "right":
    self.x+=2
    elif self.direction=="left":
    self.x-=2
    if self.x>480-50:
    self.direction="left"
    elif self.x<0:
    self.direction="right"
    def launch_bullet(self):
    number=random.randint(1,100)
    if number == 88:
    super().launch_bullet()

    bullet.py
    import pygame
    class PublicBullet(object):
    def __init__(self,x,y,screen,plane_name):
    self.screen=screen
    self.plane_name=plane_name
    self.image = pygame.image.load("./11/1 (8).png").convert()
    if plane_name=="hero":
    self.x = x + 40
    self.y = y - 20
    elif plane_name=="enemy":
    self.x=x+30
    self.y=y+30
    def move(self):
    if self.plane_name == "hero":
    self.y -= 2
    elif self.plane_name == "enemy":
    self.y +=2
    def display(self):
    self.screen.blit(self.image,(self.x,self.y))
    def judge(self):
    if self.y<0:
    return True
    else:
    return False

    # class Bullet(object):
    # def __init__(self,x,y,screen):
    # self.x=x+40
    # self.y=y-20
    # self.screen=screen
    # self.image=pygame.image.load("./11/1 (8).png").convert()
    # def display(self):
    # self.screen.blit(self.image,(self.x,self.y))
    # def move(self):
    # self.y-=2
    # def judge(self):
    # if self.y<0:
    # return True
    # else:
    # return False
    # class EnemyBullet(object):
    # def __init__(self,x,y,screen):
    # self.x=x+30
    # self.y=y+30
    # self.screen=screen
    # self.image=pygame.image.load("./11/1 (8).png").convert()
    # def move(self):
    # self.y+=2
    # def display(self):
    # self.screen.blit(self.image,(self.x,self.y))
    # def judge(self):
    # if self.y > 890:
    # return True
    # else:
    # return False
  • 相关阅读:
    Yarn的三种调度器
    tcpdump 常用用法
    Openssh升级脚本
    RAID详解及软RAID管理
    zabbix安装部署
    Linux根分区、SWAP分区扩容
    Windows server 2012 控制面板打不开防火墙
    Windows Server 设置时间同步出错问题
    Windows dos命令激活系统
    Swap分区大小设置
  • 原文地址:https://www.cnblogs.com/hz-garden/p/12815510.html
Copyright © 2011-2022 走看看