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

2024-01-09

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

现在,我想做的是类似的事情Robocode https://robocode.sourceforge.io/,但我将使用 .Net Framework 来代替 Java。


什么是机器人代码?

对于那些不知道 Robocode 是什么的人来说,它基本上是一种编程游戏,人们使用现有的类接口和可下载类中的方法开发自己的机器人,然后他们fight彼此在竞技场中进行自主战斗......就像这样:

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


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

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

  • 离线应用程序将充当竞技场和用户界面,以与现有机器人等创建新的战斗。
  • 在线界面,玩家可以使用它注册新机器人、查看过去的锦标赛得分等...
  • 显然,玩家需要使用类接口来创建他们的机器人。

动画和图形(针对实际战斗)

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

我目前想到的选项是:

  • 正如我在上面第一个要点中所说,开发一个将作为战场的离线应用程序,并且所有动画将主要使用 C# 代码完成
  • 或者开发一个将处理动画的 Silverlight 应用程序(从而将场景从离线应用程序更改为现在的在线应用程序)
  • 或者,也许是其中最不可行的,使用 JavaScript 创建战斗动画,例如Canvas https://web.archive.org/web/20120803112420/https://developer.mozilla.org/en/Canvas_tutorial

您认为什么更适合这个特定场景?


开发类和接口

对于开发机器人的玩家,我将提供某些类接口,他们将能够像在 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...

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

public class MyFirstRobot extends Robot {
    public void run() {
        while (true) {
             ahead(100);
             turnGunRight(360);
             back(100);
             turnGunRight(360);
         }
    }
}

为了让战斗真正发生,我正在考虑使用反射来实际读取用户实际使用的方法,并实现它们在战斗的特定时刻运行和调用。


现在,我亲切而谦虚地请求你们经验丰富的开发人员,指导我完成我的这个项目,并就需要做什么提供建议......对于初学者来说,这个项目到底可行吗?而如果确实如此的话我需要从哪里开始我的项目?


至于我打算使用的技术和软件是:

  • .NET Framework 3.5,带有 C# 3.0
  • LINQ(语言集成查询)
  • SQL Server 2008
  • 微软视觉工作室2008
  • jQuery 框架
  • 可能是银光

我感谢你们所有人,即使你们设法阅读了我的问题,我将需要并非常感谢我能得到的所有帮助来完成这个项目。

感谢您的时间和精力。


顺便说一句,到目前为止,除了Robocode https://robocode.sourceforge.io/,我发现这些游戏与我想要创建的游戏相似:

  • NRobot https://web.archive.org/web/20170521050908/http://home.gna.org:80/nrobot/
  • Virii https://vrs-net.sourceforge.net/(谢谢Marc https://stackoverflow.com/questions/505040/developing-a-robocode-type-game-with-net-for-a-school-assignment#505076)

这个项目到底可行吗?

听起来很大。我不知道你还有多少时间。这是一个经验法则:

  • 当截止日期到来时,如果提供 90% 功能的系统 90% 已 100% 完成,那么您可能会说该项目至少 90% 成功。

  • OTOH 如果提供 100% 功能的 100% 软件仅完成了 90%(即未完成),那么什么都没有完成,项目就是失败的。

那么,成功的关键是“增量开发”和“持续交付”。您的项目规范说:

我们需要开发一个软件项目,它基本上包含whole system.

为此,我建议:

  1. 创建(即设计、开发和测试)小整体 system
  2. 重复{备份或版本控制您拥有的内容;向系统添加一个新的、完整的一点,并测试它直到满意为止}直到(你用完时间)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何解析 Newtonsoft JSON 中的 TimeSpan 值

    我想解析 JSON 字符串并使用token Type用于检测类型值的属性JTokenType TimeSpan 我无法弄清楚如何在输入字符串中表达 TimeSpan 所有内容似乎都被解释为 JTokenType String var tim
  • 实施 INotifyPropertyChanged - 是否存在更好的方法?

    微软应该实施一些快速的措施INotifyPropertyChanged 就像在自动属性中一样 只需指定 get set notify 我认为这样做很有意义 或者这样做有什么并发症吗 我们自己可以在我们的属性中实现类似 通知 的功能吗 有没有
  • 如何制作可修补/可更新的应用程序?

    我已经完成了一个学生项目 该项目从互联网上的 xml 文件中提取数据并将其保存到数据库并显示 我以几种不同的方式使用这些数据 例如在主页上显示在另一个选项卡中作为表格 并创建一些图表 我通过制作 5 个不同的类来完成这一切 每个类提取不同类
  • 如何在 Windows 窗体上显示 ClickOnce 版本号

    我有一个部署到两个不同位置的 Windows 窗体应用程序 内联网 ClickOnce Internet 通过 Windows 安装程序安装在 Citrix 场上 我显示单击一次部署版本的 ClickOnce 版本号ApplicationD
  • Portable 和 win-x64 在部署时有什么区别?

    我将代码部署到 Windows Server 2016 上的 IIS 我试图了解选择之间的有效区别Portable vs win x64在发布 设置 目标运行时下拉列表中 由于 JIT 需要将代码编译到特定的体系结构 站点在 Portabl
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 为什么我无法调试动态加载的程序集?

    我正在开发一个 Web API 项目 该项目使用内部模拟框架 允许拦截和修改来自控制器的响应 它使用 MEF 加载包含某些先决条件匹配时执行的代码的程序集 我知道这是正常工作的 因为我可以在响应中看到模拟已被执行 但由于某种原因我无法调试动
  • 从另一台计算机连接到 SQL Server

    我正在使用 C 连接到网络上另一台计算机上的 SQL Server 但收到一条异常消息 用户 用户名 登录失败 但是服务器日志状态表明使用 Windows 身份验证的用户连接成功 我的连接字符串是 Data Source ipaddress
  • 获取同名方法的集合

    我有一些代码 用于帮助 url 路由 尝试在控制器中查找操作方法 我的控制器看起来像这样 public ActionResult Item int id MyViewModel model new MyViewModel id return
  • 在模块 CommonLanguageRuntimeLibrary 中找不到类型 System.ApplicationException

    我通过 CodenameOne 版本的 IKVM 运行了第 3 方 Android 库 并成功导入了输出 dll 作为对 Visual Studio 中的 UWP 应用程序的引用 在尝试编译该项目时 我收到一个构建错误 从错误列表窗口 在模
  • 使用隐式转换运算符的 Nullable 行为的理由是什么

    我在人与人之间的互动中遇到了一些有趣的行为Nullable和隐式转换 我发现为引用类型提供从值类型的隐式转换它允许Nullable当我期望出现编译错误时 类型将传递给需要引用类型的函数 下面的代码演示了这一点 static void Mai
  • 查找/更新中的 EF 4.1 Code First 错误。有什么解决办法吗?是否应该报告?

    我在 EF 4 1 Code First 中发现了一个非常严重的错误 假设我们有这段代码从上下文中检索一个实体 然后用新值更新它 public T Update
  • 简单注入器:跨同一图的服务注入相同的 UnitOfWork 实例

    我有多个服务 每个服务都有一个UnitOfWork使用注入到构造函数中简易注射器 http simpleinjector codeplex com国际奥委会容器 目前我可以看到每个UnitOfWork实例是一个单独的对象 这很糟糕 因为我使
  • 了解多个 configureawait(false) 在单个异步方法中执行的操作

    考虑这段代码 public async Task SomeMethodAsync 1 code here executes on the original context for simplicity sake this doesn t c
  • GC什么时候运行?

    GC什么时候真正运行 它是在一定的时间间隔内运行还是在应用程序需要内存时运行还是什么 简短的回答 需要时 更长的答案 当分配无法兑现时 当 AppDomain 被卸载时 当 Windows 报告内存不足时 当 GC Collect 被调用时
  • 运行命令行进程并在该进程仍在运行时获取输出?

    如何运行命令行进程并在该进程仍在运行时获取输出 我的意思是使用自己的进度条运行 CLI 进程 可执行文件本身需要很长时间才能完成操作 所以我想从自己的进程中获取进度信息来显示我的应用程序中的进度 否则我不这样做在进程完成之前没有任何信息来显
  • C# 委托实例化与仅传递方法引用 [重复]

    这个问题在这里已经有答案了 我有一个简单的问题 与仅传递函数引用相比 实例化 C 委托有什么优势 我的意思是 Why do Thread t new Thread new ThreadStart SomeObject SomeMethod
  • C# 中 value 为匿名类型的字典

    是否可以在 C 中创建一个System Collections Generic Dictionary
  • 尝试加载自定义配置时,Visual Studio 安装和部署项目中出现 FileNotFoundException

    我试图在我的设置和部署项目中调用自定义操作来更新我的应用程序上的 app config 中的某些项目 我已经以通常的方式完成了自定义配置部分 例如 ConfigurationProperty serviceProvider IsRequir
  • 文件按文件名模式存在

    我在用 File Exists filepath 我想做的是将其替换为模式 因为文件名的第一部分发生了变化 例如 该文件可以是 01 peach xml 02 peach xml 03 peach xml 如何根据某种搜索模式检查文件是否存

随机推荐

  • 为什么 OnChange 在 Formik 中使用时不起作用?

    我正在尝试在 React 中使用 Formik 作为一个虚拟应用程序 如果我给出值作为道具 我将无法在任何一个输入框中输入任何内容 另一方面 如果我跳过 value 属性 那么我可以在框中键入内容 但提交时不会反映为值 这是代码 expor
  • Qt Mac 部署

    将 QT Framework 添加到我的 app 包中 我正在关注 Qt 站点上有关部署的文档 我创建了一个名为 HTTPClient app 的应用程序 我在 Contents 下创建了 Framework 文件夹 并复制了 crypto
  • 如何从 R 中的 posixct 格式日期时间中选择小时、分钟和秒

    我有一个像这样的数据框 dput tail x 10 structure list DATE structure c 1375725600 1375729200 1375732800 1375736400 1375740000 137574
  • OpenCV 匹配图像

    我正在尝试使用 OpenCV 来匹配如下图像 img2 http img849 imageshack us img849 8177 clearz jpg http img849 imageshack us img849 8177 clear
  • Umbraco 7 使用语言/字典

    我们的项目终于可以添加翻译了 我似乎无法弄清楚如何在 Umbraco 7 中实际使用语言 我在后端添加了一种语言和一些字典项目 但如何在代码中选择给定的语言 是否有任何帮助程序可以在 API 中获取翻译 就像 DictionaryHelpe
  • 使用WebView进行多页面登录网站并获取数据

    我正在为一个网站构建一个 Android 应用程序作为移动客户端 该网站没有 也不会 拥有自己的移动浏览器 UI 我选择的架构使用一个隐藏的 WebView 我使用登录页面对其进行初始化 loadURL 然后加载 JavaScript 以使
  • 如何使用 FCM 发送设备到设备通知,而不使用 XMPP 或任何其他脚本。

    有没有办法通过 FCM 将上游通知消息从一台 Android 设备发送到与 Firebase 数据库连接的另一台设备 我知道 XMPP 服务器可以接收上游消息并将通知发送到其他设备 要接收使用上游 API 发送的消息 我需要实现 XMPP
  • ajax 请求完成后浏览器继续“加载”

    您已经看到过这一点 在 ajax 密集的页面上 例如 meebo com 浏览器永远不会停止 旋转 它永远不会表明它已完成加载 造成这种情况的原因是什么 是否有任何方法可以一致地告诉浏览器 无论它是什么浏览器 加载已完成 编辑 抱歉 我应该
  • 标签移动到注册和子是什么意思?

    given a a label L1 db beat it 10 0 L2 what is the meaning of mov eax L2 sub eax L1 L2 寄存器 以及来自标签的子寄存器包含字符串 MOV EAX L2将标签
  • 有没有一个工具可以生成Spring应用程序上下文依赖关系图/图?

    有没有一个工具可以生成 Spring 应用程序上下文的图表 该工具还应该考虑注释驱动的配置 如 Autowired 该工具可以通过在运行时 转储 BeanDefinitions 来生成依赖关系图 IE 我不需要该工具来进行静态代码分析 Sp
  • 工会内的无名工会

    我正在阅读一些代码并发现类似以下内容 typedef union int int32 int boolean time t date char string union struct foo a struct foo b struct fo
  • 在 Android 中使用默认字体样式

    如何在 xml 中使用 Android 默认字体大小 I tried android textAppearance android style TextAppearance Large 但我得到 错误 错误 找不到资源 与给定名称匹配 位于
  • 在滚动和单击事件上上下移动 Div?

    我想制作一个类似于 chanel com 的网站 如果向下滚动 一个新的 div 会向上移动到页面顶部 不同的是 在我正在设计的网站上 它也应该在点击时具有相同的效果 在我的网站上 有两个按钮也应该在单击时上下移动同一 div 从而展开和折
  • 即使具有正确的权限,图形 API 错误 #200

    我正在设置一个机器人来自动在 Facebook 页面上发帖 但是当我运行脚本时 图形 API 抛出以下错误 图形返回错误 200 需要publish to groups权限并且应用程序安装在组中 或者以具有足够管理权限的管理员身份管理pag
  • Spring Boot 应用程序独立运行良好,在 docker 中出错

    我有一个基于 spring boot 的 java 应用程序 它可以从命令行正常运行 嵌入式 tomcat 独立 Problem 当我在 docker 中运行该应用程序时 它无法正确运行 控制台显示应用程序启动正常 没有错误 但是 浏览器显
  • 如何为每个应用程序使用一个 HttpClient?

    我正在寻找一种有效的方法来使用HttpClient对于我的 Android 应用程序 我在不同的活动中使用 HttpClient 并且我只想为应用程序使用一个客户端并将其在活动中传递 尽管我查看了一些答案 但我无法找到一种方法来仅使用一个客
  • 如何更改引导响应样式?

    我们计划以其他方式改变引导程序的响应性质 请查看当前的 html function panel title a on click function this closest panel siblings toggle panel title
  • Python的交互式提示符“>>>”输出到哪里?

    我遇到了一个有点不寻常的情况 我正在尝试编写交互式控制台的脚本 用于教学 测试目的 并且我尝试了以下操作 python gt dev null Python 2 7 3 v2 7 3 70274d53c1dd Apr 9 2012 20 5
  • Videojs,如何动态更新 m3u8 播放列表

    我想将新的传入块从后端添加到已经是 live m3u8 播放列表的播放器 这是现有的播放列表 已设置并正在播放 EXTM3U EXT X PLAYLIST TYPE VOD EXT X TARGETDURATION 6 EXT X VERS
  • 使用 .Net 开发 Robocode 类型的游戏,用于学校作业

    我目前正在学校的最后一年 正在攻读计算机研究国家高级文凭 基本上在最后一个学期 我们需要开发一个软件项目 该项目基本上包含whole system 现在 我想做的是类似的事情Robocode https robocode sourcefor