猫史档案馆


【Python作品分享】究极大陨石

用户:C7H15COONaC7H15COONa查看:0 回复:0 评论:0 创建时间:2023-07-02T21:02:52


【作品展示】

center_image

 

【作品介绍】

大方的个

 

【作品源代码】

import pygame
from pygame.locals import *
import random as ra
import pygame.mixer as pm
#初始化
pygame.init()
#阴乐初始化
pm.init()
#播放
pm.music.load('mic/BGmusic.mp3')
'''pm.music.play(loops = -1)'''
#创建窗口设置大小
s = pygame.display.set_mode((480,600))
# 存储陨石图片列表
meteor_list = ["img_meteorite_01.png", "img_meteorite_02.png", "img_meteorite_03.png",
               "img_meteorite_04.png", "img_meteorite_05.png", "img_meteorite_05.png",
               "img_meteorite_07.png", "img_meteorite_08.png"]

#加载背景
bg = pygame.image.load('img/img_bg.jpg')

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 = 240
        self.rect.bottom = 590
        
    def update(self):
        self.speedx = (0)
        #获取摁件列表
        keys = pygame.key.get_pressed()
        if keys[pygame.K_d]:
            self.speedx = 10
        if keys[pygame.K_a]:
            self.speedx = -10
        self.rect.x += self.speedx
        if self.rect.left<0:
            self.rect.left = 0
        if self.rect.right>480:
            self.rect.right = 480
        
    def shoot(self):
        #生成鸡蛋
        bullet = Bullet(self.rect.centerx,self.rect.top)
        all_s.add(bullet)
        all_b.add(bullet)
####

#陨石类
class Meteorite(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load('img/' + ra.choice(meteor_list))
        #获取矩形框
        self.rect = self.image.get_rect()
        self.rect.x = ra.randint(0,480-self.rect.width)
        self.rect.y = ra.randint(-110, 40)
        self.speedx = ra.randint(-1,1)
        self.speedy = ra.randint(1,3)
    def update(self):
        #设置左右移动
        self.rect.x += self.speedx
        self.rect.y += self.speedy
        if self.rect.y > 600:
            self.rect.x = ra.randint(0,480-self.rect.width)
            self.rect.y = ra.randint(-110, 40)
            self.speedx = ra.randint(-1, 1)
            self.speedy = ra.randint(1, 3)
        # if self.rect.bottom < 0:
        #     self.喵()
#子弹类
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.y = y
        self.speedy = -10
    def update(self):
        self.rect.y += self.speedy
        if self.rect.bottom < 0:
            self.喵()
r = True
#创建角色组
all_s = pygame.sprite.Group()
#生成✈对象
plane = Plane()
all_s.add(plane)
#创建运尸族。子弹组
all_m = pygame.sprite.Group()
all_b = pygame.sprite.Group()
#生成运喵
for i in range(10):
    m = Meteorite()
    #添加运势
    all_m.add(m)
    all_s.add(m)

score = 0
font_n = pygame.font.match_font('行楷')
#
f = pygame.font.Font(font_n,18)
#绘制文字
text = f.render(str(score),True,(0,255,255))
t_r = text.get_rect()
#设置位置
t_r.center = (240,10)
while r:
    #绘制
    s.blit(bg, (0, 0))
    s.blit(text,t_r)
    #角色组控制飞机和陨石
    all_s.update()
    all_s.draw(s)
    #显示
    pygame.display.flip()
    for i in pygame.event.get():
        #按界面↗
        if i.type == pygame.QUIT:
            r = False
    #按esc
        elif i.type == pygame.KEYDOWN:
            if i.key == pygame.K_ESCAPE:
                r = False
                #按空格射击
            if i.key == pygame.K_SPACE:
                plane.shoot()
    #坤坤和陨石碰撞
    hits1 = pygame.sprite.spritecollide(plane,all_m,True)
    if hits1:
        r = False
    #鸡蛋和运势碰撞
    hits2 = pygame.sprite.groupcollide(all_b,all_m,True,True)
    for i in hits2:
        m = Meteorite()
        all_m.add(m)
        all_s.add(m)
        score += 5
        print(score)
    font_n = pygame.font.match_font('行楷')
    #
    f = pygame.font.Font(font_n, 18)
    #绘制文字
    text = f.render(str(score), True, (0, 255, 255))
    t_r = text.get_rect()
    t_r.center = (240, 10)
pygame.quit()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页