第一部分:安装与简介 <ul><li>Robocode 是一个教你 java 编程 的 游戏 ,你可以充分发挥你的创造力,用 java 编写你自己的 tank killer ,你的最终目标是摧毁其他的 tank.  </li></ul><ul>...
1.Robocode 初体验 <ul><li>1.  比赛官方网站下载 :  http://www.robocodechina.com/ </li></ul><ul><li>2. 蓝杰网下载中文平台及资料 :  http:// robocode...
2.Robocode 是什么? <ul><li>Robocode 是一个游戏开发平台? Java 学习工具?教学软件 ? </li></ul><ul><li>有可能在闪躲炮弹和执行精确攻击的演练中学会 调用  API  代码、阅读  Javad...
3.IBM Robocode 平台玩法说明 <ul><li>1. 主窗体组成: 战场:机器人战斗区域 </li></ul><ul><li>Robot Info: 查看己投入机器人信息及调试信息 </li></ul><ul><li>Main Co...
4. 十分钟 , 编写你的机器人 !  <ul><li>现在 , 该我们动手打造自己的机器人了 </li></ul><ul><li>1. 在 Eclipse( www.Eclipse.org ) 中创建新项目 </li></ul><ul><li...
第二部分:开发自己的机器人 <ul><li>一个机器人 , 就是一个 java 对象 , 实际上,每个机器人都是一个独立的  Java  线程,同时  run()  方法内包含了每个线程上将要执行的逻辑。  </li></ul>
1. 平台的方向及坐标系统 <ul><li>坐标系: Robocode 整个坐标系都是战场屏幕以左下角为原点 </li></ul><ul><li>绝对方向系: Robocode 中不管机器人在哪个方向都是以静态战场屏幕为参照的绝对角度(也即大家...
2. 机器人基类 Robot 介绍 <ul><li>1. 通常的情况下,我们的每个机器人都是继承自 robocode.Robot 类的一个对象;事实人,每个机器人会做为一个独立线程被游戏平台来运行。这意味着,我们自己的机器人所执行的动作的起点就...
3.Robot 详解 : 之动作命令 <ul><li>ahead(double distance)  和  back(double distance)  使机器人移动指定的像素点距离;这两个方法在机器人碰到墙或另外一个机器人时即告完成。 </l...
4.Robot 详解 : 获取机器人信息 <ul><li>getX()  和  getY()  可以捕捉到机器人当前的坐标。  </li></ul><ul><li>getHeading()  、  getGunHeading()  和  get...
5.Robot 详解 :Robocode 平台的事件   <ul><li>void  onScannedRobot (ScannedRobotEvent event)             你的雷达扫描到另个一个机器人时 , 这个方法被调用 ...
6.Robot 详解 :java 平台的事件支持 <ul><li>如果你要开发一个由鼠标或键盘控制的机器人,实现以下事件就是必不可少了! </li></ul><ul><li>void  onKeyPressed (KeyEvent e)  键盘...
7.Robot 详解 : 射击命令! <ul><li>必要的情况下,如在 void  onScannedRobot (ScannedRobotEvent event)  方法内部,一般就是开火了; </li></ul><ul><li>很简单,调...
8. 开发自己的机器人! <ul><li>1. 在 Eclipse 中新建项目 </li></ul><ul><li>2. 将 Robocode.jar  加入到项目类库 </li></ul><ul><li>3. 编写一个继承 robocode....
9. 代码示例: <ul><li>清单  2. MyRobot  机器人代码的增加部分 </li></ul><ul><li>public void run() { </li></ul><ul><li>// 为了使机器人处于已知状态,我们通过  ...
10. 将它投入战场! <ul><li>1. 在 robocode 平台上配置机器人类库 </li></ul><ul><li>2. 与 Eclipse 联调机器人 </li></ul><ul><li>3. 更多功能示例: </li></ul><...
11. 提高部分 <ul><li>挑战你永无止境的智慧!还需要 : </li></ul><ul><li>预测目标(不是直接向机器人开火,而是向机器人即将到达的地方开火)、跟踪和记录敌人的行为、多线程控制机器人的不同方面、即时( just-in-...
Upcoming SlideShare
Loading in …5
×

六合彩

1,584
-1

Published on

朱亚伟肩扛六合彩自行车,深一脚浅一脚地走完了五百余米的溜滑泥泞的六合彩道路,终于来到了学校大门口的水泥路上,放下了自行车。汗水和雨六合彩水早已湿透了全身。怜惜之情又在梅珍心头涌六合彩起……
其实,梅珍对儒雅英俊的朱亚伟早就产生六合彩了好感。今天的“英雄救美”更使她心生感佩,从此,便有六合彩意无意地接近他,有什么好的资料首先借给朱亚伟;六合彩家里带来好吃的也送给朱亚伟,总之,朱亚伟已经在不知不觉六合彩中占据了她的心。
朱亚伟自那次“英雄救美”后,也由对梅六合彩珍的怜惜而生爱慕之心。不过他对梅珍的爱慕之情表六合彩现得极为含蓄。他们都知道,现在彼此间还不具备爱的种子六合彩所赖以生存的阳光、沃土以及空气。现在的主要任务及目六合彩标就是考大学,除此之外别无其他选择。梅珍虽然六合彩家庭条件比朱亚伟好些,毕竟已参加过一次高考,如果再考不六合彩上大学,别说无法向自己交代,更无法向父母、姐姐交代六合彩,她没有退路了,必须一拼。朱亚伟家庭贫困,从小到大,没穿过一件象样的衣服,学六合彩费基本上都是靠自己干苦力挣来的。许是苦力干多了、干伤心了六合彩,便立志:无论如何要改变自己的命运。立志要如山六合彩,不如山,不能坚定。既然立下了坚定的志向,就得六合彩只争朝夕,埋头苦学,不受外务的干扰和诱惑。朱亚伟不六合彩得不把这种爱恋之情藏匿于心。

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,584
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

六合彩

  1. 1. 第一部分:安装与简介 <ul><li>Robocode 是一个教你 java 编程 的 游戏 ,你可以充分发挥你的创造力,用 java 编写你自己的 tank killer ,你的最终目标是摧毁其他的 tank. </li></ul><ul><li>Robocode 是一种 有趣 的竞赛性编程,而“有趣”在这里绝对是关键词。使用几行简单的代码,您就可以看着您的机器人在屏幕上四处疾驰,碾碎一切挡道的东西。在做这件事时, 您将学习到一种解决目前真实问题的真实的语言。 </li></ul>Robocode 创始人 : Mat Nelson
  2. 2. 1.Robocode 初体验 <ul><li>1. 比赛官方网站下载 : http://www.robocodechina.com/ </li></ul><ul><li>2. 蓝杰网下载中文平台及资料 : http:// robocode.NetJava.cn </li></ul><ul><li>3. 安装及启动:要求 jdk1.5 及其以上版本 , 双击 RoboCode.jar </li></ul><ul><li>4. 安装目录结构 </li></ul><ul><li>robots : 编译过后的机器人及源代码 </li></ul><ul><li>robocode_src: IBM Robocode 平台源码 </li></ul><ul><li>robocode_doc: 机器人开发 java 文档 </li></ul><ul><li>5. 进入战斗 ! </li></ul>
  3. 3. 2.Robocode 是什么? <ul><li>Robocode 是一个游戏开发平台? Java 学习工具?教学软件 ? </li></ul><ul><li>有可能在闪躲炮弹和执行精确攻击的演练中学会 调用 API 代码、阅读 Javadoc 、继承、内部类、事件处理等等。高级开发者们可以在构建“最优品种”的软件机器人全球竞赛中提高他们的编程技巧。 ? </li></ul><ul><li>Robocode 这个游戏为全世界的 Java 开发者实现这个愿望,它寓教于乐 , 把游戏风潮变成了学习工具,现在我们就开始着手建造属于自己的、定制的、小而精悍的战斗机器。 </li></ul><ul><li>Robocode 的创建者 Mathew Nelson ,向世人宣布了他教创建 Robocode 最初的设计目的。 Mat 所说的是:“编写 Robocode 的一部分目的是为了向世界证明:象‘ Java 比较慢’以及‘ Java 不可以用来写游戏’之类的论断不再正确。我认为我证明了这一点。 </li></ul>
  4. 4. 3.IBM Robocode 平台玩法说明 <ul><li>1. 主窗体组成: 战场:机器人战斗区域 </li></ul><ul><li>Robot Info: 查看己投入机器人信息及调试信息 </li></ul><ul><li>Main Control: 对战局中的机器人进行控制,如调整时间 </li></ul><ul><li>2. 主要菜单功能: 添加机器人、系统配置、查看机器人信、比赛规则 </li></ul><ul><li>3. 坦克机器人的结构: </li></ul><ul><li>之所以加上机器人三字,是你可以通过编程(由一个或多个 Java 类构成)的方法,将你的智慧赋于你所创建的小坦克 , 这个小坦克的生死成败是你决定的 --- 其实你就可以让为它是你在战争中的化身! </li></ul><ul><li>机器人坦克车( Vehicle )、炮( Gun )以及雷达( Radar )都可以单独旋转,也 就是说,在任何时刻,机器人坦克车、炮以及雷达都可以转向不同的方向。缺省情况下,这些方向是一致的,都指向坦克车运动的方向。 </li></ul>
  5. 5. 4. 十分钟 , 编写你的机器人 ! <ul><li>现在 , 该我们动手打造自己的机器人了 </li></ul><ul><li>1. 在 Eclipse( www.Eclipse.org ) 中创建新项目 </li></ul><ul><li>2. 将 robocode.jar 加入项目类库 </li></ul><ul><li>3. 编写一个继承自 robocode.Robot 的 java 类 --- 这就是我们的机器人 . </li></ul><ul><li>4. 将 robocode 平台的开发者目录指向 ec 编译后的目录 . </li></ul><ul><li>5. 在 robocode 平台中 , 选择”战争”菜单 , 即可将我们的机器人投入战场 --- 当然 , 这是一个什么也不做 , 只会等着 挨打 的机器人 .  </li></ul>
  6. 6. 第二部分:开发自己的机器人 <ul><li>一个机器人 , 就是一个 java 对象 , 实际上,每个机器人都是一个独立的 Java 线程,同时 run() 方法内包含了每个线程上将要执行的逻辑。 </li></ul>
  7. 7. 1. 平台的方向及坐标系统 <ul><li>坐标系: Robocode 整个坐标系都是战场屏幕以左下角为原点 </li></ul><ul><li>绝对方向系: Robocode 中不管机器人在哪个方向都是以静态战场屏幕为参照的绝对角度(也即大家说的 Heading ) , 正上方为 0 度角。也即不管是 Robot,Gun,Radar 向北为 0 ,向东为 90 ,向南为 180 ,向西为 270 。 </li></ul>
  8. 8. 2. 机器人基类 Robot 介绍 <ul><li>1. 通常的情况下,我们的每个机器人都是继承自 robocode.Robot 类的一个对象;事实人,每个机器人会做为一个独立线程被游戏平台来运行。这意味着,我们自己的机器人所执行的动作的起点就是 run() 方法。 </li></ul><ul><li>2. 查看平台自带的机器人源码示例 </li></ul>java.lang.Runnable.java robocode.Robot.java YourRobotImp.java
  9. 9. 3.Robot 详解 : 之动作命令 <ul><li>ahead(double distance) 和 back(double distance) 使机器人移动指定的像素点距离;这两个方法在机器人碰到墙或另外一个机器人时即告完成。 </li></ul><ul><li>turnRight(double degree) 和 turnLeft(double degree) 使机器人转过一个指定的角度。 </li></ul><ul><li>turnGunRight(double degree) 和 turnGunLeft(double degree) 使炮可以独立于坦克车的方向转动。 </li></ul><ul><li>turnRadarRight(double degree) 和 turnRadarLeft(double degree) 使炮上面的雷达转动,转动的方向也独立于炮的方向(以及坦克车的方向)。这些命令都是在执行完毕后才把控制权交还给程序。此外,转动坦克车的时候,除非通过调用下列方法分别指明炮(和雷达)的方向,否则炮(和雷达)的指向也将移动。 </li></ul><ul><li>setAdjustGunForRobotTurn(boolean flag) :如果 flag 被设置成 true ,那么坦克车转动时,炮保持原来的方向。 </li></ul><ul><li>setAdjustRadarForRobotTurn(boolean flag) :如果 flag 被设置成 true ,那么坦克车(和炮)转动时,雷达会保持原来的方向。 </li></ul><ul><li>setAdjustRadarForGunTurn(boolean flag) :如果 flag 被设置成 true ,那么炮转动时,雷达会保持原来的方向。而且,它执行的动作如同调用了 setAdjustRadarForRobotTurn(true) </li></ul><ul><li>scan () 调用雷达扫描其它机器人,一但扫到,即调用 onScannedRobot 方法. </li></ul>
  10. 10. 4.Robot 详解 : 获取机器人信息 <ul><li>getX() 和 getY() 可以捕捉到机器人当前的坐标。 </li></ul><ul><li>getHeading() 、 getGunHeading() 和 getRadarHeading() 可以得出坦克车、炮或雷达当前的方向,该方向是以角度表示的。 </li></ul><ul><li>getBattleFieldWidth() 和 getBattleFieldHeight() 可以得到当前这一回合的战场尺寸。 </li></ul><ul><li>  getEnergy () 返回当前机器人的能量值 . </li></ul><ul><li>getHeading () 机器人的正面角度值 . </li></ul><ul><li>getGunHeading () 炮筒的正面角度值 </li></ul><ul><li>getRadarHeading () 雷达的正前方角度值 </li></ul><ul><li>注意 , 机器人在移动时 , 基于如下位置参数标准 : </li></ul><ul><li>heading: 是机器人方向与屏幕正上方的角度差 , 方向在 0 到 360 之间 . </li></ul><ul><li>bearing :是机器人的某个部件如雷达发现的目标与方向的角度差,顺时针为正角度在 -180 到 180 之间 . </li></ul><ul><li>系统坐标使用 X.Y 来表示 . 坐标原点 (0,0) 在屏幕的左下角 . X 的右边为正 . Y 的上面为正 . </li></ul>
  11. 11. 5.Robot 详解 :Robocode 平台的事件 <ul><li>void onScannedRobot (ScannedRobotEvent event)           你的雷达扫描到另个一个机器人时 , 这个方法被调用 . 当然,这个方法最有用了! </li></ul><ul><li>  </li></ul><ul><li>  void onPaint (Graphics2D g) 每次在屏上重绘机器人时 , 这个方法被调用 .( 如果你需要在战场上绘制一些特别的东东,就写到这个方法里 ) </li></ul><ul><li>void onBulletHit ( BulletHitEvent  event) 当你击中另外一个机器人时被用 .  </li></ul><ul><li>void onBulletHitBullet ( BulletHitBulletEvent  event) 当你的炮弹与与其它机器人的炮弹碰到一起时 .  </li></ul><ul><li>void onBulletMissed ( BulletMissedEvent  event) 你的炮弹消失 ( 未击中 ) 时调用 </li></ul><ul><li>void onDeath ( DeathEvent  event) 你完蛋时被调用的方法 .  </li></ul><ul><li>void onHitByBullet ( HitByBulletEvent  event) 中弹时被调用 . </li></ul><ul><li>  void onHitRobot ( HitRobotEvent  event) 撞到另个一个机器人时被调用 .  </li></ul><ul><li>void onHitWall ( HitWallEvent  event) 撞到墙时被调用 . </li></ul><ul><li>void onWin ( WinEvent  event) 如果你赢得本局时 , 这个方法将被调用 . </li></ul>
  12. 12. 6.Robot 详解 :java 平台的事件支持 <ul><li>如果你要开发一个由鼠标或键盘控制的机器人,实现以下事件就是必不可少了! </li></ul><ul><li>void onKeyPressed (KeyEvent e) 键盘按键被按下时调用的事件 .  </li></ul><ul><li>void onKeyReleased (KeyEvent e) 键盘按键释放时调用的事件 .  </li></ul><ul><li>void onKeyTyped (KeyEvent e) 键盘按键事件发生时调用的事件 </li></ul><ul><li>void onMouseClicked (MouseEvent e) 鼠标点击时调用的事件 (pressed and released).  </li></ul><ul><li>void onMouseDragged (MouseEvent e) 鼠标按住拖动时调用的事件 .  </li></ul><ul><li>void onMouseEntered (MouseEvent e) 鼠标进入战区域时调用的事件 . </li></ul><ul><li>void onMouseExited (MouseEvent e) 鼠标离开战区域时调用的事件 .  </li></ul><ul><li>void onMouseMoved (MouseEvent e) 鼠标移动时调用的事件 .  </li></ul><ul><li>void onMousePressed (MouseEvent e) 鼠标按下时调用的事件 .  </li></ul><ul><li>void onMouseReleased (MouseEvent e) 鼠标按键释放时调用的事件 .  </li></ul><ul><li>void onMouseWheelMoved (MouseWheelEvent e) 鼠标滚动时调用的事件 :   </li></ul>
  13. 13. 7.Robot 详解 : 射击命令! <ul><li>必要的情况下,如在 void onScannedRobot (ScannedRobotEvent event) 方法内部,一般就是开火了; </li></ul><ul><li>很简单,调用 fire(double power) 用来发射指定能量(火力)的炮弹就OK了。 </li></ul><ul><li>能量消耗规则 : 每个机器人在开始时都有一个缺省的“能量级别” (100) ,当它的能量级别减 小到零的时候,我们就认为这个机器人已经被消灭了。射击的时候,机器人最多可以用掉三个能量单位 ( 即 fire 方法参数值最大为 3) 。提供给炮弹的能量越多,对目标机器人所造成的损害也就越 大。炮弹威可分为力 1 、 2 、 3 级,造成的伤害为 4 、 6 、 8 。发射时减少自己相应能量,击中后自己的 energy 增加 3*power 。 </li></ul>
  14. 14. 8. 开发自己的机器人! <ul><li>1. 在 Eclipse 中新建项目 </li></ul><ul><li>2. 将 Robocode.jar 加入到项目类库 </li></ul><ul><li>3. 编写一个继承 robocode.Robot 的类 </li></ul><ul><li>4. 在 run() 方法中实现机器人的控制; </li></ul><ul><li>5. 实现相关需要调用的事件处理编码. </li></ul>
  15. 15. 9. 代码示例: <ul><li>清单 2. MyRobot 机器人代码的增加部分 </li></ul><ul><li>public void run() { </li></ul><ul><li>// 为了使机器人处于已知状态,我们通过 turnLeft(getHeading()) 使它转到 0 度的方向。 </li></ul><ul><li>turnLeft(getHeading()); </li></ul><ul><li>/* 在这个重复性的部分,我们使用语句 ahead(1000) 让机器人尽其所能向前移动到最远的地方。当机器人撞到墙或其他机器人时,就会停下来。接着,我们通过 turnRight(90) 使它向右转。在重复执行这一行为时,机器人基本上是在沿着墙按 // 顺时针方向移动。 */ </li></ul><ul><li>while(true) { </li></ul><ul><li>ahead(1000); </li></ul><ul><li>turnRight(90); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>// 重写 ScannedRobot 事件,当发现的机器人时直接射击。 </li></ul><ul><li>public void onScannedRobot(ScannedRobotEvent e) { </li></ul><ul><li>fire(1); </li></ul><ul><li>} </li></ul><ul><li>// 我们还会检测 HitByBullet 事件,被击中的时候转过 180 度(沿顺时针方向或逆时针方向)。 </li></ul><ul><li>public void onHitByBullet(HitByBulletEvent e) { </li></ul><ul><li>turnLeft(180); </li></ul><ul><li>} </li></ul>
  16. 16. 10. 将它投入战场! <ul><li>1. 在 robocode 平台上配置机器人类库 </li></ul><ul><li>2. 与 Eclipse 联调机器人 </li></ul><ul><li>3. 更多功能示例: </li></ul><ul><li>调试机器人 </li></ul><ul><li>走方框的机器人实现 </li></ul><ul><li>在战场上绘制出机器人的坐标 . . . </li></ul>
  17. 17. 11. 提高部分 <ul><li>挑战你永无止境的智慧!还需要 : </li></ul><ul><li>预测目标(不是直接向机器人开火,而是向机器人即将到达的地方开火)、跟踪和记录敌人的行为、多线程控制机器人的不同方面、即时( just-in-time )算法、躲避子弹、僵持、最优化的雷达跟踪 ...... </li></ul><ul><li>1. 更复杂的机器人控制,需要编写 robocode. AdvancedRobot 类实现. </li></ul><ul><li>2. 需要进一步学习相关数据知识乃至人工智能方面的知识 . </li></ul><ul><li>更多资源,请登陆 http://robocode.NetJava.cn </li></ul>

×