标签: robocode

scala运行时的安全性

我是Robocode引擎的开发者.我们想使Robocode多语言和Scala似乎是很好的匹配.我们这里有Scala插件原型.

问题: 因为用户是有创造力的程序员,他们可能会尝试以不同的方式赢得战斗.还可以从在线数据库下载机器人,任何人都可以上传机器人.因此,安全性的差距可能会导致用户计算机的安全漏洞.用Java编写的机器人在受限制的沙箱中运行.几乎所有东西都被禁止[网络,GUI,磁盘(有限),线程(有限),类加载器和反射].沙箱类似于浏览器小程序.我们使用SecurityManager,每个机器人自定义ClassLoader 等...

有两种方法可以在Robocode中托管Scala运行时:

1)将其与机器人一起装入沙箱内.我们非常安全,首选解决方案.但它会损害Scala运行时功能,因为运行时使用反射.也许在运行时生成类?使用线程进行一些内部清理?访问JVM /内部?(我不想限制语言的能力)

2)使用Scala运行时作为可信代码,在框外,安全性与JDK处于同一级别.(恶意)机器人的可见性.Scala运行时API是安全的吗?他们有保安人员的方法吗?有安全模式吗?Scala运行时是否有任何单例,可能会滥用机器人之间的通信?任何可以模拟线程的concurency/threadpool/messaging?(Scala运行时是否有任何安全审核?)

3)介于两者之间,某些运行时类和一些运行类.机器人/哪些类/包必须是可见的?它们只是私有实现?(这似乎是未来的解决方案)

问题: 是否有可能枚举和隔离必须在其余部分中运行在受信任范围内的运行时部分?具体的包和类?还是更好的主意?

我正在寻找具体的答案,这将导致安全的解决方案.随意的想法欢迎,但没有奖励.scala电子邮件小组正在进行讨论.还没有具体的答案.

security jvm scala runtime robocode

15
推荐指数
1
解决办法
1621
查看次数

是一个RoboCode像游戏或挑战Python?

我正在寻找类似于RoboCodeScalatron的游戏或挑战.我对Project Euler这样的挑战不感兴趣,在那里我获得了解决特定问题的积分.我正在寻找直接竞争.我知道http://sumost.ca/steve/games/但遗憾的是没有基于python的项目.如果您有任何建议,请与我分享.

python robocode

15
推荐指数
2
解决办法
4953
查看次数

使用.Net开发Robocode类型的游戏,用于学校作业

我目前在学校的最后一年,攻读计算机研究高等国家文凭,基本上在最后一个学期,我们需要开发一个软件项目,基本上包含一个完整的系统.

现在,我正在考虑做的事情就像Robocode一样,但是我将使用.Net Framework来代替Java.


什么是Robocode?

对于那些你不知道的Robocode是什么,它基本上是一种编程游戏在人们开发利用的类接口和存在的下载类的方法自己的机器人,然后他们在对方的自主战斗竞技场......像这样:

alt text http://articles.techrepublic.com.com/i/tr/cms/contentPics/robocode.gif


所以基本上,正如我所说,我想使用.Net Framework重新创建这种场景.我在StackOverflow上发布这个问题,希望更有经验的开发人员能够指导我为这个项目正确的方向.

到目前为止我的想法基本上是创造:

  • 一个脱机应用程序,将作为战斗舞台和用户界面,与现有的机器人等创建新的战斗.
  • 玩家可以使用在线界面注册新机器人,查看过去的锦标赛分数等...
  • 显然,玩家需要使用类接口来创建他们的机器人.

动画和图形(用于实际战斗)

现在,当战斗发生时,当然会有某种动画和动作,我还没有决定还有什么用作媒介.

我目前想到的选项是:

  • 正如我在上面的第一个要点中所说,开发一个将作为战场的离线应用程序,所有动画将主要使用C#代码完成
  • 或者开发一个可以处理动画的Silverlight应用程序(因此,将场景从离线应用程序更改为现在的在线应用程序
  • 或者,也许是最不可行的,使用JavaScript创建战斗动画,使用类似Canvas的东西

你认为什么可能更适合这种特殊情况?


开发类和接口

对于玩家开发机器人,我将提供他们能够像Robocode一样使用的某些类接口.

此类事件和方法的示例可能包括:

public void run () {}
public void onScannedRobot(ScannedRobotEvent e) {}

walk(/* ammount in pixels or w/e to walk to */);
turnRight(/* value in degrees for an angular turn */);
//etc...
Run Code Online (Sandbox Code Playgroud)

以下是Robocode(Java)中代码的片段:

public class MyFirstRobot extends Robot {
    public void run() {
        while (true) {
             ahead(100);
             turnGunRight(360);
             back(100);
             turnGunRight(360); …
Run Code Online (Sandbox Code Playgroud)

.net project-planning projects-and-solutions robocode

12
推荐指数
2
解决办法
3572
查看次数

我在哪里可以找到一个好的Robocode教程?

我非常喜欢和我的第一个机器人一起玩Robocode.现在我想做一些更令人兴奋的事情.制作高级机器人的最佳教程是什么?

java robotics robocode

11
推荐指数
1
解决办法
7221
查看次数

是否有机器人编程游戏robocode的替代品?

我不介意它是基于回合还是实时.它必须很受欢迎,并允许用java语言编写你的策略

java robocode

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

Robocode如何获取敌人的坐标

我一直在尝试获取敌人的坐标,以便我可以对他们所在的位置采取行动。我使用的代码似乎不起作用:

    double absBearing = e.getBearingRadians() + e.getHeadingRadians();
    double ex = getX() + e.getDistance() * Math.sin(absBearing);
    double ey = getY() + e.getDistance() * Math.cos(absBearing);
Run Code Online (Sandbox Code Playgroud)

我似乎正在得到奇怪的回报,这些回报给我的价值大于领域的大小,甚至是负数字,有人对如何修改这段代码以获取敌人的代码X以及Y与我X和相同的方式有任何想法Y吗?

java robocode

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

无法在robocode中打印到控制台

我正在尝试向控制台写任何东西,但没有运气.

System.out.println("abc");
Run Code Online (Sandbox Code Playgroud)

应该工作,但事实并非如此.这是我的全部代码:

import robocode.HitWallEvent;
import robocode.Robot;

public class MyRobot extends Robot
{

    @Override
    public void run()
    {
        while (true)
        {
            ahead(20);
            System.out.println("Test Test");
        }
    }

    @Override
    public void onHitWall(HitWallEvent event)
    {
        System.out.println("Ouch, I hit a wall bearing " + event.getBearing() + " degrees.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

最好的祝福!

java robocode

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

刷新Java参数

我正在编写一个名为robocode的编程游戏程序.问题出在这里:

    void wallScan(boolean While){
    stop();
    getStraight();
    turnGunRight(90);
    if(startabsolute){
        straight=true;
    }
    while (While){
        ahead(10000000);
        turnRight(90);
    }
    resume();
}
Run Code Online (Sandbox Code Playgroud)

您可能无法理解大多数代码,因为它扩展了robocode.Robot,但我的问题在于变量While.循环没有结束,因为方法获取参数一次,它是真的所以方法成为一个永恒的循环,但有一种方法来刷新方法参数,因为我不想每次调用这个时都做一个while循环方法?

java robocode

2
推荐指数
1
解决办法
203
查看次数

管理俱乐部项目的版本控制?

在我的学校,我们正在为我们的CS俱乐部开始编码竞赛,以帮助我们的新生学习使用Robocode的快速周转时间,截止日期,代码比较和API文档.我想知道是否有办法允许每个成员在他们自己的包/机器人上工作并将他们拉到一个中心位置进行比较和竞争?我希望能够将所有项目都放到我的笔记本电脑上,但允许俱乐部成员将他们的包裹分开,只对他们的部分工作.跨平台解决方案是理想的选择.

java version-control robocode

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

不可变类中的编译时错误:(最终)变量可能尚未初始化

代码尽可能简单,但我似乎遇到了编译器错误.我错过了什么?

作为旁注,_name完全删除字段只会在下一个字段上生成相同的错误.

PS:期待在这一个上有相当多的减号票,感觉我错过了一些非常简单的东西.

package mkumpan.helpers;

public final class BotState
{
    private final String _name;
    private final double _x;
    private final double _y;
    private final double _energy;
    private final double _heading;
    private final double _velocity;

    public BotState(
                    String name,
                    double x,
                    double y,
                    double energy,
                    double heading,
                    double velocity
    ) {
        String _name = name;
        double _x = x;
        double _y = y;
        double _energy = energy;
        double _heading = heading;
        double _velocity = velocity;
    } // BotState.java:26: error: …
Run Code Online (Sandbox Code Playgroud)

java immutability robocode

0
推荐指数
1
解决办法
170
查看次数