3_observer
#Observer 成就系统
achievements system
玩家完成某种成就后,通知监督者,监督者做出相应出来 ```
//简单来说就是事件触发的时候, 通知监督者 class Observer
{
public:
virtual ~Observer() {}
virtual void onNotify(const Entity& entity, Event event) = ;
}; class Achievements : public Observer
{
public:
virtual void onNotify(const Entity& entity, Event event)
{
switch (event)
{
case EVENT_ENTITY_FELL:
if (entity.isHero() && heroIsOnBridge_)
{
unlock(ACHIEVEMENT_FELL_OFF_BRIDGE);
}
break; // Handle other events, and update heroIsOnBridge_...
}
} private:
void unlock(Achievement achievement)
{
// Unlock if not already unlocked...
} bool heroIsOnBridge_;
}; class Subject
{
private:
Observer* observers_[MAX_OBSERVERS];
int numObservers_; public:
void addObserver(Observer* observer)
{
// Add to array...
} void removeObserver(Observer* observer)
{
// Remove from array...
} protected:
void notify(const Entity& entity, Event event)
{
for (int i = ; i < numObservers_; i++)
{
observers_[i]->onNotify(entity, event);
}
} };
``` 语言绑定: java mvc
c# event 其他例子: ```
ui得到数据改变的通知
数据改变,ui即时表现出来
```
3_observer的更多相关文章
随机推荐
- ztreeSearch
$.fn.extend({ ztreeSearch : function(options) { // var _self=$(this); var defaults = { id : '', sear ...
- python+pip+adb
最近开始玩python,用它写一些小程序游戏的辅助,现在做下总结 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对 ...
- 首页底部菜单FragmentTabHost的使用
一般现在的菜单都是底部FragmentTabHost,切换Fragment来实现的,今天我们就使用这个来看看如何实现的 首先是布局文件 <?xml version="1.0" ...
- 初识Modbus TCP/IP-------------C#编写Modbus TCP客户端程序(二)
由于感觉上一次写的篇幅过长,所以新开一贴,继续介绍Modbus TCP/IP的初步认识, 书接上回 3).03(0x03)功能码--------读保持寄存器 请求与响应格式 这是一个请求读寄存器108 ...
- Python中使用__new__实现单例模式并解析
阅读文章前请先阅读 Python中类方法.__new__方法和__init__方法解析 单例模式是一个经典设计模式,简要的说,一个类的单例模式就是它只能被实例化一次,实例变量在第一次实例化时就已经固定 ...
- 【问题解决】Tomcat 启动时闪退或提示“Neither the JAVA_HOME or the JRE_HOME environmental variable is defined.”
问题解决思路: 1.分析startup.bat启动脚本:发现其调用了catalina.bat,而catalina.bat调用了setclasspath.bat 2.在setclasspath.bat的 ...
- windowsphone8.1学习笔记之应用数据(四)
应用数据的存储格式常用的分为json和xml两种(其实我都想略过这个地方的,json我一直用的是json.net,而wp上操作xml的方式与其他相比也没太多变化). 先说说json数据存储,关于jso ...
- Unable to determine IP address from host name
- 【python】-- MySQL简介、安装、操作
MySQL简介.安装.操作 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储 ...
- ros下单目相机校正
1. 安装对应的驱动与程序包. 图像对应包 http://wiki.ros.org/camera_calibration 在gitbub下载image_pipeline : ...