用户:@Bm4U查看:0 回复:1 评论:0 创建时间:2022-02-12T13:36:49
【作品展示】

【作品介绍】
......
【作品源代码】
'''
......
'''
import pygame
from pygame.locals import *
import sys
from ship import Ship, Bullet, Alien
from random import randint
class main:
def __init__(self):
pygame.init()
pygame.mixer.init()
self.screen = pygame.display.set_mode((950, 800))
self.screen_rect = self.screen.get_rect()
pygame.display.set_caption('灰机大战pygame版')
self.clock = pygame.time.Clock()
self.background = pygame.image.load('images/background.png').convert()
self.background_rect = self.background.get_rect()
self.background = pygame.transform.scale(self.background, (800, 800))
self.screen.blit(self.background, (0, 0))
self.ship = Ship(self)
self.ship_group = pygame.sprite.Group(self.ship)
self.bullets = pygame.sprite.Group()
self.aliens = pygame.sprite.Group()
self.alien_bullets = pygame.sprite.Group()
self.boss = pygame.sprite.Group()
self.move_right = False
self.move_left = False
self.max_bullets = 10
self.max_num = 6
self.ship.blood = 3
self.ship.a = 1
self.gold = 0
self.print_text('Lives: ' + str(self.ship.blood),
50, 'white', (875, 20))
self.print_text('Gold: ' + str(self.gold), 50, 'white', (875, 100))
file = 'a_050xgw.mid'
pygame.mixer.music.load(file)
pygame.mixer.music.play(-1, 0.0)
self.rand = 0
self.boss_count = 0
self.can_make = True
self.game_over_count = 0
self.can_make_B = True
self.update()
def update(self):
while True:
self.rand += 1
self.boss_count += 1
self.screen = pygame.display.set_mode((950, 800))
self.screen.blit(self.background, (0, 0))
self.print_text('Lives: ' + str(self.ship.blood),
50, 'white', (875, 20))
self.print_text('Gold: ' + str(self.gold), 50, 'white', (875, 70))
if self.boss_count >= 3600 and self.can_make_B:
self.aliens.empty()
self.big_boss = Alien(self, './images/enemy3.png', 50, 730)
self.big_boss.blood = 60
self.boss.add(self.big_boss)
self.boss_count = 0
self.can_make_B = False
self.can_make = False
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_RIGHT:
self.move_right = True
elif event.key == K_LEFT:
self.move_left = True
if event.key == K_SPACE:
if len(self.bullets) < self.max_bullets:
self.bullet = Bullet(self)
self.bullets.add(self.bullet)
if event.key == K_q:
pygame.quit()
sys.exit()
elif event.key == K_a and self.gold >= 50:
self.ship.a += 0.5
self.gold -= 50
elif event.type == KEYUP:
if event.key == K_RIGHT:
self.move_right = False
elif event.key == K_LEFT:
self.move_left = False
if pygame.sprite.spritecollide(self.ship, self.aliens, True):
self.ship.blood -= 1
self.is_kill()
if pygame.sprite.spritecollide(self.ship, self.boss, True):
self.ship.blood -= 2
self.is_kill()
if self.rand >= 50 and len(self.aliens) < self.max_num and self.can_make:
self.alien = Alien(self, './images/enemy.png', 40, 760)
self.aliens.add(self.alien)
self.rand = 0
for bullet in self.bullets.sprites():
bullet.update_bullet()
bullet.draw_bullet()
if bullet.rect.bottom <= self.screen_rect.top:
self.bullets.remove(bullet)
for alien in self.aliens.sprites():
alien.update_alien(1)
alien.draw_alien()
if alien.rect.bottom > self.screen_rect.bottom:
self.aliens.remove(alien)
self.ship.blood -= 1
self.is_kill()
for boss in self.boss.sprites():
boss.update_alien(0.6)
boss.draw_alien()
if boss.rect.bottom > self.screen_rect.bottom:
self.boss.remove(boss)
self.ship.blood -= 2
self.is_kill()
self.x = float(self.ship.rect.x)
if self.move_right and self.ship.rect.right < 800:
self.x += 7.5
if self.move_left and self.ship.rect.x > 0:
self.x -= 7.5
for bullet_ in self.bullets.sprites():
for alien_ in self.aliens.sprites():
boom = pygame.sprite.collide_rect_ratio(
0.85)(bullet_, alien_)
if boom:
self.bullets.remove(bullet_)
alien_.blood -= self.ship.a
if alien_.blood <= 0:
self.aliens.remove(alien_)
self.gold += 1
for boss_ in self.boss.sprites():
boom_ = pygame.sprite.collide_rect(boss_, bullet_)
if boom_:
self.bullets.remove(bullet_)
boss_.blood -= self.ship.a
if boss_.blood <= 0:
self.boss.remove(boss_)
self.gold += 10
self.can_make_B = True
self.can_make = True
self.ship.rect.x = self.x
self.ship.draw_plane()
self.clock.tick(60)
pygame.display.flip()
def is_kill(self):
if self.ship.blood <= 0:
self.aliens.empty()
self.bullets.empty()
self.ship.blood = 3
self.gold = 0
self.max_bullets = 10
print('Lose!')
def print_text(self, text, font_size, font_color, center):
self.font = pygame.font.Font(None, font_size)
self.text = self.font.render(text, True, font_color)
self.rect = self.text.get_rect()
self.rect.center = center
self.screen.blit(self.text, self.rect)
def game_over(self):
self.print_text('You Lose!', 200, 'white', self.background_rect.center)
self.game_over_count += 1
if __name__ == '__main__':
main()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
和谐0856哎,这个超经典的开发案例我到现在都搞不出来imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E4%BC%A4%E5%BF%83.gif"alt="emotion_编程猫_伤心",图片老是导入错误
点赞0
评论