我正在设计一款游戏.在游戏中,各种游戏对象根据他们需要做的事情扩展不同的接口(和一个抽象类),并传递给处理程序,处理程序按照定义的时间间隔处理具有特定接口的项目(它们实际上将所有工作分散开来以一种简洁的方式确保始终处理输入/视频/等).
无论如何,其中一些对象扩展了抽象类Collider并传递给CollisionHandler.Collider类和处理程序负责碰撞中涉及的所有技术,并且只要求对象实现collidesWith(Collider c)函数,并根据它碰撞的内容进行修改.
许多不同类的对象将彼此碰撞,并且将根据它们碰撞的对象的类型及其特定属性而以非常不同的方式起作用.
完美的解决方案似乎是像这样使用instanceof:
class SomeNPC extends Collider{
collidesWith(Collider c){
if(c instanceof enemy){
Fight it or run away depending on your attributes and theirs.
}
else if(c instanceof food){
Eat it, but only if it's yellow.
}
else if(c instanceof BeamOfLight){
Try to move towards its source.
}
}
}
Run Code Online (Sandbox Code Playgroud)
这实际上似乎是一个合法的地方.我只是感觉不舒服.就像一个goto在某些特定情况下有意义一样.设计是否对任何人都有根本感觉?如果是这样,你会建议做什么来实现相同的行为.
HTML 从版本4.01开始提供标准的maxlength属性.Angular提供了ng-maxlength指令.
不同之处在于标准方法不允许输入超过最大值,而Angular的方法只会产生验证错误.
他们为什么决定包含这样的指令?这不是因为maxlength的动态数据绑定,因为行为不一致.这不是因为兼容性,因为它甚至可以在HTML 4.01中使用.我唯一的猜测是它提供了另一种验证范例,但听起来像是过度工程化.
我使用md5加密我的项目中的密码.
当用户点击忘记密码并提交他的电子邮件时,我必须将密码发送给他.
但密码是使用md5加密的.生成新密码不应该这样做.因为在这个项目中管理员可以看到用户的所有细节.所以我必须向管理员显示原始密码.所以初始密码非常重要.那我怎么能解密密码或任何其他方式给他发送原始密码?
提前致谢...
它看起来像在的构造函数的"网格"选项可拖动的相对绑定到元素的原始坐标被拖动-所以简单地说,如果你有三个可拖动的div的顶部分别设置为100,200,254个的像素相对给他们的父母:
<div class="parent-div" style="position: relative;">
<div id="div1" class="draggable" style="top: 100px; position: absolute;"></div>
<div id="div2" class="draggable" style="top: 200px; position: absolute;"></div>
<div id="div3" class="draggable" style="top: 254px; position: absolute;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
当'grid'设置为[1,100]时,所有这些都被启用拖动:
draggables = $('.draggable');
$.each(draggables, function(index, elem) {
$(elem).draggable({
containment: $('#parent-div'),
opacity: 0.7,
revert: 'invalid',
revertDuration: 300,
grid: [1, 100],
refreshPositions: true
});
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是,只要你拖动div3,比如说,向下,它的顶部会增加100,将它移动到354px,而不是仅仅增加46px(254 + 46 = 300),这将使它到达下一站在网格中 - 300px,如果我们将parent-div视为参考点和"网格持有者".
我查看了可拖动的源代码,它似乎是一个内置的缺陷 - 它们只是相对于可拖动元素的原始位置进行所有计算.
我想避免猴子修补可拖动库的代码,我真正想要的是如何使Draggable计算相对于包含父级的网格位置.但是,如果猴子修补是不可避免的,我想我将不得不忍受它.
var result ="1fg";
for(i =0; i < result.length; i++){
var chr = result.charAt(i);
var hexval = chr.charCodeAt(chr)
document.write(hexval + " ");
}
Run Code Online (Sandbox Code Playgroud)
这给出了NaN 102 103.
可能是因为它将"1"视为整数或类似的东西.有没有办法可以将"1" - >字符串转换为正确的整数?在这种情况下:49.
所以它会
49 102 103而不是NaN 102 103
干杯,
蒂莫
在我的cms我有index.php,客户端必须输入用户名和密码.如果他们是正确的,他会移动到admin.php,cms在哪里.
但现在黑客可以进入cms/admin.php,所以我的安全性现在很糟糕.
我知道,我可以使用$_SESSION
变量.
index.php
- 我可以给$ _SESSION ['成功']一些价值:
$_SESSION['success'] = TRUE
,并在admin.php中验证它
admin.php
if($_SESSION['success'] == TRUE)
{
my script here...
}
else header("Location: index.php");
Run Code Online (Sandbox Code Playgroud)
但我想在没有SESSION的情况下丰富这种效果.你能给我一个想法,我该怎么办?
谢谢
我已经建立了一个PHP脚本来托管用户上传的大量图像,生成随机数到图像文件名的最佳方法是什么,以便将来不会出现文件名冲突?就像Imageshack一样.谢谢.
我只是想知道如果我不止一次mysql_real_escape数据是否有所作为?
因此,如果我在我的网站的一部分中转发数据,然后再在另一部分代码中转义.这会是个问题吗?还是有所作为?
我刚刚在一个情况下稳定了一个unique_pointer引用作为函数参数传递.所以我看一下它,发现代码实际上是在编译和运行.
为什么会这样?当你可以引用那个指针时,指针是如何唯一的?
这是我的例子:
class Foo{
public:
int bar{23};
};
void Bar(std::unique_ptr<Foo>& a_foo){
a_foo->bar = 42;
}
int main(int argc, char *argv[]){
auto foo{ std::make_unique<Foo>() };
Bar(foo);
std::cout << foo->bar << std::endl; //outputs 42
return 0;
}
Run Code Online (Sandbox Code Playgroud) php ×4
javascript ×2
angularjs ×1
c++11 ×1
c++14 ×1
html ×1
instanceof ×1
integer ×1
java ×1
jquery ×1
md5 ×1
mysql ×1
php4 ×1
polymorphism ×1
quirks-mode ×1
security ×1
unique-ptr ×1
validation ×1