小编gna*_*nat的帖子

Gameloop for j2me"回合制"游戏

编辑:这对我来说更有意义,因为我已经离开了代码,谢谢你的帮助.

刚刚通过Coding Horror发现堆栈溢出,它看起来很棒.我想向社区询问我目前正在尝试解决的问题.

我正在使用j2me为midp 2.0手机开发一款roguelike游戏.该项目仍然处于开发的基本阶段,因为我弄清楚它是如何运作的.我目前坚持的部分与线程有关.

游戏有一个自定义HaxCanvas类,它扩展了GameCanvas和Implements runnable.它的run方法调用repaint()然后休眠50 ms,导致帧速率为20 FPS.这使我可以编写游戏的其余部分,而无需在任何地方放置重绘,并且应该使动画和效果更容易在以后进行.(至少在理论上).

游戏的流程由GameManager类控制,该类循环遍历地图上的所有NPC,轮流进行,直到玩家轮到.此时我需要输入以允许玩家四处移动和/或攻击事物.我最初是在调用我gameManager.runUntilHeroTurn()keyPressed方法HaxCanvas.然而,在阅读了j2me系统线程之后,我意识到在回调中放置一个可能会运行一段时间的方法是一个坏主意.但是我必须使用keyPressed来输入handeling,因为我需要访问数字键,并且getKeyStates()不支持这个.

Sofar我尝试将我的游戏循环放入其自己的线程中导致了灾难.在游戏运行了几次之后,出现了一个没有堆栈跟踪的奇怪的"未捕获的ArrayIndexOutOfBoundsException".

所以我想我的问题是:

对于j2me中的"回合制"游戏,实现游戏循环的最佳方式是什么,只有当玩家轮到你时才允许输入游戏?

java midp lcdui java-me

6
推荐指数
2
解决办法
1874
查看次数

寻找(c)迷你语言的lisp示例,即DSL

阅读精心编写的代码似乎可以帮助我学习一门语言.(至少它与C合作.)[删除问题的"过度指定"部分]

我特别感兴趣的是lisp作为一种适合创建特定于问题的迷你语言或DSL的语言的声誉.当然,该程序应该是开源的,并且最好通过网络获得.

我用Google搜索并找到了这个例子:

http://lispm.dyndns.org/news?ID=NEWS-2005-07-08-1

有人有另一个吗?(是的,我会继续阅读"Practical Common Lisp".)

11个小时后(仅11个小时!):谢谢大家.多么棒的网站,以及一堆好的答案和提示!

lisp open-source common-lisp

6
推荐指数
3
解决办法
2613
查看次数

计算机和手机之间的蓝牙客户端/服务器通信

我只需要一个基本的例子或教程,让手机和电脑通过蓝牙进行通信.

一个很好的链接/网站开始也很感激.

服务器部分(计算机部分)可以在许多编程语言(Java,C++,Python甚至其他东西)上制作.

客户端部分(移动电话)必须是Java Micro Edition MIDlet.

bluetooth midp java-me jsr82 bluecove

6
推荐指数
1
解决办法
3187
查看次数

如何在C++中构建N位变量?

我正在处理C++中非常大的布尔列表,每个约有2 ^ N个N布尔项.因为内存在这种情况下是关键的,即指数增长,我想构建一个N位长变量来存储每个元素.

对于小N,例如24,我只是使用unsigned long int.需要64MB((2 ^ 24)*32/8/1024/1024).但我需要上升到36.内置的变量是唯一的选择unsigned long long int,但它需要512GB((2 ^ 36)*64/8 /一千○二十四分之一千○二十四/ 1024),这是一个有点过分.使用36位变量,它可以为我工作,因为大小下降到288GB((2 ^ 36)*36/8/1024/1024/1024),这适合我的超级计算机的节点.

我试过std::bitset,但std::bitset< N >创造了至少8B的元素.所以列表std::bitset< 1 >远远大于列表unsigned long int.这是因为std::bitset只是改变了表示,而不是容器.

我也尝试过boost::dynamic_bitset<>Boost,但结果甚至最差(至少32B!),出于同样的原因.

我知道一个选项是将所有元素写为一个布尔链,2473901162496(2 ^ 36*36),然后存储在38654705664(2473901162496/64)unsigned long long int,它给出288GB(38654705664*64/8/1024/1024/1024).然后访问元素只是找到存储36位的元素的游戏(可以是一个或两个).但是现有代码(3000行)的重写很多,因为映射变得不可能,并且因为在某些功能执行期间添加和删除项目肯定会复杂,混乱,具有挑战性,结果很可能效率不高.

如何在C++中构建一个N位变量?

c++ algorithm optimization bitarray bitset

6
推荐指数
1
解决办法
380
查看次数

CLDC和MIDP对Java Mobile有什么区别?

任何人都可以解释CLDC和MIDP之间的区别吗?

midp cldc java-me

5
推荐指数
1
解决办法
4567
查看次数

Java信号量是否使用忙等待或默认等待/通知?

问题是这样的.我在Windows 7上使用JDK 6.0,并尝试使用信号量作为解决同步问题的机制.它工作得很好,但我试图避免忙于等待我的问题.

我只想问一下java文档并省去了麻烦,但文档是这样的:

Acquires the given number of permits from this semaphore,
 blocking until all are available, or the thread is interrupted.

Acquires the given number of permits, if they are available,
 and returns immediately, reducing the number of available permits
 by the given amount.

If insufficient permits are available then the current thread
 becomes disabled for thread scheduling purposes and lies dormant
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Semaphore.html#acquire(int)

也就是说,文档似乎暗示了两个答案.哪一个是正确的?

java multithreading semaphore

5
推荐指数
1
解决办法
1736
查看次数

IF的循环复杂度((A> B)和(C> D))和IF((A> B)OR(C> D))

我想知道两段代码的圈复杂度,

IF((A>B) AND (C>D)) 
{ a=a+b;c=c+d;}
Run Code Online (Sandbox Code Playgroud)

据我所知,上述代码的圈复杂度= 2 + 1 = 3,

另一个代码

IF((A>B) OR (C>D))
{a=a+b;c=c+d;}
Run Code Online (Sandbox Code Playgroud)

上面代码的复杂性是= 4 + 1 = 5,

上述复杂性是否正确?

cyclomatic-complexity

5
推荐指数
2
解决办法
5272
查看次数

为什么我的应用没有在Google Play上展示?刚刚发表

我刚刚尝试首次发布我的应用程序 -

我浏览了开发者控制台上的步骤,现在用"绿色"复选标记"已发布"(在我点击"激活"和"发布"之后,没有错误)

但是,我尝试在我的手机,平板电脑和Chrome浏览器上按名称搜索Google Play商店(称为"Urbanary Challenge"),但没有显示任何内容.(与公司名称搜索相同).

然后,我尝试直接URL:

https://play.google.com/store/apps/details?id=com.shameless.studios.twisted.trivia

而id是我的AndroidManifest.xml下的"包名",如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.shameless.studios.twisted.trivia"
android:versionCode="1"
android:versionName="1.0" >
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息"我们很抱歉,在此服务器上找不到请求的URL."

我究竟做错了什么?

xml android publish google-play

5
推荐指数
1
解决办法
1万
查看次数

从午夜到日期时间的秒数

我将雷达数据称为"轨道",轨道数据显示自上一个午夜以来的UTC秒数.这不是自1970年1月1日以来的秒数.

现在我想将它转换为日期时间,因为知道计算机上的时钟可能与雷达上的时钟略微不同步.我假设雷达的秒数是参考,而不是计算机的.我想将这些秒转换为完整的日期时间.午夜时分,事情似乎有点棘手.

有什么建议?我有一些想法,但我不想错过任何东西.

我正在使用C++ Qt.

c++ qt datetime utc

5
推荐指数
1
解决办法
1769
查看次数

编写一个通用方法来替换一系列遗留API方法

我正在使用遗留API编写代码,其代码我无法更改.对于在API中执行操作,支持数据类型(int,double,bool,string,APIObject)有一系列方法.它们采用与方法名称中指示的数据类型相同的参数.示例用法如下所示

GetIntExp(5)
GetStringExp("Hello")
GetDoubleExp(1.2)
GetDateExp(DateTime.Now)
GetAPIObjectExp(myObject)
Run Code Online (Sandbox Code Playgroud)

返回类型分别为IntExp,StringExp,DoubleExp,DateExp和ObjectExp.所有返回类型都继承自一个类(有趣的是泛型类型)StaticOperator<T>,其中T是数据类型.

是否有可能在我的代码库中编写一个泛型方法,根据传入的数据类型将调用重定向到合适的API方法?

c# generics

5
推荐指数
1
解决办法
146
查看次数