python三角洲行动!

python三角洲行动!

import random
import time
import sys
from enum import Enum

class SoldierClass(Enum):
    ASSAULT = "突击兵"
    SNIPER = "狙击手"
    MEDIC = "医疗兵"
    ENGINEER = "工程师"

class Weapon:
    def __init__(self, name, damage, accuracy, fire_rate):
        self.name = name
        self.damage = damage
        self.accuracy = accuracy
        self.fire_rate = fire_rate
    
    def __str__(self):
        return f"{self.name} (伤害:{self.damage} 精度:{self.accuracy}% 射速:{self.fire_rate})"

class Soldier:
    def __init__(self, name, soldier_class):
        self.name = name
        self.soldier_class = soldier_class
        self.health = 100
        self.stamina = 100
        self.position = (0, 0)
        self.weapon = self._assign_weapon()
        self.alive = True
    
    def _assign_weapon(self):
        """根据兵种分配武器"""
        if self.soldier_class == SoldierClass.ASSAULT:
            return Weapon("HK416突击步枪", 25, 75, 800)
        elif self.soldier_class == SoldierClass.SNIPER:
            return Weapon("M24狙击步枪", 95, 98, 40)
        elif self.soldier_class == SoldierClass.MEDIC:
            return Weapon("MP5冲锋枪", 20, 70, 900)
        elif self.soldier_class == SoldierClass.ENGINEER:
            return Weapon("M4A1卡宾枪", 30, 80, 700)
    
    def move(self, x, y):
        """移动士兵位置"""
        if self.stamina > 20:
            self.position = (x, y)
            self.stamina -= 15
            print(f"{self.name} 移动到位置 ({x}, {y})")
            return True
        else:
            print(f"{self.name} 体力不足!")
            return False
    
    def attack(self, target):
        """攻击敌人"""
        if random.randint(0, 100) < self.weapon.accuracy:
            damage = random.randint(self.weapon.damage - 5, self.weapon.damage + 5)
            target.health -= damage
            print(f"🎯 {self.name} 使用 {self.weapon.name} 命中目标! 造成 {damage} 点伤害")
            return damage
        else:
            print(f"💥 {self.name} 射击未命中!")
            return 0
    
    def heal(self, target):
        """医疗兵治疗"""
        if self.soldier_class == SoldierClass.MEDIC:
            heal_amount = random.randint(20, 40)
            target.health = min(100, target.health + heal_amount)
            print(f"🩺 {self.name} 治疗了 {target.name}! 恢复 {heal_amount} 点生命值")
            return heal_amount
        else:
            print(f"⚠️ {self.name} 不是医疗兵!")
            return 0
    
    def is_alive(self):
        """检查士兵是否存活"""
        return self.health > 0

class Enemy:
    def __init__(self, enemy_type, position):
        self.enemy_type = enemy_type
        self.health = 80 if enemy_type == "步兵" else 120
        self.position = position
        self.alive = True
    
    def attack(self, target):
        """敌人攻击"""
        damage = random.randint(15, 30)
        target.health -= damage
        print(f"💥 敌人{self.enemy_type}攻击了{target.name}! 造成 {damage} 点伤害")
        return damage
    
    def is_alive(self):
        """检查敌人是否存活"""
        return self.health > 0

class Mission:
    def __init__(self, name, description, objectives):
        self.name = name
        self.description = description
        self.objectives = objectives
        self.completed = False
    
    def check_completion(self, squad, enemies):
        """检查任务是否完成"""
        # 检查所有目标是否完成
        for obj in self.objectives:
            if not obj["completed"]:
                if obj["type"] == "eliminate" and len(enemies) == 0:
                    obj["completed"] = True
                elif obj["type"] == "rescue" and obj["completed"]:
                    continue
        return all(obj["completed"] for obj in self.objectives)

def slow_print(text, delay=0.03):
    """模拟打字机效果打印文本"""
    for char in text:
        sys.stdout.write(char)
        sys.stdout.flush()
        time.sleep(delay)
    print()

def display_map(squad, enemies, objective_pos):
    """显示简单的战场地图"""
    print("\n战场地图:")
    print("  y")
    print("  ↑")
    
    for y in range(10, -1, -1):
        line = f"{y:2d} "
        for x in range(0, 11):
            # 检查当前位置是否有士兵
            soldier_here = any(s.position == (x, y) for s in squad)
            enemy_here = any(e.position == (x, y) for e in enemies)
            obj_here = objective_pos == (x, y)
            
            if soldier_here:
                line += "S "  # 士兵
            elif enemy_here:
                line += "E "  # 敌人
            elif obj_here:
                line += "O "  # 目标点
            else:
                line += ". "  # 空地
        print(line)
    
    print("   ",)
    for x in range(0, 11):
        print(f"{x:2d}",)
    print(" → x")

def main():
    # 游戏标题
    slow_print("="*50)
    slow_print("🔥 三角洲行动: Python战术小队模拟器 🔥")
    slow_print("="*50)
    slow_print("你将指挥一支4人特种小队执行高风险任务")
    slow_print("选择你的队员,制定战术,完成任务!")
    
    # 创建小队
    squad = [
        Soldier("幽灵", SoldierClass.ASSAULT),
        Soldier("鹰眼", SoldierClass.SNIPER),
        Soldier("天使", SoldierClass.MEDIC),
        Soldier("技师", SoldierClass.ENGINEER)
    ]
    
    # 显示小队信息
    slow_print("\n你的小队成员:")
    for soldier in squad:
        slow_print(f"▶ {soldier.name} - {soldier.soldier_class.value} 武器: {soldier.weapon}")
    
    # 创建任务
    mission = Mission(
        "黑鹰坠落",
        "在摩加迪沙市区营救被击落的黑鹰直升机机组人员",
        [
            {"type": "eliminate", "description": "消灭所有敌人", "completed": False},
            {"type": "rescue", "description": "营救飞行员", "completed": False}
        ]
    )
    
    slow_print(f"\n任务简报: {mission.name}")
    slow_print(f"任务描述: {mission.description}")
    slow_print("任务目标:")
    for obj in mission.objectives:
        slow_print(f" - {obj['description']}")
    
    # 创建敌人
    enemies = [
        Enemy("步兵", (3, 4)),
        Enemy("步兵", (5, 6)),
        Enemy("机枪手", (7, 3)),
        Enemy("狙击手", (2, 8))
    ]
    
    # 目标位置
    pilot_position = (8, 8)
    pilot_rescued = False
    
    # 游戏主循环
    turn = 1
    slow_print("\n行动开始! 按回车继续...")
    input()
    
    while any(s.is_alive() for s in squad) and any(e.is_alive() for e in enemies) and not mission.completed:
        print(f"\n=== 回合 {turn} ===")
        
        # 显示地图
        display_map(squad, enemies, pilot_position)
        
        # 玩家行动
        for soldier in squad:
            if not soldier.is_alive():
                continue
                
            print(f"\n{soldier.name}的行动 ({soldier.soldier_class.value} | ♥{soldier.health} | ✨{soldier.stamina})")
            print("1. 移动")
            print("2. 攻击")
            if soldier.soldier_class == SoldierClass.MEDIC:
                print("3. 治疗队友")
            print("4. 查看状态")
            
            choice = input("选择行动: ")
            
            if choice == "1":  # 移动
                try:
                    x = int(input("输入目标X坐标 (0-10): "))
                    y = int(input("输入目标Y坐标 (0-10): "))
                    if 0 <= x <= 10 and 0 <= y <= 10:
                        soldier.move(x, y)
                        
                        # 检查是否到达飞行员位置
                        if soldier.position == pilot_position and not pilot_rescued:
                            pilot_rescued = True
                            slow_print(f"\n⭐ {soldier.name} 找到了飞行员! 任务完成一半!")
                            mission.objectives[1]["completed"] = True
                    else:
                        print("坐标超出范围!")
                except ValueError:
                    print("请输入有效坐标!")
            
            elif choice == "2":  # 攻击
                # 显示可见敌人
                visible_enemies = [e for e in enemies if 
                                  abs(e.position[0] - soldier.position[0]) <= 3 and 
                                  abs(e.position[1] - soldier.position[1]) <= 3 and
                                  e.is_alive()]
                
                if visible_enemies:
                    print("可攻击目标:")
                    for i, enemy in enumerate(visible_enemies):
                        print(f"{i+1}. {enemy.enemy_type} 位置: {enemy.position} 生命: {enemy.health}")
                    
                    try:
                        target_idx = int(input("选择目标: ")) - 1
                        if 0 <= target_idx < len(visible_enemies):
                            soldier.attack(visible_enemies[target_idx])
                            
                            # 检查敌人是否被消灭
                            if not visible_enemies[target_idx].is_alive():
                                enemies.remove(visible_enemies[target_idx])
                                slow_print(f"✅ 敌人{visible_enemies[target_idx].enemy_type}被消灭!")
                        else:
                            print("无效目标!")
                    except ValueError:
                        print("请输入有效数字!")
                else:
                    print("没有可见目标!")
            
            elif choice == "3" and soldier.soldier_class == SoldierClass.MEDIC:  # 治疗
                # 显示受伤队友
                injured = [s for s in squad if s != soldier and s.is_alive() and s.health < 80]
                
                if injured:
                    print("可治疗队友:")
                    for i, mate in enumerate(injured):
                        print(f"{i+1}. {mate.name} 生命: {mate.health}")
                    
                    try:
                        target_idx = int(input("选择队友: ")) - 1
                        if 0 <= target_idx < len(injured):
                            soldier.heal(injured[target_idx])
                        else:
                            print("无效选择!")
                    except ValueError:
                        print("请输入有效数字!")
                else:
                    print("没有需要治疗的队友!")
            
            elif choice == "4":  # 查看状态
                print(f"{soldier.name} 状态:")
                print(f"兵种: {soldier.soldier_class.value}")
                print(f"生命: {soldier.health}")
                print(f"体力: {soldier.stamina}")
                print(f"位置: {soldier.position}")
                print(f"武器: {soldier.weapon}")
            else:
                print("无效选择! 跳过行动")
        
        # 敌人行动
        for enemy in enemies:
            if not enemy.is_alive():
                continue
                
            # 找到最近的小队成员
            closest_soldier = None
            min_distance = float('inf')
            
            for soldier in squad:
                if soldier.is_alive():
                    distance = abs(soldier.position[0] - enemy.position[0]) + abs(soldier.position[1] - enemy.position[1])
                    if distance < min_distance:
                        min_distance = distance
                        closest_soldier = soldier
            
            # 如果距离足够近则攻击
            if min_distance <= 4 and closest_soldier:
                enemy.attack(closest_soldier)
                
                # 检查士兵是否阵亡
                if not closest_soldier.is_alive():
                    slow_print(f"⚰️ {closest_soldier.name} 阵亡!")
        
        # 恢复体力
        for soldier in squad:
            if soldier.is_alive():
                soldier.stamina = min(100, soldier.stamina + 10)
        
        # 检查任务完成情况
        mission.completed = mission.check_completion(squad, enemies)
        turn += 1
        
        if any(s.is_alive() for s in squad) and mission.completed:
            slow_print("\n🎉 任务完成! 所有目标达成!")
            slow_print("你的小队成功撤离!")
            break
        elif not any(s.is_alive() for s in squad):
            slow_print("\n💀 任务失败! 你的小队全军覆没...")
            break
    
    slow_print("\n游戏结束")
    slow_print("感谢游玩三角洲行动: Python战术小队模拟器")

if __name__ == "__main__":
    main()

Read more

Visual C++ 6.0 中文版安装包下载及 Win11 安装教程

Visual C++ 6.0 中文版安装包下载及 Win11 安装教程

本文分享的是 Visual C++ 6.0(简称 VC++ 6.0)中文版的安装包下载及安装教程,包括在 Win11 系统下的安装和使用问题解答。如果您在安装过程中遇到任何问题,请随时留言寻求帮助! 一、安装包的下载 vc6.0 安装包下载链接:点击这里下载 https://pan.quark.cn/s/bc24c385ee87 二、安装 VC++ 6.0 等待安装完成: 点击“安装”开始安装: 创建桌面快捷方式,然后点击“下一步”。 完成后点击“下一步”。 选择 C 盘以外的盘符: 更改安装路径,建议不要安装在 C 盘(默认盘符),可以选择其他的盘符,

By Ne0inhk

GCC 14编译选项配置实战(高性能C++构建秘籍)

第一章:GCC 14编译器的新特性与构建环境准备 GCC 14作为GNU编译器集合的最新稳定版本,引入了多项增强功能,显著提升了C++标准支持、诊断能力以及优化性能。开发者在使用前需确保构建环境满足最低依赖要求,并正确配置工具链。 核心新特性概览 * 全面支持C++23关键特性,包括std::expected和模板参数冗余推导 * 增强静态分析能力,新增对未定义行为的深度检测机制 * 优化跨函数边界内联策略,提升生成代码的执行效率 * 引入更精准的调试信息格式(DWARF-5),改善GDB调试体验 构建环境搭建步骤 在主流Linux发行版中安装GCC 14,推荐通过官方源或自定义编译方式获取: # 添加Ubuntu Toolchain PPA并安装 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-14 g++-14 # 设置默认编译器版本 sudo update-alternatives --install /usr/bin/

By Ne0inhk
【C++】B2108 图像模糊处理

【C++】B2108 图像模糊处理

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: C++ 文章目录 * 💯前言 * 💯题目描述 * 题目内容 * 输入格式 * 输出格式 * 示例 * 输入: * 输出: * 💯题目分析 * 问题拆解 * 💯我的做法 * 代码实现 * 代码分析 * 💯老师的做法 * 代码实现 * 代码分析 * 💯两种实现的对比 * 💯相关概念拓展 * 1. 四舍五入的实现 * 2. 二维数组的边界处理 * 💯优化建议 * 💯小结 💯前言 在C++程序设计学习中,处理二维数组与图像问题是一个重要的实践内容,能够帮助我们熟悉矩阵操作、边界条件处理以及浮点运算等核心技能。本篇文章将以一个图像模糊处理的题目为切入点,详细剖析题目背景、解题思路与两种代码实现(我的做法与老师的代码),并对两者进行深入比较与优化。同时,还将补充相关概念的详细解析,以期让读者对问题有全面而深入的理解。 C++ 参考手册 💯题目描述 题目来源于一个二维矩阵的图像模糊处理问题,其具体要求如下

By Ne0inhk

基于MISRA C++的车载软件开发实战案例

车载C++为何必须“自我约束”?一个电机控制项目的MISRA实战手记 你有没有想过,为什么在性能越来越强的车载芯片上,工程师反而要主动放弃C++里那些炫酷的功能? 比如异常处理、动态内存分配、宏函数、多重继承……这些在普通软件开发中习以为常的特性,在车规级代码里却成了“禁区”。这不是技术倒退,而是一场为了 安全与确定性 的必要妥协。 最近我参与了一个新能源车永磁同步电机控制器(PMSM)的软件开发项目,运行平台是英飞凌AURIX TC3xx系列多核MCU,系统等级达到ASIL-D——功能安全的最高级别。在这个项目中,我们不仅要用C++写高效控制算法,还得让每一行代码都经得起第三方审计的拷问。 最终的答案很明确: MISRA C++:2008 。 这不是一套可有可无的编码风格指南,而是整个软件生命周期中的“法律条文”。它不教你如何实现FOC算法,但它确保你的算法不会因为一个未初始化变量或一次非法指针访问而导致整车失控。 下面,我就以这个真实项目为背景,带你走进MISRA C++的实战世界——不是照本宣科地念规则,而是告诉你: 为什么非得这么做?不这么做会出什么事?我们又是怎么

By Ne0inhk