zoukankan      html  css  js  c++  java
  • Python 项目-飞机大战_01.飞机大战-1

    01-游戏的原理

     

     1.先显示一个窗口,再将背景贴入窗口

    2.然后再显示图中这几个飞机

    3.然后控制图像重复画,只要足够快,肉眼就认为是连贯的

    ================================================================================================================================================

    02-飞机大战:创建窗口

    # -*- coding:utf-8 -*-

    import pygame
    import time

    def main():
    #1. 创建窗口
    screen = pygame.display.set_mode((480,852),0,32)

    #2. 创建一个背景图片
    background = pygame.image.load("./feiji/background.png")

    while True:
    screen.blit(background, (0,0))

    pygame.display.update()

    time.sleep(0.01)

    if __name__ == "__main__":
    main()
    ==============================================================================================================================================================
    03-飞机大战-显示玩家飞机
    (1).先创建一个飞机
    (2).通过键盘控制飞机移动
    ===============================================================================================================================================================
    04-飞机大战:控制左右移动-面向对象

     ===========================================================================================================================================================

    05-飞机大战:玩家飞机发射子弹

     怎样发射子弹?

    说白了就是将子弹照片放入图中位置,需要新建子弹对象

     

    ---------------------------------------------------------------------------------------------------------------------------------- 

    o6-玩家发射子弹.py

    # -*- coding:utf-8 -*-

    import pygame
    import time

    class HeroPlane(object) :
    def __init__(self,screen_temp):
    self.x = 210
    self.y = 700
    self.screen = screen_temp
    self.image = python.image.load("./feiji/hero1.png")
    self.bullet_list = []#存储发射出去的子弹的对象引用

    def display(self):
    self.screen.blit(self.image, (self.x, self.y))

    for bullet in self.bullet_list:
    bullet.display()
    #下一次循环,让子弹位置发生变化
    bullet.move()

    def move_left(self):
    self.x -= 5

    def move_right(self):
    self.y += 5

    def fire(self):
    self.bullet_list.append(Bullet(self.screen,self.x,self.y))

    class Bullet(object):
    def __init__(self,screen_temp,x,y):
    self.x = x+40
    self.y = y-20
    self.screen = screen_temp
    self.image = python.image.load("./feiji/bullet.png")

    def display(self):
    self.screen.blit(self.image,(self.x,self.y))

    def move(self):
    self.y -= 5

    def key_control(hero_temp):
    # 获取事件,比如按键等
    for event in pygame.event.get():

    # 判断是否点击了退出按钮
    if event.type == QUIT:
    print("exit")
    # 判断是否按下了键
    elif event.type == KEYDOWN:
    # 监测按键是否是a或者left
    if event.key == K_a or event.key == K_LEFT:
    print('left')
    hero_temp.move_left()
    # 监测按键是否是d或者right
    elif event.key == K_d or event.key == K_RIGHT:
    print('right')
    hero_temp.move_right()
    # 监测按键是否是空格键
    elif event.key == K_SPACE:
    print('space')
    hero_temp.fire()

    def main():
    #1. 创建窗口
    screen = pygame.display.set_mode((480,852),0,32)

    #2. 创建一个背景图片
    background = pygame.image.load("./feiji/background.png")

    #3.创建一个飞机对象
    hero = HeroPlane(screen)

    while True:
    screen.blit(background, (0,0))
    hero.display()
    pygame.display.update()
    key_control(hero)
    time.sleep(0.01)

    if __name__ == "__main__":
    main()






  • 相关阅读:
    Email:2017
    mac下使用QuickTime录屏及上传youku注意事项
    unity, 自定义类中使用print
    unity, 集成iOS广告sdk注意事项
    xcode,不要将.a文件拖到xcode里
    unity, 慎用DontDestroyOnLoad
    unity, 弹出panel一定要放在UI Hierarchy的底端
    unity, iOS下画面错乱解法
    (转)NSString to string(支持中文)
    objective-c的观察者模式
  • 原文地址:https://www.cnblogs.com/curedfisher/p/13031863.html
Copyright © 2011-2022 走看看