所以我正在制作一个小游戏,我正在检查角色是否可以"看到"另一个角色A可以看到角色B,如果A在B的某个距离内,并且A的角度方向是+/- 45度角度B面对.
目前,我正在做一些计算,我正在检查是否
(facingAngle - 45) =< angleOfTarget =< (facingAngle + 45)
Run Code Online (Sandbox Code Playgroud)
除了当我们穿过360度线时,这种方法很好.
让我们说吧facingAngle = 359, angleOfTarget = 5.在这种情况下,目标只偏离中心6度,所以我希望我的函数返回true.不幸的是,5不在314和404之间.
我目前在学校的最后一年,攻读计算机研究高等国家文凭,基本上在最后一个学期,我们需要开发一个软件项目,基本上包含一个完整的系统.
现在,我正在考虑做的事情就像Robocode一样,但是我将使用.Net Framework来代替Java.
对于那些你不知道的Robocode是什么,它基本上是一种编程游戏在人们开发利用的类接口和存在的下载类的方法自己的机器人,然后他们打在对方的自主战斗竞技场......像这样:
alt text http://articles.techrepublic.com.com/i/tr/cms/contentPics/robocode.gif
所以基本上,正如我所说,我想使用.Net Framework重新创建这种场景.我在StackOverflow上发布这个问题,希望更有经验的开发人员能够指导我为这个项目正确的方向.
到目前为止我的想法基本上是创造:
现在,当战斗发生时,当然会有某种动画和动作,我还没有决定还有什么用作媒介.
我目前想到的选项是:
你认为什么可能更适合这种特殊情况?
对于玩家开发机器人,我将提供他们能够像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)