小编top*_*dev的帖子

类似头晕的游戏关卡表示(格式)

你如何为类似Dizzy的冒险游戏存储游戏等级?你会如何指定可步行区域和图形?是否可以通过向量来描述基于图块,基于像素或可行走的表面?

c++ oop

5
推荐指数
1
解决办法
446
查看次数

如何在OpenGL中剪辑渲染(C++)

如何在OpenGL(简单矩形区域)中剪辑渲染?请发布一个C++示例.

c++ opengl graphics

5
推荐指数
2
解决办法
8289
查看次数

Javascript/Flash微型,跨浏览器的声音播放器

我正在寻找Javascript/Flash微型,跨浏览器声音播放器(通知程序),但我遇到的每个解决方案都是或者太大而且功能已满,或者基于不同的库(不是我正在使用的Jquery),或者有虫子 我需要的唯一功能是"玩".:)

例如,http://flash-mp3-player.net/players/js/download/ - 这个漂亮的小玩家在Firefox中不起作用(SetVariable问题).

我几乎连续工作了3天3夜.)

请推荐微小的跨浏览器实现.谢谢!

javascript flash audio

5
推荐指数
1
解决办法
4883
查看次数

c ++中止覆盖

某些C++库在出现错误时调用abort()函数(例如,SDL).在这种情况下,没有提供有用的调试信息.无法捕获中止调用并写入一些诊断日志输出.我想在不重写/重建这些库的情况下全局覆盖此行为.我想抛出异常并处理它.可能吗?

c++ exception-handling abort

5
推荐指数
1
解决办法
1万
查看次数

PHP UTF编码的URL字符串

当我输入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中)查询是否被编码?怎么解码呢?

我试过了:

  1. $ str = iconv('cp1251','utf-8',urldecode($ str));

  2. $ str = utf8_decode(urldecode($ str));

  3. $ str =(urldecode($ str));

  4. 许多函数来自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进行解析.

php url utf-8 utf8-decode

4
推荐指数
2
解决办法
4104
查看次数

游戏循环性能和组件方法

我有一个组织游戏循环的想法.我对性能有些怀疑.可能有更好的做事方式.

考虑一下你有一系列游戏组件.他们都被称为在每次游戏循环迭代中做一些事情.例如:

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)

优点:

  1. 良好的基于​​组件的应用程序,没有依赖性,良好的模块化
  2. 我们可以动态激活/停用,注册/取消注册组件
  3. 一些组件可以透明地删除或替换,系统仍然可以正常工作(更改2d到3d)(团队合作:每个程序员创建他/她自己的组件,不需要其他组件来编译代码)

释疑:

  1. 游戏循环中的内部循环,对Component :: run()进行虚拟调用
  2. 我希望Component :: run()返回bool值并检查此值.如果返回false,则必须停用组件.因此内循环变得更加昂贵.

嗯,这个解决方案有多好?你是否在实际项目中使用过它?

architecture performance components game-loop

3
推荐指数
1
解决办法
892
查看次数

WebSocket服务器端脚本调用

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(...)=>已绑定).

有人可以解释这种沟通模式吗?谢谢.

php sockets websocket

3
推荐指数
1
解决办法
2420
查看次数

boost :: variant和void*指针

我需要一个包含任何用户定义类的实例的变体类型.所以我使用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个问题:

  1. 使用指向动态分配的内存的指针复制属性是危险且容易出错的.
  2. 用户可以static_cast void*到WrongClass*,而不是MyClass*.它编译,但结果是不可预测的.

可能的解决方案:

  1. 使用boost :: shared_ptr <void*>.
  2. 记住所有void*值的typeid(当它们被添加时)std::map<void*, typeid> typeid_map.当用户请求void*value,将其转换为任何TClass*时,让我们评估一个断言:assert(typeid_from_typeid_map == typeid(TClass*)).

问题:
1.是否有其他解决方案来保存任何用户定义的类的值?
2.您可能会为上述问题推荐更好的解决方案并指出其他一些问题吗?

c++ boost variant void-pointers

2
推荐指数
1
解决办法
1826
查看次数

使用引用反序列化对象,没有默认构造函数(boost :: serialization)

是否有可能在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++ serialization boost reference default-constructor

2
推荐指数
1
解决办法
2192
查看次数