我正在尝试实施Pacman.它运行正常,但到目前为止,鬼魂没有使用任何寻路,而是在每个路径交叉点上随机决定采用哪条路径.所以你可以想象,Pacman赢得比赛并不困难;)
所以我在Pacman中阅读了一些关于路径查找算法的内容,在这里我发现了一个非常好的答案:Pacman的寻路算法
答案是指http://home.comcast.net/~jpittman2/pacman/pacmandossier.html#Chapter%204
这一切都很好,但在我的Pacman实施中,有两个Pacman由两个不同的玩家玩.所以我想知道如何调整寻路算法,以便幽灵并不总是追逐一个玩家.
有关如何修改算法的任何想法,以便幽灵对两个玩家或多或少同等公平?
我创建了一个应用程序,它从In TRA网站上的Web服务获取数据.为了让我的应用程序看到这些网站,我必须打开为我们公司内部网设置的VPN.因此,当我打开VPN时,它要求进行身份验证.必须在我的应用程序启动之前打开,因为我知道无法通过代码访问VPN(SDK中是否有任何与VPN协同工作的内容?)
该问题是,一旦我的我的应用程序启动,它需要对企业内部网的网站进行身份验证(验证不能被关闭出于安全原因).
所以在这种情况下:
因此,您可以看到这非常痛苦(必须两次输入网络凭据).
有人对我如何解决这个问题有任何想法吗?
BTW - 我在我的代码中使用ASIHTTPRequest.
我正在编写一个程序(C# Windows 窗体中的 Visual Studio 2010),它跟踪远程桌面客户端的多个实例(mstsc.exe - 用 Windows 7 版本测试)。我一直在尝试启动该程序并使用以下代码获取其 PID:
Process mstsc = Process.Start(mstscLocation, mstscConString);
int mstscProcessId = mstsc.Id;
DataRow row = openConn.NewRow();
row["RDP ID"] = mstscID;
openConn.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)
这将启动客户端并返回它应该的 ID。问题是,如果我尝试使用以下代码终止 PID,则无法这样做:
int rdpID = Convert.ToInt32(dgvOpenConnections.Rows[selectedIndex].Cells["RDP ID"].Value.ToString());
try
{
// kill off mstsc
Process mstsc = Process.GetProcessById(rdpID);
mstsc.Kill();
}
Run Code Online (Sandbox Code Playgroud)
我已验证从 Process.Start 记录的 PID 与从 DataGridView (dgvOpenConnections) 检索并放入 rpdID 的 PID 相同(尝试失败并命中捕获,因为原始 PID 不再存在)。此外,在启动 MSTSC.EXE 的一个实例后,我在命令提示符处发出了一个“任务列表”,并且可以验证它是否更改了 PID(在此测试中,C# 记录了 4288,但任务列表显示它运行为 8172)。
我无法杀死所有 MSTSC 进程,因为我试图控制多个进程。有没有办法追踪似乎使用的第二个 PID MSTSC?我的猜测是它要么启动第二个进程并摆脱第一个进程,或者这可能是一个子进程(尽管启动后返回的 PID 不再存在)。
如何在 C# 中确保我有正确的进程 …
我有一个应用程序为每个新客户创建一个单独的数据库(SQL Server 2008),在测试期间我们最终得到了许多名为PREFIX的数据库.
我希望有一个脚本可以查找以PREFIX开头的所有数据库.放下它们,这样我们就可以开始一个干净的测试循环.任何帮助非常感谢.
您将获得一系列各种交通工具的旅行机票,这些机票将通过途中的几个站点将您从A点带到B点.所有的门票都没有故障,你不知道你的旅程从哪里开始,也不知道它的结束地点.按正确的顺序对门票进行排序以完成您的旅程.
tickets = [ {from: "Barcelona", to: "New York"} {from: "Barcelona", to: "Gerona"}, {from: "Madrid", to: "Barcelona"}, {from: "Gerona", to: "Barcelona"} ]
我想,正确的顺序是:
tickets = [ {from: "Madrid", to: "Barcelona"}, {from: "Barcelona", to: "Gerona"}, {from: "Gerona", to: "Barcelona"}, {from: "Barcelona", to: "New York"} ]
因为没有去马德里的机票,也没有来自纽约的机票.
什么是该任务的最佳算法?
该语言是JavaScript,但与语言无关的解决方案就足够了.
更新:我更改了样本数据,以免与单程飞行问题混淆.
我想创建一个自定义的DataRow,它将具有-let的说法 - 一个名为IsCheapest的软件.
public class RateDataRow : DataRow
{
protected internal RateDataRow(DataRowBuilder builder) : base(builder)
{
}
public bool IsCheapest { get; set ;}
}
Run Code Online (Sandbox Code Playgroud)
我想要一个只包含***RateDataRow***的新DataTable,以便.NewDataRow()将RateDataRow实例作为新行返回.
什么应该是扩展DataTable的类的实现?
谢谢,
在向远程Web服务器发出HTTPS请求时,我使用WebRequest,它建立与远程Web服务器的安全连接.在开发期间,我在服务器上使用自签名证书,并且WebRequest无法建立安全连接,因为证书无效,这是预期的行为.
我发现这个代码"远程"证书检查,通过SetCertificatePolicy()
以下代码中的调用方法激活.
public static void SetCertificatePolicy()
{
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
}
/// <summary>
/// Remotes the certificate validate.
/// </summary>
private static bool RemoteCertificateValidate(
object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
// trust any certificate!!!
System.Console.WriteLine("Warning, trust any certificate");
return true;
}
Run Code Online (Sandbox Code Playgroud)
我想知道,如果可以对远程SSL证书进行特殊检查(例如使用上面的代码),那么我可以验证远程Web服务器使用的是有效的SSL证书,而不仅仅是任何有效的证书,而是一个我想要?例如,我想确保我正在与www.someplace.com网站交谈,证书发给ACME公司,指纹00:11:22:.....
这种情况的"最佳实践"方法是什么?
谢谢!
两张桌子.
电子邮件id(int10)| 所有权(int10)
消息emailid(int10)已索引| 消息(中等文本)
子查询(在mysql中很糟糕).
SELECT COUNT(*)FROM messages WHERE message LIKE'%word%'AND emailid IN(SELECT id FROM emails WHERE ownership = 32)
这里的用法是我在电子邮件上运行搜索(在上面的示例中显然简化了),它会生成一个包含3,000个电子邮件ID的列表.然后,我想对邮件进行搜索,因为我需要进行文本匹配 - 仅针对该邮件的3000封电子邮件.
对消息的查询是昂贵的(消息没有索引),但这很好,因为它只会检查几行.
思路:
i)加入.到目前为止,我对此的尝试都没有奏效,导致对消息表进行全表扫描(即未使用的emailid索引)ii)临时表.我认为这可行.iii)缓存客户端中的id并运行2个查询.这确实有效.不优雅.iv)子查询.mySQL子查询每次运行第二个查询,所以这不起作用.也许修复在mysql 6中.
好的,这是我到目前为止所拥有的.这些是实际的字段名称(我简化了一些问题).
查询:
SELECT COUNT(*) FROM ticket LEFT JOIN ticket_subject
ON (ticket_subject.ticketid = ticket.id)
WHERE category IN (1)
AND ticket_subject.subject LIKE "%about%"
Run Code Online (Sandbox Code Playgroud)
结果:
1 SIMPLE ticket ref PRIMARY,category category 4 const 28874
1 SIMPLE ticket_subject eq_ref PRIMARY PRIMARY 4 deskpro.ticket.id 1 Using where
Run Code Online (Sandbox Code Playgroud)
它需要0.41秒并返回113的计数(*).
运行:
SELECT COUNT (*) FROM ticket WHERE category IN …
Run Code Online (Sandbox Code Playgroud) 我正在开发一种Windows服务,它将在每天的特定时间运行.如果多个用户登录到该计算机,会发生什么?如果有5个用户登录,它会同时运行5次吗?如果确实如此,有没有办法防止它?
我必须设置一个LinkButton的OnClientClick属性,但在LinkButton绑定之前我不知道这个值是什么.我试图在转发器绑定时设置值,但我无法训练如何获取'boundItem/dataContext'值...
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:LinkButton Text="HelloWorld" ID="Hyper1" runat="server" OnDataBinding="Repeater1_DataBinding" >
</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
var list = new List<TestObject>();
list.Add(new TestObject() {TestValue = "testing1"});
list.Add(new TestObject() { TestValue = "testing2" });
list.Add(new TestObject() { TestValue = "testing3" });
this.Repeater1.DataSource = list;
this.Repeater1.DataBind();
}
public void Repeater1_DataBinding(object sender, EventArgs e)
{
var link = sender as HyperLink;
//link.DataItem ???
}
Run Code Online (Sandbox Code Playgroud)
反正有没有找出当前行绑定项目是什么?