Skip to content

算法在游戏中的应用

国际化课程

Lecture 1

概述

游戏的分类

  • 策略游戏:实时策略、塔防。
  • 运动:单人、团队、竞速。
  • 模拟:飞行模拟、商业模拟。
  • 冒险。
  • 角色扮演:肉鸽。
  • 动作:射击、格斗、音乐、平台游戏(platformer)

Pygame 游戏引擎

建议阅读 Python 三剑客的项目实战。

MVC 模式

以棋盘游戏为例:

  • Model 管理数据。在棋盘游戏中负责:初始化期盼、移动棋子、判断输赢。
  • View 负责显示。
  • Controller 处理输入。除了键盘、鼠标等,在多人游戏中还包括网络。将输入动作映射为 model 或 view 的动作

图像

剩下半节课讲了如何用 Pygame 画图。

Lecture 2

一整节课都在讲 Pygame。

Lecture 3:迷宫

迷宫基础知识

  • Cell:迷宫中的一个格子。
  • Perfect maze:任意两个 cell 之间有且仅有一条路径。这意味着很多分支,但是没有环。
  • Unicursal maze:没有分支,从头到尾只有一条路径。
  • Braided maze:有环,但是没有死胡同。
  • Weave maze:有高度分层的迷宫。

迷宫的指标:

迷宫生成

大多数算法以全不相连的 cell 开始,然后逐渐连接它们,称为 carving。另一些算法则在 cell 之间添加 wall,称为 wall adders。

  • Binary Tree:
    • Buckblog: Maze Generation: Binary Tree algorithm
    • 生成一个完美迷宫。
    • 因为是以 cell 为单位进行计算,非常容易并行
    • 生成出来的迷宫没有 entry 和 exit,因为是完美迷宫,所以可以随意放置。
  • Sidewinder:
    • Buckblog: Maze Generation: Sidewinder algorithm
    • 第一行全连接。接下来每一行中,每走一格决定要不要连接到下一格。每次决定不连接时,就从之前连接的 cell 中随机选择一个连接到上一行。
    • 逐行生成。各行可以并行。
    • 有很多短的死胡同。
    • 有南北向的倾向。
  • Aldous-Broder(Random walk):
  • Wilson:
  • Recursive Backtracker

迷宫求解

Lecture 4:迷宫

BFS

Dijkstra

GBFS

A*

Lecture 5:碰撞