小编Jer*_*ein的帖子

C# - 俄罗斯方块克隆 - 无法阻止箭头键组合正确响应

我正在使用Visual C#2005编写一个俄罗斯方块游戏.这是我设计的最广泛的程序.

我创建了一个形状类和一个块类来控制不同俄罗斯方块的位置,移动和显示.我有每个形状的moveDown(),moveLeft()和moveRight()函数(和相应的canMoveDown(),canMoveLeft(),canMoveRight()布尔函数,验证它可以移动).这一切都很美妙.

我想使用向下,向右和向左箭头键让用户移动块,除了使用计时器使形状每隔几毫秒自动下降一行.

我正在使用KeyDown事件处理程序来检查用户何时按下向下,向左和向右箭头键.这不是那么难.问题是我想允许对角线运动,我希望它能够顺利运行.我已经尝试了一系列不同的方法来解决这个问题,并取得了不同程度的成功.但我不能说得对......

我最成功的方法是使用三个布尔变量来跟踪向下,向左和向右箭头键被按下的时间.我会在KeyDown事件中将布尔值设置为true,在KeyUp事件中将布尔值设置为false.在KeyDown事件中,我还将告诉块如何移动,使用布尔变量来检查当前正在按下哪个组合.除了一件事,它的效果非常好.

如果我按下其中一个箭头键并按住,然后按下第二个箭头键然后释放第二个键,该块将完全停止移动,而不是继续向第一个箭头键的方向移动,而第一个箭头键尚未释放然而.我认为这是因为第二个键触发了KeyDown事件,并且在释放时,KeyUp事件被触发,并且KeyDown事件完全停止触发,即使第一个键被触发.

我不能为我的生活找到一个满意的解决方案来解决这个问题.

任何帮助将不胜感激=)

c# keydown arrow-keys

4
推荐指数
1
解决办法
7754
查看次数

从linux脚本显示对话框

我有一个cron条目,每天在特定时间运行脚本.该脚本将设置DISPLAY:0并启动用户运行的程序(这是一个单用户桌面).我想更改此设置,以便用户首先看到一个对话框,以便他可以指示是否要运行该程序.

我正在使用Ubuntu与Gnome.是否有某种对话框命令可以返回是否单击确定或取消?还是有其他方法来达到这个效果?

linux scripting

4
推荐指数
1
解决办法
1092
查看次数

是否有一个等同于C的atoi功能的.NET?

如果我有一个像这样的字符串:

"26 things"
Run Code Online (Sandbox Code Playgroud)

我想将它转换为26.我只想在字符串开头的整数.

如果我使用C,我只使用atoi功能.但我似乎无法在.NET中找到任何相同的东西.

从字符串开头获取整数的最简单方法是什么?

编辑:对不起,我很暧昧.在字符串中查找空格字符的答案将在许多情况下起作用(甚至可能是我的).我希望在.NET中使用atoi.答案也应该使用像"26things"这样的字符串.谢谢.

.net atoi

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

计划任务打开URL

在每天的某个特定时间,我希望我的浏览器弹出一个标签到某个URL.

我的目标:

  1. 能够从计划任务中设置URL
  2. 使用默认浏览器(而不是硬编码)

我似乎无法立刻实现这两个目标.我会发布我的部分解决方案作为答案,但我希望有人会有更好的东西.

vbscript batch-file scheduled-tasks

4
推荐指数
1
解决办法
9241
查看次数

修改AccuRev交易评论

在AccuRev中,有没有办法更改我为交易提供的评论?

accurev

4
推荐指数
1
解决办法
1126
查看次数

如何查找失败的 checkstyle 规则的名称

Checkstyle 对某些代码犹豫不决,我想添加一个抑制规则。我如何找到失败的规则的名称,以便我可以专门为这部分代码禁止该规则?

java checkstyle

4
推荐指数
1
解决办法
1056
查看次数

滚动的Javascript结束

有时,软件安装程序强制您在启用"我同意"框之前滚动到EULA的末尾.如何在网页上产生相同的效果?

javascript

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

为什么我的包装器setenv()不能正常工作?

我有下面的方法,它正确地将ret值设置为0(表示setenv成功),但是当我检查这个环境变量是否实际设置时,它不存在.为什么会这样?

 void Class::mysetenv(char* a, char* b)                           
     {   
         if(a==0 || b==0)
             return;

         int ret = setenv(strdup(a), strdup(b), 1);
         printf("ret: %d %s %s\n", ret, a, b);                          
     }
Run Code Online (Sandbox Code Playgroud)

c setenv

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

Git一直在从我的存储库中删除2个目录,我该如何解决这个问题呢?

我不指望有人能解决我的问题,但我不太确定如何解决这个问题.如果我做"git status",我得到:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    app/controllers/application.rb
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#       modified:   app/views/main/index.html.erb
#       modified:   public/stylesheets/bandop.css
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       vendor/plugins/contacts/.gitignore
#       vendor/plugins/contacts/.gitmodules
Run Code Online (Sandbox Code Playgroud)

但如果我做"git add".然后"git status",我得到:

# On branch master
# Changes to be committed: …
Run Code Online (Sandbox Code Playgroud)

git version-control

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

指定XML模式数据类型为十进制或空白

XML模式中是否有一种方法可以指定元素可以包含空字符串或十进制?

如果我xs:decimal像这样指定类型:

<xs:element name="Sample" type="xs:decimal" />
Run Code Online (Sandbox Code Playgroud)

那么空白值将无法通过验证:

<Sample/>
Run Code Online (Sandbox Code Playgroud)

(我意识到指示无值的最佳方法是不包含该元素,但是我想知道是否存在一种允许空白或十进制的方法。)

xml xsd

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