好吧,这可能是一个业余程序员提出的一个愚蠢的问题,他试图通过实验了解 Android 图形的基本使用,但就是这样。
为了让自己熟悉 2D Android 图形以帮助我的一位 friend 希望我将他的想法用于他的游戏,我决定尝试制作一个简单版本的乒乓球。 (简单的意思是我什至还没有让两个桨移动)
离开 Android API guides ,我围绕具有 3 个 ShapeDrawable 对象(矩形)的自定义 View 对象 (PongView) 构建了实验性应用程序。两个桨(我称它们为棍子)和球。我在 View 中实现了一个 MotionEventListener 并使左摇杆随之移动(是的,我想通了:)。
之后,我通过使用在调用自定义 View 内的更新方法的主 Activity 中创建的延迟 Runnable 让球移动。在更新方法中,我制作了一个碰撞处理程序,当它撞击屏幕的侧面或 Racket 的任何侧面时,它会反转球的 vector (在特定轴上)。
但在试用它之后,我发现我的其中一个碰撞条件没有触发。球会穿过棍子的底部和右侧,当它击中左侧或顶部时弹跳。
碰撞条件如下:
//collisions
if ((bx + bside == getMeasuredWidth() || bx == 0) || //hit right or left of screen
((bx + bside == lx || bx == lx + width) && (by < ly + height && by > ly)) || //hit left stick
((bx + bside == rx || rx + width == bx) && (by < ry + height && by > ry))) { //hit right stick
bVectorX = -bVectorX;
System.out.println("bounce x");
}
if ((by + bside == getMeasuredHeight() || by == 0) ||
((by + bside == ly || by == ly + height) && (bx < lx + width && bx > lx)) ||
((by + bside == ry || by == ry + height) && (bx < rx + width && bx > rx))) {
bVectorY = -bVectorY;
System.out.println("bounce y");
}
为了缩小问题范围,我注释掉了除此语句之外的所有内容,因为此语句给我带来了麻烦(至少在 x 轴上):
bx == lx + width
我意识到,由于 lx 在运行时从未改变,我可以插入原始值 (75) 进行测试,看看是否会触发条件。它没有。所以我决定改用 76,猜猜看,它奏效了!我不知道为什么,但它奏效了。球在那条像素线上反弹。所以我试着把变量放回去,尝试:
bx == lx + width + 1
bx == lx + width - 1
他们都成功了!然而,当我拿走一个 +/- 1 时,它会直接穿过 Racket 并从击中另一侧弹开。 (因为我所做的只是反转 vector )。我想让它做的是击中 Racket 的右侧并反转 vector 。
我不知道为什么会这样,在此先感谢您的帮助:)
编辑:所以我测试了条件,发现这两段代码返回 true。
if (75 == 75) {
int i = 75;
if (i == 75) {
但这仍然不会返回 true。
if (bx == 75) {
再次感谢您的支持。 :)
最佳答案
您不应该检查是否完全相等,即 if (bx == 75) {}因为如果您的 bVectorX 满足此检测碰撞的条件仅具有非常有限的一组值(即,只有整数加上或减去 bx 才会始终使它成为值 75)。
只需使用 <=和 >=你应该没事的。
这同样适用于检测与屏幕边缘的碰撞。
关于java - 给定 75 : android 时条件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669962/
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我有一个rubyonrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www