我即将结束我的第一年CS,我认为巩固今年学到的所有东西的好方法将是个人游戏项目.
我想实现一个基于2D的rts,我正在思考星际争霸I,魔兽II甚至命令和征服.我将有大约3个月没有中断来实施游戏.
所以对于有java游戏编程经验的人来说,我有几个问题:
在3个月内从头开始设计2D rts引擎是否现实?如果是这样,有什么好的书籍/资源可以入手?
修改一些现有项目会更好吗?我认为必须与很多其他人的代码合作的经验会很好,因为我们在大学本科学位课程中接触这些主题似乎非常罕见,如果不存在的话.
是否有任何人可以推荐的开源2d rts项目?我看过几个,但大多数似乎是用c/c ++编写的
我的谦虚谢谢
编辑:感谢您的快速回复,我想也许这是一个不好的主意,因为我认为我歪曲了我想做的事情.
当我说"沿着魔兽世界II等"时,我的意思更像是那种使用精灵的rts风格.我不打算实现几乎那么复杂的游戏,更像是一个基本的原型.
我的目标是更像一个平面纹理的地图,有一些基本的障碍,如树木,一个单位生产结构,如营房.我想让这些单位拥有健康棒,能够移动,攻击和死亡(并可能变身为另一个单位).
远程目标是使用dijkstra最短路径算法的修改版本,具有导弹攻击的远程单位等来实现一些基本路径.
我不打算实施任何反对者或ai或网络或类似的东西.
我是第一年的计算机科学专业的学生.我们目前正在用java编程,我经常尝试将我的程序分解为命名良好的方法,以便我的主方法逻辑可以尽可能接近伪代码.
我发现的问题是,我经常写这么多小的私有方法,我觉得我可能会过度使用它.在决定是否进一步分解问题时,是否有任何好的经验法则或风格考虑因素需要考虑?
为什么这有效:
int[] array = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但这不是:
int[] array;
array = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
如果我有一个数组实例变量,我想在我的构造函数中初始化它肯定我不必去
array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
Run Code Online (Sandbox Code Playgroud)
我觉得我在这里错过了一些东西?
我刚刚完成Java的第一年,我一直在研究JDK源代码作为练习.
我遇到过一些我以前从未遇到的事情,在同一个语句中对同一个变量有两个赋值.
例如
variable = expression = expression ;
到底发生了什么?这是一个相当普遍的事情吗?双重任务的目的是什么?
非常感谢 - 迈克
所以我的 Java 扫雷游戏用 int[][] 表示,其中 -1 表示地雷。当我初始化我的游戏时,我需要随机放置 x 数量的地雷。
这样做的优雅方式是什么?我正在考虑使用带有每个单元格坐标的 ArrayList,随机选择它,更改 int[][] 的状态,然后删除该点。这将确保没有点被选择两次。
有没有更优雅的方法来做到这一点?