你如何为类似Dizzy的冒险游戏存储游戏等级?你会如何指定可步行区域和图形?是否可以通过向量来描述基于图块,基于像素或可行走的表面?
我正在寻找Javascript/Flash微型,跨浏览器声音播放器(通知程序),但我遇到的每个解决方案都是或者太大而且功能已满,或者基于不同的库(不是我正在使用的Jquery),或者有虫子 我需要的唯一功能是"玩".:)
例如,http://flash-mp3-player.net/players/js/download/ - 这个漂亮的小玩家在Firefox中不起作用(SetVariable问题).
我几乎连续工作了3天3夜.)
请推荐微小的跨浏览器实现.谢谢!
某些C++库在出现错误时调用abort()函数(例如,SDL).在这种情况下,没有提供有用的调试信息.无法捕获中止调用并写入一些诊断日志输出.我想在不重写/重建这些库的情况下全局覆盖此行为.我想抛出异常并处理它.可能吗?
当我输入Firefox(在地址行中)URL(如http://www.example.com/?query=Траливали)时,它会自动编码为http://www.example.com/?query=%D2%F0 %E0%EB%E8%E2%E0%EB%E8.
但是,不转换http://www.example.com/#ajax_call?query=Траливали等网址.
其他浏览器(如IE8)根本不会转换查询.
问题是:如何检测(在PHP中)查询是否被编码?怎么解码呢?
我试过了:
$ str = iconv('cp1251','utf-8',urldecode($ str));
$ str = utf8_decode(urldecode($ str));
$ str =(urldecode($ str));
许多函数来自http://php.net/manual/en/function.urldecode.php 没有任何作用.
测试:
$ str = $ _GET ['str'];
d('%D2%F0%E0%EB%E8%E2%E0%EB%E8'== urldecode('%D2%F0%E0%EB%E8%E2%E0%EB%E8'));
d('%D2%F0%E0%EB%E8%E2%E0%EB%E8'== $ str);
d('Траливали'== $ str);
d(urldecode($ STR));
d(utf8_decode(urldecode($ STR)));
!d('%D2%F0%E0%EB%E8%E2%E0%EB%E8'== urlencode($ str)); !
返回:
[false] [false] [false] ???? [真正]
某种解决方案:http://www.example.com/Траливали/ - 将查询作为url部分发送,并使用mod_rewrite进行解析.
我有一个组织游戏循环的想法.我对性能有些怀疑.可能有更好的做事方式.
考虑一下你有一系列游戏组件.他们都被称为在每次游戏循环迭代中做一些事情.例如:
GameData data; // shared
app.registerComponent("AI", ComponentAI(data) );
app.registerComponent("Logic", ComponentGameLogic(data) );
app.registerComponent("2d", Component2d(data) );
app.registerComponent("Menu", ComponentMenu(data) )->setActive(false);
//...
while (ok)
{
//...
app.runAllComponents();
//...
}
Run Code Online (Sandbox Code Playgroud)
优点:
释疑:
嗯,这个解决方案有多好?你是否在实际项目中使用过它?
WebSocket教程说需要两件事:
*1.应启动服务器端脚本:
php -q path/to/server.php
*2.客户端脚本应该打开套接字连接:
var socket = new WebSocket('ws://example.com:12345/server.php');
但是请求'ws://example.com/server.php'将再次运行服务器脚本.它将导致运行多个服务器实例.或客户端请求将导致服务器端错误(socket_bind(...)=>已绑定).
有人可以解释这种沟通模式吗?谢谢.
我需要一个包含任何用户定义类的实例的变体类型.所以我使用void*:
typedef boost::variant<void*, int, float, std::string> Tvariant;
Run Code Online (Sandbox Code Playgroud)
我用地图创建了一个包装类:
typedef std::map<std::string, Tvariant> Tvalues;
Run Code Online (Sandbox Code Playgroud)
用法示例:
int x = 123;
attributes.set("int_var", x);
x = attributes.get<int>("int_var");
MyClass* obj = new MyClass();
attributes.set("void*_var", obj);
obj = static_cast<MyClass*>( attributes.get<void*>("void*_var") );
obj = attributes.cast<MyClass*>("void*_var"); // the same
Run Code Online (Sandbox Code Playgroud)
变体类中的void*有2个问题:
可能的解决方案:
std::map<void*, typeid> typeid_map.当用户请求void*value,将其转换为任何TClass*时,让我们评估一个断言:assert(typeid_from_typeid_map == typeid(TClass*)).问题:
1.是否有其他解决方案来保存任何用户定义的类的值?
2.您可能会为上述问题推荐更好的解决方案并指出其他一些问题吗?
是否有可能在boost :: serialization库中使用引用反序列化(多态)对象而没有默认构造函数?
class Example
{
int& value;
public:
Example(int _value): value(_value) {}
virtual ~Example() {}
friend class boost::serialization::access;
template<typename Archive>
void serialize(Archive & ar, const unsigned int file_version)
{
ar & value;
}
};
class Usage
{
Example* example;
public:
Usage(): example(new Example(123)) {}
~Usage() { delete example; }
friend class boost::serialization::access;
template<typename Archive>
void serialize(Archive & ar, const unsigned int file_version)
{
ar & example;
}
};
Run Code Online (Sandbox Code Playgroud)
...
// serialize and deserialize object with reference and no default …Run Code Online (Sandbox Code Playgroud) c++ ×5
boost ×2
php ×2
abort ×1
architecture ×1
audio ×1
components ×1
flash ×1
game-loop ×1
graphics ×1
javascript ×1
oop ×1
opengl ×1
performance ×1
reference ×1
sockets ×1
url ×1
utf-8 ×1
utf8-decode ×1
variant ×1
websocket ×1