设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Java 程序设计开发讨论
›
Java机器人!体验全球流行的属于自己的Java游戏 ...
1
2
/ 2 页
下一页
返回列表
查看:
2039
|
回复:
10
Java机器人!体验全球流行的属于自己的Java游戏
[复制链接]
starshus
starshus
当前离线
积分
140
IP卡
狗仔卡
发表于 2005-5-13 17:50:05
|
显示全部楼层
|
阅读模式
主页
:
http://robocode.sourceforge.net/
如果您一直在关注 developerWorks 和 alphaWorks 的话,您会看到一个名为 Robocode 的小东西的巨大能量:Robocode 是一个比较上瘾的游戏,刚好可以用于 Java 编程教学。Mat Nelson 在过去 18 月内已经付出了一段宝贵的时间来开发 Robocode。起初是为了自己娱乐,后来就成了一份认真的工作,把他心爱的这个项目放到了 IBM alphaWorks 上。现在已经到了他收获的时候。Robocode 的成功用“爆炸性”来描述一点也不过分 — 而这才只是个开头。
Robocode 是一个很容易使用的机器人战斗仿真器,可以在所有支持 Java 2 的平台上运行。您创建一个机器人,把它放到战场上,然后让它同其他开发者们创建的机器人对手拼死战斗到底。Robocode 里有一些预先做好的机器人对手让你入门,但一旦您不再需要它们,就可以把您自己创建的机器人加入到正在世界范围内形成的某个联盟里去和世界最强手对阵。
每个 Robocode 参加者都要利用 Java 语言元素创建他或她的机器人,这样就使从初学者到高级黑客的广大开发者都可以参与这一娱乐活动。初级的 Java 的开发者们可以学习一些基础知识:调用 API 代码、阅读 Javadoc、继承、内部类、事件处理等等。高级开发者们可以在构建“最优品种”的软件机器人全球竞赛中提高他们的编程技巧。在本文中,我们将介绍 Robocode,并指导您从构建您平生第一个 Robocode 机器人开始征服世界。我们还将看一下迷人的“后台”机制,正是它使得 Robocode 起作用。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
starshus
starshus
当前离线
积分
140
IP卡
狗仔卡
楼主
|
发表于 2005-5-13 17:51:19
|
显示全部楼层
Robocode 的未来
通过 alphaWorks Robocode 站点上的一个讨论组(请参阅参考资料),Mathew Nelson 可以同 Robocode 用户社区保持紧密的反馈联系。许多反馈都并入了真实的代码中。Mathew 已计划即将要进行的一些改进有:
通过不同的物体和障碍来定制战场地图
基于团队的战斗
对联赛或联盟的集成支持
用户可选择坦克车体/炮/雷达/武器的样式
挡不住的 Robocode 风潮
对于一个从 2001 年 7 月 12 日出现在公众面前的项目,Robocode 的出名简直让人吃惊。尽管最新的可用版本还不到 1.0(在写这篇文章时是版本 0.98.2),但它已经是全世界的大学校园以及公司的 PC 机上颇受欢迎的娱乐活动了。Robocode 联盟(或 roboleagues)正如雨后春笋般出现,在这些联盟里,人们通过因特网让自己定制的作品相互较量。大学教授们一直在挖掘 Robocode 的教育特性,并且已经把它纳入了大学里的计算机科学课程。在因特网上,Robocode 用户组、讨论列表、FAQ、教程和 Webring 随处可见。
显然,Robocode 已经填补了大众化的寓教于乐领域的空白 — 它为学生们和熬夜的工程师们提供简便、有趣、非胁迫却富竞争力的方式,释放他们的创造力,而且有可能实现他们征服世界的梦想。
回复
支持
反对
使用道具
举报
显身卡
starshus
starshus
当前离线
积分
140
IP卡
狗仔卡
楼主
|
发表于 2005-5-13 17:56:40
|
显示全部楼层
给大家看一张截图,学习娱乐两不误的经典范例.
编写自己的机器人,让它征服世界!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
注册
x
回复
支持
反对
使用道具
举报
显身卡
zlbruce
zlbruce
当前离线
积分
1660
IP卡
狗仔卡
发表于 2005-5-15 02:06:35
|
显示全部楼层
不错,自己编机器人来打仗,正在看他的javadoc。
回复
支持
反对
使用道具
举报
显身卡
starshus
starshus
当前离线
积分
140
IP卡
狗仔卡
楼主
|
发表于 2005-5-15 10:37:14
|
显示全部楼层
我的机器人已经能够精确定目标的坐标了
我的机器人的源代码:
package rw;
import robocode.*;
//import java.awt.Color;
/**
* RWTrack - a robot by (your name here)
*/
public class RWTrack extends Robot
{
/**
* run: RWTrack's default behavior
*/
public void run() {
// After trying out your robot, try uncommenting the import at the top,
// and the next line:
//setColors(Color.red,Color.blue,Color.green);
while(true) {
// Replace the next 4 lines with any behavior you would like
ahead(100);
turnRight(90);
ahead(100);
turnRadarRight(360);
//turnRadarRight(360);
//turnRight(100);
//turnRadarRight(360);
}
}
/**
* onScannedRobot: What to do when you see another robot
*/
public void onScannedRobot(ScannedRobotEvent e)
{
System.out.println("heading "+getHeading());
System.out.println("getBearing "+e.getBearing());
turnGunRight(e.getBearing());
fire(1);
ahead(50);
turnRight(60);
turnGunRight( 360 - e.getBearing());
double heading = e.getBearing() + getHeading();
double distance = e.getDistance();
double ager_bearing = Math.toRadians(heading % 360);
double genyX = getX() + Math.sin(ager_bearing) * distance;
double genyY = getY() + Math.cos(ager_bearing) * distance;
int LEFT = -1;
int RIGHT = 1;
out.println("genyX:" + Math.round(genyX));
out.println("genyY:" + Math.round(genyY));
if (heading >= 360)
heading = heading - 360;
if (heading < 0)
heading = heading + 360;
double bearing = getRadarHeading() - heading;
double radar_direction;
if (0 <= bearing && bearing <= 180)
{
radar_direction = LEFT;
}
else if (bearing <= -180)
{
radar_direction = LEFT;
bearing = (360 + bearing);
}
else if (bearing < 0)
{
radar_direction = RIGHT;
bearing = (-bearing);
}
else
{
radar_direction = RIGHT;
bearing = (360 - bearing);
}
double radar_degree = bearing * 1.3;
if (radar_direction == RIGHT)
{
turnRadarRight (radar_degree);
//execute();
}
else
{
turnRadarLeft(radar_degree);
//execute();
}
}
/**
* onHitByBullet: What to do when you're hit by a bullet
*/
//public void onHitByBullet(HitByBulletEvent e) {
//turnLeft(90 - e.getBearing());
//}
}
复制代码
回复
支持
反对
使用道具
举报
显身卡
sleetdrop
sleetdrop
当前离线
积分
864
IP卡
狗仔卡
发表于 2005-5-15 11:37:53
|
显示全部楼层
以前程序员上有一期做过比较详细的介绍的。
回复
支持
反对
使用道具
举报
显身卡
rubble_stone
rubble_stone
当前离线
积分
74
IP卡
狗仔卡
发表于 2005-8-15 18:47:06
|
显示全部楼层
偶也想学
回复
支持
反对
使用道具
举报
显身卡
homehorse
homehorse
当前离线
积分
230
IP卡
狗仔卡
发表于 2005-8-16 10:14:46
|
显示全部楼层
以前还真不知道,谢谢 现在就去。
回复
支持
反对
使用道具
举报
显身卡
addone
addone
当前离线
积分
1305
IP卡
狗仔卡
发表于 2005-9-17 01:17:49
|
显示全部楼层
看起来不错,目前最新版本是1.0.7
顶一下
回复
支持
反对
使用道具
举报
显身卡
graydream
graydream
当前离线
积分
1293
IP卡
狗仔卡
发表于 2005-9-19 12:25:22
|
显示全部楼层
只能用java么,太郁闷了
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
/ 2 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表