猫史档案馆


【Python作品分享】太空狙击-副本【作品秀】

用户:十四个十四个查看:0 回复:0 评论:0 创建时间:2023-06-03T16:57:58


【作品展示】

center_image

 

【作品介绍】

欢迎来玩游戏

 

【作品源代码】

import pygame
from pygame.locals import *
import random as r
import pygame.mixer as pm 
#===设置一些出始画属性和方法===================
pygame.init()
pm.init()
pm.music.load('mic\\BGmusic.mp3')
pm.music.play(loops=-1)
shootSound = pygame.mixer.Sound('mic\\shoot.ogg')
hitSound = pygame.mixer.Sound('mic\\hit.wav')
FPS = 60
WIDTH, HEIGHT = 480, 600

#飞机fj =  
class Plane(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self. image = pygame.image.load('img\\img_plane.png')
        self.rect = self. image.get_rect()
        self.rect.centerx = WIDTH // 2
        self.rect.bottom = HEIGHT -50
        self.shootCD = 0.1#mbuh
        self.shootTime = 0

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT] or keys[pygame.K_a]:
            if self.rect.left > 0:
                self.rect.left -= 5
            else:
                self.rect.left = 0
        if keys[pygame.K_RIGHT] or keys[pygame.K_a]:
            if self.rect.right < WIDTH:
               self.rect.centerx += 5
            else:
                self.rect.right = WIDTH
        
        if keys[pygame.K_SPACE]:
            if self.shootTime >= self.shootCD:
                self.shoot()
                #self.shoot()
                self.shootTime = 0
            else:
                self. shootTime += 1/FPS
    def shoot(self):
        bullet = Bullet(self.rect.centerx - 10, self.rect.top)
        allSprites.add(bullet)
        allBulltes.add(bullet)
        bullet = Bullet(self.rect.centerx + 10, self.rect.top)
        allSprites.add(bullet)
        allBulltes.add(bullet)
        shootSound.play()
#====ysl=====================================
class Meteorite(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self. image = pygame.image.load('img\\img_meteorite_{:02d}.png'.format(r.randint(1,8)))
        self.rect = self. image.get_rect()
        self.rect.centerx = r.randint(0,WIDTH)
        self.rect.bottom = -50
        self.speedX = r.randint(-5,5)
        self.speedY = r.randint(1,5)


    def update(self):
        self.rect.centerx += self.speedX
        self.rect.centery += self.speedY

        if self.rect.right < 0 or self.rect.top > HEIGHT or self.rect.left > WIDTH:
            self.__init__()
#====zdl===============
class Bullet(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)
        self. image = pygame.image.load('img\\img_bullet.png')
        self.rect = self. image.get_rect()
        self.rect.centerx = x
        self.rect.bottom = y
    def update(self):
        self.rect.y -= 8
#===设置背(景和
bg = pygame.image.load('img\\img_bg.jpg')
screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
#===识立画对像==========================
allSprites = pygame.sprite.Group()
allMeteorites = pygame.sprite.Group()
allBulltes = pygame.sprite.Group()
plane = Plane()
allSprites.add(plane) 
for i in range(10):
    meteorite = Meteorite()
    allSprites.add(meteorite)
    allMeteorites.add(meteorite)
#===游戏主循环开始==================
clock = pygame.time.Clock()
running = True
while running:
    clock.tick(FPS)
    screen.blit(bg,(0,0))
    allSprites.draw(screen)
    allSprites.update()
    hit1 = pygame.sprite.groupcollide(allMeteorites,allBulltes,True, True)
    for i in hit1:
        meteorite = Meteorite()
        allSprites.add(meteorite)
        allMeteorites.add(meteorite)
    hit2 = pygame.sprite.spritecollide(plane, allMeteorites, True)
    if hit2:
        running = False
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                running = False
pygame.quit()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页