您的位置:首页 > 文旅 > 旅游 > 最好装修公司排名_东莞模板建站哪家好_东莞做网站seo_国内好的seo

最好装修公司排名_东莞模板建站哪家好_东莞做网站seo_国内好的seo

2025/4/16 14:37:29 来源:https://blog.csdn.net/weixin_68067302/article/details/147194387  浏览:    关键词:最好装修公司排名_东莞模板建站哪家好_东莞做网站seo_国内好的seo
最好装修公司排名_东莞模板建站哪家好_东莞做网站seo_国内好的seo

上视频先~
 

66666


 

import pygame
import random
import sys
import math
from pygame.locals import *# 初始化pygame
pygame.init()
pygame.mixer.init()# 屏幕设置
WIDTH, HEIGHT = 1480, 750                         
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("火影")# 颜色定义
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
GREEN = (0, 255, 0)
TRANSPARENT_WHITE = (255, 255, 255, 128)# 设置中文字体
try:font = pygame.font.SysFont('simhei', 36)input_font = pygame.font.SysFont('simhei', 48)
except:font = pygame.font.SysFont(None, 36)input_font = pygame.font.SysFont(None, 48)# 加载图片
try:# 初始鸣人图片naruto_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744468674913.png")naruto_img = pygame.transform.scale(naruto_img, (50, 50))# 200分鸣人图片naruto_img_200 = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744511788643.png")naruto_img_200 = pygame.transform.scale(naruto_img_200, (50, 50))# 500分鸣人图片naruto_img_500 = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744512041653.png")naruto_img_500 = pygame.transform.scale(naruto_img_500, (50, 50))# 1000分鸣人图片naruto_img_1000 = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744512359608.png")naruto_img_1000 = pygame.transform.scale(naruto_img_1000, (50, 50))# 敌人图片enemy_imgs = [pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744468443623.png"),pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744468370404.png"),pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744468327157.png")]enemy_imgs = [pygame.transform.scale(img, (40, 40)) for img in enemy_imgs]# 初始螺旋丸图片rasengan_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744469038888.png")rasengan_img = pygame.transform.scale(rasengan_img, (30, 30))# 1000分螺旋丸图片rasengan_img_1000 = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744512647483.png")rasengan_img_1000 = pygame.transform.scale(rasengan_img_1000, (30, 30))# 爆炸效果图片explosion_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744514677932.png")explosion_img = pygame.transform.scale(explosion_img, (100, 100))# 大大大Boss图片boss_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744515154318.png")boss_img = pygame.transform.scale(boss_img, (150, 150))# 激光图片laser_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744514421994.png")# 医疗包图片medkit_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744515539778.png")medkit_img = pygame.transform.scale(medkit_img, (25, 25))# 队友图片teammate_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744525685869.png")teammate_img = pygame.transform.scale(teammate_img, (50, 50))# 队友子弹图片teammate_bullet_img = pygame.image.load(r"C:\Users\Administrator\Desktop\GGY\图片\screenshot-1744525925999.png")teammate_bullet_img = pygame.transform.scale(teammate_bullet_img, (30, 30))except pygame.error as e:print("图片加载失败:", e)sys.exit()# 加载背景音乐
try:boss_music = pygame.mixer.Sound(r"C:\Users\Administrator\Desktop\GGY\SoundHelix-Song-1.mp3")boss_music.set_volume(0.5)
except:print("背景音乐加载失败")boss_music = None
clock = pygame.time.Clock()# 获取玩家昵称
def get_player_name():name = ""input_active = Truewhile input_active:for event in pygame.event.get():if event.type == QUIT:pygame.quit()sys.exit()elif event.type == KEYDOWN:if event.key == K_RETURN:input_active = Falseelif event.key == K_BACKSPACE:name = name[:-1]else:# 支持中文输入if event.unicode.isprintable():name += event.unicodescreen.fill(BLACK)prompt_text = input_font.render("请输入你的昵称:", True, WHITE)name_text = input_font.render(name, True, WHITE)screen.blit(prompt_text, (WIDTH//2 - 150, HEIGHT//2 - 50))screen.blit(name_text, (WIDTH//2 - 100, HEIGHT//2 + 20))pygame.display.flip()clock.tick(60)return name if name else "匿名玩家"# 爆炸效果类
class Explosion(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()self.image = explosion_imgself.rect = self.image.get_rect()self.rect.center = (x, y)self.lifetime = 10  # 爆炸效果持续时间def update(self):self.lifetime -= 1if self.lifetime <= 0:self.kill()# 激光类
class Laser(pygame.sprite.Sprite):def __init__(self, x, y, target_x, target_y):super().__init__()# 计算激光方向和长度dx = target_x - xdy = target_y - ydistance = max(1, math.sqrt(dx*dx + dy*dy))angle = math.degrees(math.atan2(dy, dx))# 旋转激光图片original_width = laser_img.get_width()scaled_width = int(distance)scaled_laser = pygame.transform.scale(laser_img, (scaled_width, 10))self.image = pygame.transform.rotate(scaled_laser, -angle)self.rect = self.image.get_rect()self.rect.center = (x + dx/2, y + dy/2)self.damage = 10self.lifetime = 30  # 激光持续时间def update(self):self.lifetime -= 1if self.lifetime <= 0:self.kill()# 医疗包类
class Medkit(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = medkit_imgself.rect = self.image.get_rect()self.rect.x = random.randint(0, WIDTH - self.rect.width)self.rect.y = random.randint(0, HEIGHT - self.rect.height)self.lifetime = 600  # 医疗包存在时间(10秒)def update(self):self.lifetime -= 1if self.lifetime <= 0:self.kill()# Boss类
class Boss(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = boss_imgself.rect = self.image.get_rect()self.rect.x = WIDTH // 2self.rect.y = HEIGHT // 2self.health = 500self.move_timer = 0self.attack_timer = 0self.lasers = pygame.sprite.Group()def update(self, naruto):# 每15秒移动一次self.move_timer += 1if self.move_timer >= 900:  # 15秒(60帧/秒)self.rect.x = random.randint(0, WIDTH - self.rect.width)self.rect.y = random.randint(0, HEIGHT - self.rect.height)self.move_timer = 0# 每3秒攻击一次self.attack_timer += 1if self.attack_timer >= 180:  # 3秒self.shoot_laser(naruto)self.attack_timer = 0def shoot_laser(self, naruto):laser = Laser(self.rect.centerx, self.rect.centery, naruto.rect.centerx, naruto.rect.centery)self.lasers.add(laser)return laser# 队友类
class Teammate(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = teammate_imgself.rect = self.image.get_rect()self.rect.center = (WIDTH // 2, HEIGHT // 2)self.speed = 5self.shoot_timer = 0self.health = 200  # 队友有独立血量self.max_health = 200def update(self):keys = pygame.key.get_pressed()if keys[K_UP] and self.rect.top > 0:self.rect.y -= self.speedif keys[K_DOWN] and self.rect.bottom < HEIGHT:self.rect.y += self.speedif keys[K_LEFT] and self.rect.left > 0:self.rect.x -= self.speedif keys[K_RIGHT] and self.rect.right < WIDTH:self.rect.x += self.speed# 持续发射子弹self.shoot_timer += 1if self.shoot_timer >= 15:  # 每0.25秒发射一次self.shoot_timer = 0return TeammateBullet(self.rect.right, self.rect.centery)return None# 队友子弹类
class TeammateBullet(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()self.image = teammate_bullet_imgself.rect = self.image.get_rect()self.rect.left = xself.rect.centery = yself.speed = 10self.damage = 15def update(self):self.rect.x += self.speedif self.rect.left > WIDTH:self.kill()# 玩家设置 (鸣人)
class Naruto(pygame.sprite.Sprite):def __init__(self):super().__init__()self.image = naruto_imgself.rect = self.image.get_rect()self.rect.center = (WIDTH // 4, HEIGHT // 2)self.speed = 5self.health = 100self.max_health = 100self.rasengan_cooldown = 0self.current_level = 1  # 1:初始, 2:200分, 3:500分, 4:1000分self.heal_timer = 0def update(self, *args):# 处理参数,允许不传scorescore = args[0] if args else 0# 根据分数更新角色状态if score >= 1000 and self.current_level < 4:self.image = naruto_img_1000self.max_health = 500self.health = 500self.current_level = 4elif score >= 500 and self.current_level < 3:self.image = naruto_img_500self.current_level = 3elif score >= 200 and self.current_level < 2:self.image = naruto_img_200self.current_level = 2# 每1秒恢复1点血self.heal_timer += 1if self.heal_timer >= 60:  # 1秒self.health = min(self.health + 1, self.max_health)self.heal_timer = 0keys = pygame.key.get_pressed()if keys[K_w] and self.rect.top > 0:  # W键上移self.rect.y -= self.speedif keys[K_s] and self.rect.bottom < HEIGHT:  # S键下移self.rect.y += self.speedif keys[K_a] and self.rect.left > 0:  # A键左移self.rect.x -= self.speedif keys[K_d] and self.rect.right < WIDTH:  # D键右移self.rect.x += self.speedif self.rasengan_cooldown > 0:self.rasengan_cooldown -= 1def shoot_rasengan(self, score):if self.rasengan_cooldown == 0:cooldown = 20if score >= 1000:cooldown = 15  # 1000分后冷却时间缩短self.rasengan_cooldown = cooldownreturn Rasengan(self.rect.right, self.rect.centery, score)return None# 螺旋丸类
class Rasengan(pygame.sprite.Sprite):def __init__(self, x, y, score):super().__init__()if score >= 1000:self.image = rasengan_img_1000else:self.image = rasengan_imgself.rect = self.image.get_rect()self.rect.left = xself.rect.centery = yself.speed = 7self.damage = 25self.score = scoreself.explode_on_contact = (score >= 500)  # 等级3、4会爆炸def update(self):self.rect.x += self.speedif self.rect.left > WIDTH:self.kill()# 敌人类
class Enemy(pygame.sprite.Sprite):def __init__(self, enemy_health=50):super().__init__()self.image = random.choice(enemy_imgs)self.rect = self.image.get_rect()self.rect.x = WIDTHself.rect.y = random.randint(0, HEIGHT - self.rect.height)self.speed = random.randint(1, 3)self.health = enemy_healthdef update(self):self.rect.x -= self.speedif self.rect.right < 0:self.kill()def draw_energy_bar(screen, energy):bar_width = 200bar_height = 20outline_rect = pygame.Rect(WIDTH - 350, 20, bar_width, bar_height)fill_rect = pygame.Rect(WIDTH - 350, 20, int(bar_width * (energy / 1000)), bar_height)pygame.draw.rect(screen, BLACK, outline_rect, 2)pygame.draw.rect(screen, BLUE, fill_rect)energy_text = font.render(f"查克拉: {energy}/1000", True, YELLOW)screen.blit(energy_text, (WIDTH - 350, 45))def main():clock = pygame.time.Clock()# 获取玩家昵称player_name = get_player_name()# 创建精灵组all_sprites = pygame.sprite.Group()enemies = pygame.sprite.Group()rasengans = pygame.sprite.Group()explosions = pygame.sprite.Group()medkits = pygame.sprite.Group()teammate_bullets = pygame.sprite.Group()# 创建玩家naruto = Naruto()all_sprites.add(naruto)# 游戏变量score = 0energy = 0enemy_spawn_timer = 0game_over = Falseboss_spawned = Falseboss = Nonemedkit_timer = 0teammate = Noneteammate_summoned = Falseboss_music_playing = Falseenemy_health = 50  # 初始敌人血量enemy_health_doubled = Falseenemy_health_message_timer = 0# 游戏主循环running = Truewhile running:# 事件处理for event in pygame.event.get():if event.type == QUIT:running = Falseelif event.type == KEYDOWN:if event.key == K_j and not game_over:  # J键攻击rasengan = naruto.shoot_rasengan(score)if rasengan:all_sprites.add(rasengan)rasengans.add(rasengan)if event.key == K_r and game_over:# 重新开始游戏all_sprites.empty()enemies.empty()rasengans.empty()explosions.empty()medkits.empty()teammate_bullets.empty()naruto = Naruto()all_sprites.add(naruto)score = 0energy = 0game_over = Falseboss_spawned = Falseboss = Noneteammate = Noneteammate_summoned = Falseenemy_health = 50enemy_health_doubled = Falseif boss_music and boss_music_playing:boss_music.stop()boss_music_playing = Falseif event.key == K_k and not game_over and energy >= 1000:  # K键清屏for enemy in enemies:enemy.kill()energy = 0if event.key == K_l and not game_over and energy >= 500 and not teammate_summoned:  # L键召唤队友teammate = Teammate()all_sprites.add(teammate)energy -= 500teammate_summoned = Trueif not game_over:# 检查是否需要增加敌人血量if score >= 500 and not enemy_health_doubled:enemy_health = 100  # 敌人血量翻倍enemy_health_doubled = Trueenemy_health_message_timer = 180  # 3秒# 更新naruto.update(score)rasengans.update()enemies.update()explosions.update()medkits.update()# 更新队友if teammate:bullet = teammate.update()if bullet:all_sprites.add(bullet)teammate_bullets.add(bullet)teammate_bullets.update()# 生成敌人enemy_spawn_timer += 1if enemy_spawn_timer >= 60:  # 每秒生成一个敌人enemy = Enemy(enemy_health)all_sprites.add(enemy)enemies.add(enemy)enemy_spawn_timer = 0# 生成医疗包(每100秒)medkit_timer += 1if medkit_timer >= 6000:  # 100秒medkit = Medkit()all_sprites.add(medkit)medkits.add(medkit)medkit_timer = 0# 检测螺旋丸和敌人的碰撞hits = pygame.sprite.groupcollide(enemies, rasengans, False, True)for enemy, rasengan_list in hits.items():for rasengan in rasengan_list:# 根据分数决定伤害效果if score >= 200:  # 200分后一击必杀enemy.health = 0else:enemy.health -= rasengan.damage# 500分后可以一次打两个敌人if score >= 500:for other_enemy in enemies:if other_enemy != enemy and abs(other_enemy.rect.x - enemy.rect.x) < 100:other_enemy.health = 0# 等级3、4的螺旋丸会爆炸if rasengan.explode_on_contact:explosion = Explosion(enemy.rect.centerx, enemy.rect.centery)all_sprites.add(explosion)explosions.add(explosion)# 爆炸范围内的敌人都会死亡for other_enemy in enemies:if math.sqrt((other_enemy.rect.centerx - enemy.rect.centerx)**2 + (other_enemy.rect.centery - enemy.rect.centery)**2) < 100:other_enemy.health = 0if enemy.health <= 0:enemy.kill()score += 10energy = min(energy + 5, 1000)  # 击杀敌人增加能量# 检测队友子弹和敌人的碰撞hits = pygame.sprite.groupcollide(enemies, teammate_bullets, False, True)for enemy, bullet_list in hits.items():for bullet in bullet_list:enemy.health -= bullet.damageif enemy.health <= 0:enemy.kill()score += 10energy = min(energy + 5, 1000)# 检测玩家和敌人的碰撞hits = pygame.sprite.spritecollide(naruto, enemies, False)for enemy in hits:naruto.health -= 1if naruto.health <= 0:game_over = True# 检测队友和敌人的碰撞if teammate:hits = pygame.sprite.spritecollide(teammate, enemies, False)for enemy in hits:teammate.health -= 1if teammate.health <= 0:teammate.kill()teammate_summoned = False# 检测玩家和医疗包的碰撞hits = pygame.sprite.spritecollide(naruto, medkits, True)for medkit in hits:naruto.health = naruto.max_health# 检测队友和医疗包的碰撞if teammate:hits = pygame.sprite.spritecollide(teammate, medkits, True)for medkit in hits:teammate.health = teammate.max_health# 2000分生成Bossif score >= 2000 and not boss_spawned:boss = Boss()all_sprites.add(boss)boss_spawned = Trueif boss_music:boss_music.play(-1)  # 循环播放boss_music_playing = True# 更新Bossif boss_spawned:boss.update(naruto)# 更新Boss的激光for laser in boss.lasers:if not laser.alive():all_sprites.add(laser)boss.lasers.update()# 检测玩家和激光的碰撞hits = pygame.sprite.spritecollide(naruto, boss.lasers, False)for laser in hits:naruto.health -= laser.damagelaser.kill()if naruto.health <= 0:game_over = True# 检测队友和激光的碰撞if teammate:hits = pygame.sprite.spritecollide(teammate, boss.lasers, False)for laser in hits:teammate.health -= laser.damagelaser.kill()if teammate.health <= 0:teammate.kill()teammate_summoned = False# 检测螺旋丸和Boss的碰撞hits = pygame.sprite.spritecollide(boss, rasengans, True)for rasengan in hits:boss.health -= rasengan.damageif rasengan.explode_on_contact:explosion = Explosion(boss.rect.centerx, boss.rect.centery)all_sprites.add(explosion)explosions.add(explosion)if boss.health <= 0:boss.kill()score += 500  # Boss死亡加500分boss_spawned = Falseif boss_music and boss_music_playing:boss_music.stop()boss_music_playing = False# 检测队友子弹和Boss的碰撞if teammate:hits = pygame.sprite.spritecollide(boss, teammate_bullets, True)for bullet in hits:boss.health -= bullet.damageif boss.health <= 0:boss.kill()score += 500  # Boss死亡加500分boss_spawned = Falseif boss_music and boss_music_playing:boss_music.stop()boss_music_playing = False# 绘制screen.fill(BLACK)all_sprites.draw(screen)# 显示玩家昵称name_surface = font.render(f"玩家: {player_name}", True, WHITE)name_rect = pygame.Rect(5, HEIGHT - 40, name_surface.get_width() + 10, name_surface.get_height() + 10)pygame.draw.rect(screen, (0, 0, 0, 128), name_rect, border_radius=5)screen.blit(name_surface, (10, HEIGHT - 35))# 显示分数和生命值score_text = font.render(f"分数: {score}", True, WHITE)health_text = font.render(f"生命值: {naruto.health}/{naruto.max_health}", True, WHITE)level_text = font.render(f"等级: {naruto.current_level}", True, WHITE)screen.blit(score_text, (5, 10))screen.blit(health_text, (5, 50))screen.blit(level_text, (5, 90))# 显示队友血量if teammate:teammate_health_text = font.render(f"队友生命值: {teammate.health}/{teammate.max_health}", True, GREEN)screen.blit(teammate_health_text, (5, 130))# 显示能量条draw_energy_bar(screen, energy)# 显示当前能力说明if score >= 1000:ability_text = font.render("能力: 一击必杀 + 范围爆炸 + 高血量", True, WHITE)elif score >= 500:ability_text = font.render("能力: 一击必杀 + 范围爆炸", True, WHITE)elif score >= 200:ability_text = font.render("能力: 一击必杀", True, WHITE)else:ability_text = font.render("能力: 普通攻击", True, WHITE)screen.blit(ability_text, (5, 170 if teammate else 130))# 显示敌人血量翻倍消息if enemy_health_message_timer > 0:enemy_health_message_timer -= 1if enemy_health_message_timer % 30 < 15:  # 闪烁效果message_text = font.render("敌人血量为原来的2倍!", True, RED)screen.blit(message_text, (WIDTH//2 - 150, 50))# 显示操作提示controls_text = font.render("移动:WASD 攻击:J 清屏:K(满能量) 召唤队友:L(500能量)", True, WHITE)screen.blit(controls_text, (WIDTH//2 - 300, HEIGHT - 40))# 显示Boss血量if boss_spawned:boss_health_text = font.render(f"Boss血量: {boss.health}", True, RED)screen.blit(boss_health_text, (WIDTH - 350, 90))else:# 游戏结束画面screen.fill(BLACK)game_over_text = font.render("游戏结束! 按R键重新开始", True, WHITE)final_score_text = font.render(f"最终分数: {score}", True, WHITE)screen.blit(game_over_text, (WIDTH//2 - 180, HEIGHT//2 - 30))screen.blit(final_score_text, (WIDTH//2 - 100, HEIGHT//2 + 20))pygame.display.flip()clock.tick(60)pygame.quit()sys.exit()if __name__ == "__main__":main()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com