首先、要明确一点、带图形的程序的底层也是黑窗口编程
图形的显示只占一个程序的一小部分代码(从费脑子的程度考虑、图形的显示本身并不是很难、无非是基本图元组合、但显示在哪里、怎么更新坐标、就有很大说法了)
数据的结构、对结构的操作占最大多数
比如、上课学的for 循环好像就能求个100以内的和
但 for 循环、其实也可以:
1. 对所有控件进行循环、每个控件绘制自己
2. 对所有游戏对象进行循环、每个对象更新自己的位置
3. 游戏对象和游戏对象之间检查碰撞
...
比如、上课学的 stl 库只能存学生的信息、然后就是把学生打印出来,增删改查
但换个视角、假如学生具有三维的坐标、具有3d模型,那么此时的 vector 还是可以存入学生(当然存个指向这些信息的指针就行了)
并且只要迭代这个vector、就能把一批学生的模型都加载到3d场景里!!(怎么去加载、那是别人的更底层的API该考虑的事)
线性容器可以管理一批事物、但线性容器具有局限性、这时候就得用别的数据结构、别的数据结构存在的动机,就是因为可能在某些操作时用普通的数据结构效率不高,
比如、游戏场景中有一大堆物体、难道任何物理都要两两检查一下碰撞?那就太复杂了、而且也不符合游戏的逻辑
所以需要把空间划分一下、每个小区域内可能产生碰撞、分别进行检查、显然这种操作不可能在 vector 上进行了!
总而言之:
一切东西就是上课学的那些、但人们的想象力、抽象能力是无穷的、于是诞生了操作系统、编译器、图形学、web开发、人工智能
表面上很难把 for 循环、读取文件、stl 之类的 “low”操作和游戏开发之类的高级话题联系起来、但本质上一切软件都是在这些基础语法之上构建的。