网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月02日漏签0天
游戏开发爱好者联盟吧 关注:3,610贴子:12,158
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 5回复贴,共1页
<<返回游戏开发爱...吧
>0< 加载中...

Data Structures For Game Programmers

  • 取消只看楼主
  • 收藏

  • 回复
  • fengsser
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
很多人在问学游戏编程应该学习什么样的知识的时候,会有各种各样的答案。
如语言(C,C++,java等)库(WIN API,Directx,openGL) 引擎(Unity3d)
等,却鲜有人提到数据结构。追本溯源,Vedio Game 其实就是 computer program 。
语言,引擎等只是工具,要把工具用好,还得把基础打牢。可以说,数据结构是游戏中重
中之重的部分。推荐大家看一本好书 《Data Structures For Game Programmers》
今天起我会阅读这本书,并把当中重要的部分摘抄上来。


  • fengsser
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
注意,我不是在翻译,本人英语渣渣,只是大意说说中心思想,有错误请纠正,谢谢。
Introduction 简介
What is a computer program? When you get down to the lowest level, you can sepa-
rate a program into two main sections: the data and the instructions that operate
on the data. These two sections of a program are commonly called the data struc-
tures and the algorithms.
程序主要分两部分,数据和对数据的操作。也即数据结构和算法。
Understanding data structures and algorithms is an essential part of game pro-
gramming. Knowing the most efficient way to store data and work with the data is
an important part of game programming;
说明了数据结构和算法的重要性,要追求高效的数据储存和处理的方法。
I have a few goals with this book:
■ Teach you how the most popular data structures and algorithms work
■ Teach you how to make the structures and algorithms
■ Teach you how to use the data structures in computer games
读完这本书,我们会掌握到
最流行的数据结构和算法的原理
如何构造数据结构和算法
如何在电脑游戏中使用数据结构


2025-07-02 08:30:10
广告
  • fengsser
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Topics Covered in This Book
这本书主要涵盖了六个主题
Concepts
--Basic Algorithm Analysis
--Templates
概念,主要介绍简单的算法分析和C++中的Templates。简单的算法分析让我们知道那种算法更适合。后文大量代码使用到Templates,为了照顾没用过的读者也简单的介绍了其用法。有相关方面基础的可跳过。
The Basics
基础的数据结构
--Arrays 数组
--Bitvectors 位的一位数组,位向量
--Linked List 链表
--Stacks and Queues 栈和队
--Hash Tables 哈希表
Recursion and Trees
递归和树
--Recursion
--Trees
--Binary Tree
--Binary Search Tree
--Priority Queues and Heap
--Game Trees and Minimax Tree
主要讨论递归和二叉树,二叉树的应用
Graphs
图
--Graphs
--Using Graphs for AI: Finite State Machines
Algorithms
算法
--Sorting Data 排序
--Data Compression 数据压缩
--Random Numbers 随机数
--Pathfinding 寻路
Appendixes
附录
--A C++ Primer
--The Memory Layout of a Computer Program
--SDL (Simple DirectMedia Layer library )
--Introduction to the Standard Template Librar
如果有同学对上面某些内容有兴趣可以直接跳到那部分啦


  • fengsser
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Basic Algorithm Analysis
主要就说了Big-O Notation,总结就是一下几张图
当n趋向无穷大时,花费的增长情况









  • fengsser
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顺便贴贴一张经典排序复杂度对比图

部分算法具体代码可以在贴吧精华找到(Java版)


  • fengsser
  • 颇具名气
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Stacks and Queues
堆栈和队列
}}}堆栈{{{
堆栈 LIFO 也就是 Last in first out ,是一种先进后出的数据存储、操作方式。他可以有多种实现方法,如用数组,链表。
堆栈操作示意图

也就是对数据的插入或者删除都是在一端进行的。
}}}堆栈的实现{{{
堆栈实现的方法有很多,书上主要给了链表和数组的例子,这里我只说数组,因为我常用语言不支持指针。


你可以把数组脚标的最小索引(如m_array[0])当作是堆栈的底部,m_top是我们定义的一个变量,用来标记当前头部位置,他指向一个即将插入数据的空间,当进行push插入数据操作时,数据被存放到m_top所指向的空间,然后m_top++

初始化的时候,我们把m_top指向栈底,表示当前堆栈为空。
Push(插入数据)函数

m_size也是我们在类中定义的,表示堆栈的大小。开始时先判断堆栈是否已满,如果未满则插入数据,m_top++
Pop(移除数据)函数

首先判断是否到达栈底,如果是,则不用操作,否则m_top--。我们并不用对数据进行实际上的操作,因为下次插入时,被删除的数据会被覆盖。我们的所有操作都是根据m_top来进行的。
Top(获取堆顶数据)函数
Datatype Top() {
return m_array[m_top - 1];
}
之所以要减一是因为m_top永远指向下一个空间
Count(统计当前已用堆栈大小)函数

下一节我们将来看看堆栈的实际应用,游戏菜单的制作。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 5回复贴,共1页
<<返回游戏开发爱...吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示