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()






  • 相关阅读:
    E
    D
    Npp ChangeLog
    c++ 书籍(zz)
    再好的工作是为了更好的生活
    如何将JPG格式的图片转换成PNG格式
    点分治
    团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
    团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
    团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
  • 原文地址:https://www.cnblogs.com/curedfisher/p/13031863.html
Copyright © 2011-2022 走看看