如何在一秒钟内推迟选择(批量)?

时间:2015-06-28 21:22:35

标签: batch-file delay choice

有没有办法可以在一秒钟内延迟选择命令(批量)?

例如,如果我想制作一个可以四处移动的游戏,并且你有一些敌人需要战斗,那么敌人就不会那么快移动(他们只会每秒移动一次!)。

这是我尝试过的:

protected void imageButtonUpload_Click(object sender, ImageClickEventArgs e)
{
    int ID = Convert.ToInt16(labelID.Text);

    if (fileUploadProfile.HasFile)
    {
        SqlConnection cnn = new SqlConnection("Data Source=.;Initial Catalog=Session5_HomeWork;User ID=sa;Password=*************");

        cnn.Open();

        string Command = "Select GuidName from Table_AccountImages where ID = @ID";
        SqlCommand cmd = new SqlCommand(Command, cnn);

        cmd.Parameters.AddWithValue("ID", ID);
        string GuidName = cmd.ExecuteScalar().ToString();

        cnn.Close();

        fileUploadProfile.SaveAs(MapPath("~/Profile Images/" + GuidName));
        imageProfile.ImageUrl = "~/Profile Images/" + GuidName;

        Response.Redirect(Request.RawUrl);
    }
}

你可以看到我想延迟它约0.2秒。

我也尝试使用protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadImage(); } } private void LoadImage() { int ID = Convert.ToInt16(labelID.Text); SqlConnection cnn = new SqlConnection("Data Source=.;Initial Catalog=Session5_HomeWork;User ID=sa;Password=soroush"); cnn.Open(); string command = "Select GuidName from Table_AccountImages Where ID = @ID"; SqlCommand cmd = new SqlCommand(command, cnn); cmd.Parameters.AddWithValue("ID", ID); try { imageProfile.ImageUrl = "~/Profile Images/" + cmd.ExecuteScalar().ToString(); } catch (Exception) { imageProfile.ImageUrl = "~/Profile Images/Default.png"; } cnn.Close(); } ,但是当我这样做时,choice /c 123 /n /t 0.2 /d c 按钮不起作用...

告诉我是否需要更具体!

感谢所有帮助:D

1 个答案:

答案 0 :(得分:1)

不,本机CHOICE命令不支持小于1秒的超时值。即使它确实如此,我认为它不会对你有所帮助。

根据您问题中的信息,听起来您正在尝试开发一种实时工作的图形游戏(不是基于回合制)。我假设你希望游戏用移动的物体不断更新屏幕,并在用户按某些键时以某种方式响应。

CHOICE命令只会识别等待时发生的按键 - 换句话说,按键不会被缓冲。假设您的批处理脚本处于一个循环中,该循环可以获取用户输入,执行一系列计算,然后刷新屏幕。进行计算并刷新屏幕需要时间。有些按键会起作用,因为它们恰好发生在CHOICE正在执行时,有些则不会发生。这对用户来说可能会非常令人沮丧。

(请注意,来自管道或重定向输入的输入是缓冲的,但不是直接按键)

我相信您希望以下所有内容开发图形游戏:您需要一些缓冲按键的机制,并且在批处理循环中,如果检测到按键,则测试并采取措施。您希望按键的测试是“瞬时”(非阻塞)。而且你还需要一种机制来通过引入亚秒级睡眠来控制游戏的速度。还有许多其他问题需要解决。所有这一切都可以使用批处理,但这非常困难,需要大量关于批处理脚本如何工作的无证知识,以及许多神秘的语法和黑客。

有第三方工具可以使工作更轻松,但重点是什么?

注意 - 以下是我的观点,StackOverflow对基于意见的答案皱眉。但是,这里......

如果你只是想开发游戏,和/或自学一些编程技巧,那么批处理是一个可怕的起点。使用您能找到的任何其他语言会更好。除了批处理之外,您还可以使用其他任何东西,并且您最终会得到更优质的产品,并且在您使用它的同时学习更多有用的技能。

但是如果你想用纯粹的挑战和乐趣来开发游戏,那么我喜欢你的思维方式,对你有更大的力量:-)但是,如果这是你的目标,那么我建议不要使用任何第三方工具,否则在我的书中作弊。

意见结束

如果你确定你真的想用批量开发游戏,那么我强烈建议你学习我的SNAKE.BAT game。阅读整个主题,并研究代码。但我警告你,有许多先进的技术和黑客很难理解。它可能需要多次读数和大量时间才能理解所有内容。

我解决的一个问题是如何以“瞬时”,无阻塞的方式检测按键。我在http://www.dostips.com/forum/viewtopic.php?p=31035#p31035描述了这项技术。