用户:
C7H15COONa查看:0 回复:0 评论:0 创建时间:2023-07-02T21:02:52
【作品展示】

【作品介绍】
大方的个
【作品源代码】
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