吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4188|回复: 24
收起左侧

[Python 转载] python小项目分享

  [复制链接]
轻吻也飘然 发表于 2020-2-23 14:51

python 小项目-飞机大战分享

1.plane_main.py

import  pygame
import ceshi
from plane_sprit import *
pygame.init()
pygame.mixer.music.load("背景 音乐2.mp3")
pygame.mixer.music.play()

class planegame(object):
    def __init__(self):

        self.sceen=pygame.display.set_mode(SCREEN_RECT.size)
        self.clock=pygame.time.Clock()
        self.__creatsprit()
        pygame.time.set_timer(ENNY_PLANE,1000)
        pygame.time.set_timer(HEARO_FIR, 500)
        pygame.time.set_timer(ENNY_PLANE2,1500)

    def __creatsprit(self):
        bg1=background("./素材图片/背景图片4.jpg")
        bg2=background("./素材图片/背景图片4.jpg")
        bg2.rect.y=-bg2.rect.height
        self.hearo=hearo()

        self.back_group=pygame.sprite.Group(bg1,bg2)
        self.enemy_group=pygame.sprite.Group()
        self.hearo_group=pygame.sprite.Group(self.hearo)
        self.enemy_group2=pygame.sprite.Group()

    def startgame(self):

        while True:
            self.clock.tick(60)
            self.__event_hear()
            self.__check_hit()
            self.__update_display()

            pygame.display.update()

    def __event_hear(self):
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                self.__game_over()
            elif event.type==ENNY_PLANE:
                enemy=Enemy()
                self.enemy_group.add(enemy)
            elif event.type== ENNY_PLANE2:
                enemy2=Enemy2()
                self.enemy_group2.add(enemy2)
            elif event.type == HEARO_FIR:
                self.hearo.fire()
            key_reponders=pygame.key.get_pressed()
            if key_reponders[pygame.K_RIGHT]:
                self.hearo.speed=2
            elif key_reponders[pygame.K_LEFT]:
                self.hearo.speed=-2

            else:
                self.hearo.speed=0

    def __check_hit(self):
        pygame.sprite.groupcollide(self.hearo.bulluts,self.enemy_group,True,True)
        pygame.sprite.groupcollide(self.hearo.bulluts,self.enemy_group2,True,True)
        enems=pygame.sprite.spritecollide(self.hearo,self.enemy_group,True)
        if len(enems)>0:
            self.hearo.kill()
            self.__game_over()

    def __update_display(self):
        self.back_group.update()
        self.back_group.draw(self.sceen)
        self.enemy_group.update()
        self.enemy_group.draw(self.sceen)
        self.enemy_group2.update()
        self.enemy_group2.draw(self.sceen)

        self.hearo_group.update()
        self.hearo_group.draw(self.sceen)
        self.hearo.bulluts.update()
        self.hearo.bulluts.draw(self.sceen)

    @staticmethod
    def __game_over():
        pygame.mixer.music.stop()
        screen = pygame.display.set_mode((450, 700))
        clock = pygame.time.Clock()
        gameover = pygame.image.load("./素材图片/游戏结束1.jpg")
        screen.blit(gameover, (0, 0))
        f = 0
        pygame.display.update()
        while True:
            f += 1
            clock.tick(1)
            if f == 3:
                break
        ceshi.shipin()

        exit()

if __name__ == '__main__':
    while True:
        bg = pygame.image.load("./素材图片/界面.jpg")
        screen_1 = pygame.display.set_mode((450, 700))

        screen_1.blit(bg, (0, 0))

        pygame.display.update()
        for eventS in pygame.event.get():
            if eventS.type==pygame.MOUSEBUTTONDOWN:
                game = planegame()
                game.startgame()

2.plane_sprit.py

import random
import  pygame

SCREEN_RECT = pygame.Rect(0, 0, 450, 700)
ENNY_PLANE=pygame.USEREVENT
HEARO_FIR=pygame.USEREVENT+1
ENNY_PLANE2=pygame.USEREVENT+2

class sprit(pygame.sprite.Sprite):
    def __init__(self,name,speed=1):
        super().__init__()
        self.image=pygame.image.load(name)
        self.rect=self.image.get_rect()
        self.speed=speed
    def update(self):
        self.rect.y+=self.speed

class background(sprit):
    # def __init__(self, is_alt=False):
    #
    #     image_name = "./素材图片/背景图片1.jpg"
    #     super().__init__(image_name)
    #
    #
    #     if is_alt:
    #         self.rect.y = -self.rect.height
    def update(self):
         super().update()
         if self.rect.y>=SCREEN_RECT.height:
             self.rect.y = -self.rect.height

class Enemy(sprit):
    def __init__(self):
        super().__init__("./素材图片/敌机.png")
        self.speed=random.randint(1,3)
        self.rect.bottom=0
        max_X=SCREEN_RECT.width-self.rect.width
        self.rect.x=random.randint(0,max_X)

    def update(self):
        super().update()
        if self.rect.y>=SCREEN_RECT.height:
            self.kill()
class Enemy2(sprit):
    def __init__(self):
        super().__init__("./素材图片/敌机2.png")
        self.speed = random.randint(1, 3)
        self.rect.bottom = 0
        max_X = SCREEN_RECT.width - self.rect.width
        self.rect.x = random.randint(0, max_X)

    def update(self):
        super().update()
        if self.rect.y >= SCREEN_RECT.height:
            self.kill()

class hearo(sprit):
    def __init__(self):
        super().__init__("./素材图片/主战机.png",0)
        self.rect.centerx=SCREEN_RECT.centerx
        self.rect.bottom=SCREEN_RECT.bottom-120

        self.bulluts=pygame.sprite.Group()
    def update(self):
        self.rect.x+=self.speed
        if self.rect.x<0:
            self.rect.x=0
        elif self.rect.right>SCREEN_RECT.right:
            self.rect.right=SCREEN_RECT.right
    def fire(self):
        for i in (0,1):

            bullet_s=bullet()
            bullet_s.rect.bottom=self.rect.y-i*20
            bullet_s.rect.centerx=self.rect.centerx
            self.bulluts.add(bullet_s)

class bullet(sprit):
    def __init__(self):
        super().__init__("./素材图片/子弹.png",-2)
    def update(self):
        super().update()
        if self.rect.bottom<0:
            self.kill()

3.ceshi.py

import numpy as np
import cv2
import pygame
def shipin():
    pygame.init()

    pygame.mixer.music.load("sucai2.mp3")

    cap = cv2.VideoCapture('./sucai.flv')
    pygame.mixer.music.play()

    while (cap.isOpened()):
        ret, frame = cap.read()
        cv2.imshow('frame', frame)
        if cv2.waitKey(36) & 0xFF == ord('q'):
            break

    cap.release()

    cv2.destroyAllWindows()

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
知意执意 + 1 谢谢@Thanks!
hshcompass + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zmxsmz 发表于 2020-2-23 15:03
hello world小白一脸懵逼
头像被屏蔽
那年听风 发表于 2020-2-23 15:05
时间宙 发表于 2020-2-23 15:16
iloveu5201314 发表于 2020-2-23 15:22
谢谢分享
uhxdDGjohs 发表于 2020-2-23 15:26
感谢分享,楼主Python进阶怎么学啊
鲁包子 发表于 2020-2-23 15:29
不会是 《Python 基础到入门》 的项目吧?
MOEYU_VANILLA 发表于 2020-2-23 15:40
感谢分享
爱笙灬 发表于 2020-2-23 16:00
感谢大佬分享
gdfyhao 发表于 2020-2-23 16:03
正在学习Python中,向您学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表