《Game Programming Patterns》学习笔记 - 观察者模式

观察者模式可能是应用最为广泛的设计模式了,Java 将它放到了自己的核心库 java.util.Observer 中,C# 更是将其通过 event 关键字把它嵌入到了自己的语法中

一种常见的定义可以把它描述为:

一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统

在游戏中最常见的用途便是 “成就系统”

阅读更多

《Game Programming Patterns》学习笔记 - 享元模式

简而言之,享元模式就是将对象的数据分为两部分,其中一部分没有特定指明是哪个对象的实例,因此可以在它们间共享,GoF 称这部分为 “固有状态”,一个很常见的例子便是开放世界中的树林的渲染和瓦片地图的数据存储方式

享元模式是对内存和开发者友好的,它可以通过减少重复部分数据避免内存冗余,并且通过合并类来减轻程序员的管理负担

阅读更多

《Game Programming Patterns》学习笔记 - 命令模式

GoF 中的定义:

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

命令模式是一种回调的面向对象实现。

简而言之,便是将 “操作” 封装为类,将其实例化为对象后作为 “第一公民” 对待,一个通俗易懂的应用便是如绘图软件中的 Ctrl+Z 撤销功能

阅读更多

SDL2入门 - 常用功能简明笔记

常用第三方库:

  • SDL2_ttf 用来处理文本显示
  • SDL2_mixer 用来处理扩展格式的音乐(譬如MP3等)
  • SDL2_image 用来加载带有透明通道的图片等

初始化

1
2
3
#include <SDL.h>

SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); // 初始化视频和音频

创建窗口

1
2
3
4
5
6
7
8
9
10
11
12
#include <SDL.h>


#define WINDOW_WIDTH 窗口宽度
#define WINDOW_HEIGHT 窗口高度


SDL_Window* window = SDL_CreateWindow(
"窗口标题",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, // 分别表示窗口位置的x坐标和y坐标,使用内置常量SDL_WINDOWPOS_UNDEFINED表示窗口显示在默认位置
WINDOW_WIDTH, WINDOW_HEIGHT, // 分别表示窗口的宽度和高度
SDL_WINDOW_SHOWN); // 表示立即显示此窗口
阅读更多