Python学习——while循环

while` 循环简述

while 循环是一种基本的程序控制结构,用于在满足特定条件时反复执行一段代码块,直到条件不再满足为止。其基本语法如下:

while condition:
    # code block to be executed repeatedly

其中,condition 是一个表达式,其结果会被评估为布尔值(TrueFalse)。只要 conditionTrue,代码块就会被执行。每次循环结束后,会重新检查 condition,如果仍然为 True,则继续执行代码块;当 condition 变为 False 时,循环结束,程序跳过循环体,继续执行后续代码。

以下是一个使用 while 循环的简单示例:

count = 0
while count < 5:
    print(f"Current count: {count}")
    count += 1

在这个例子中:

  1. 初始化变量 count 为 0。
  2. 进入 while 循环,判断 count < 5 是否成立。因为初始值为 0,所以条件为 True,执行循环体内的代码。
  3. 打印当前计数 count 的值,并通过 count += 1count 增加 1。
  4. 循环结束,再次检查 count < 5。此时 count 已经变为 1,条件依然为 True,再次执行循环体。
  5. 重复步骤 3 和 4,直到 count 达到 5。此时 count < 5 条件不再成立(变为 False),循环结束。

输出结果:

Current count: 0
Current count: 1
Current count: 2
Current count: 3
Current count: 4

重要注意事项

  • 避免无限循环:确保 while 循环的条件最终能够变为 False,否则程序将陷入无限循环,无法正常结束。在实际编程中,通常需要在循环体内更新某些变量或状态,使得循环条件最终不满足。
  • 循环中断与提前退出:可以通过 break 语句在满足特定条件时立即跳出整个 while 循环。另外,可以使用 continue 语句跳过当前循环迭代,直接进入下一轮循环的条件检查。

应用场景

while 循环常用于以下情况:

  • 当需要根据某个条件反复执行某个操作,且循环次数不确定时。
  • 处理数据流或网络请求,直到接收到特定信号或满足停止条件。
  • 游戏、动画等实时模拟,每帧都需要更新状态并渲染画面,直到程序被用户终止。

在之前的 OpenCV 人脸识别应用示例中,while 循环用于持续从摄像头捕获视频帧,并对每一帧进行人脸检测与识别,直到用户按下 q 键触发程序退出。

在游戏开发中while 循环的应用

在游戏开发中,while 循环扮演着至关重要的角色,尤其是在构建游戏主循环(Game Loop)时。游戏主循环是游戏程序的核心,它负责持续不断地更新游戏状态、处理用户输入、执行游戏逻辑、渲染画面,然后重复这一过程,直到游戏结束。以下是 while 循环在游戏开发中的一些具体应用示例:

游戏主循环

import time

# 初始化游戏状态、加载资源等

running = True  # 控制游戏是否继续运行的标志

while running:
    # 获取当前时间,用于计算帧间隔和保持恒定帧率
    current_time = time.time()

    # 处理用户输入
    process_input()

    # 更新游戏状态(如移动物体、计算碰撞、更新得分等)
    update_game_state(current_time)

    # 渲染游戏画面
    render_scene()

    # 计算下一帧所需等待的时间以保持恒定帧率
    frame_duration = 1 / TARGET_FRAMES_PER_SECOND  # 假设目标帧率为60 FPS
    elapsed_time = time.time() - current_time
    sleep_time = max(0, frame_duration - elapsed_time)
    time.sleep(sleep_time)

    # 检查是否触发了退出游戏的条件(如用户点击退出按钮、收到系统关闭信号等)
    if should_quit():
        running = False

# 游戏结束清理工作
cleanup()

在这个例子中,while 循环确保了游戏主循环的持续运行。每一帧(iteration)都会执行以下几个关键步骤:

  • 处理用户输入:读取键盘、鼠标、手柄等设备的输入,更新游戏中的对应状态(如玩家角色移动、射击等)。

  • 更新游戏状态:基于当前时间、游戏规则和上一帧的状态,计算新一帧的游戏状态。这包括但不限于移动物体、检测碰撞、更新计分系统、管理游戏对象的生命值等。

  • 渲染画面:将更新后的游戏状态转化为可视化的图像,通过图形API(如OpenGL、DirectX等)或游戏引擎(如Unity、Unreal Engine等)呈现给玩家。

  • 控制帧率:为了保持游戏流畅且系统资源稳定,通常会限制帧率。这里通过计算所需睡眠时间来达到恒定帧率的目标。在实际项目中,可能会使用更为复杂的帧同步或时间步进方法。

  • 检查退出条件:在循环中适时检查是否有导致游戏结束的事件发生,如用户请求退出、游戏结束条件达成等。当条件满足时,设置标志变量 runningFalse,使循环结束。

AI行为决策

在游戏中的AI角色或NPC(Non-Player Character)的行为逻辑中,也常会用到 while 循环。例如,AI可能需要在满足特定条件之前持续尝试完成某个任务:

def ai_make_decision(enemy):
    target_reached = False
    while not target_reached:
        # 计算到达目标的最佳路径
        path = calculate_path(enemy.position, target_position)

        # 尝试沿着路径移动
        move_result = enemy.move_along_path(path)

        # 检查是否已到达目标
        target_reached = move_result == PATH_COMPLETED

        # 如果途中遇到障碍或被玩家干扰,重新规划路径
        if move_result == PATH_BLOCKED or player_is_interfering(enemy):
            continue

        # 其他AI决策逻辑(如攻击、躲避等)

    # AI到达目标后的行为
    execute_arrival_behavior(enemy)

在这个示例中,while 循环确保AI角色持续尝试到达目标位置,直至成功抵达或出现其他中断情况。循环内部包含了路径计算、移动尝试、状态检查以及应对各种情况的逻辑。

回合制游戏中的回合循环

对于回合制游戏,如棋类游戏、策略游戏等,while 循环可用于管理玩家与对手轮流行动的过程:

current_player = PLAYER_ONE
game_over = False

while not game_over:
    # 当前玩家进行回合操作(如移动棋子、使用技能等)
    perform_turn(current_player)

    # 检查游戏结束条件(如某方胜利、平局等)
    game_over, winner = check_game_end_condition()

    # 交换当前玩家
    current_player = PLAYER_TWO if current_player == PLAYER_ONE else PLAYER_ONE

在这个示例中,while 循环按照回合制游戏规则交替执行两位玩家的操作,直至游戏结束条件被触发。

总之,在游戏开发中,while 循环是构建游戏主循环、管理AI行为逻辑、控制回合制游戏流程等核心功能不可或缺的工具。通过灵活运用 while 循环和其他控制结构,开发者能够实现复杂多变的游戏逻辑,确保游戏顺畅运行并提供丰富交互体验。

😍😍 大量H5小游戏、微信小游戏、抖音小游戏源码😍😍
😍😍试玩地址: https://www.bojiogame.sg😍😍
😍看上哪一款,需要源码的csdn私信我😍

————————————————

​最后我们放松一下眼睛
在这里插入图片描述

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极致人生-010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值