足球机器人第一次作业:编写程序解析球员所看到和听到的信息。

足球机器人技术

*****题目: 在机器人足球比赛中,server和球员client之间通过发送字符串来进行信息交互,其中server要把某球员的听觉和视觉信息发送给该球员,信息的格式如下所示:
(hear Time Sender Message)
(see Time ObjInfo ObjInfo …)

要求:编写程序解析球员所看到和听到的信息。
示**例:
(hear 1022 -30 passto(23,24))(see 1022 ((ball) 20 -20 1 -2) ((player hfut1
2) 23 45 0.5 1 22 40 ) ((goal r) 12 20))
输出:*
在1022周期 hear 从 -30 方向 听到了 passto(23,24);
在1022周期 see Ball 距离我的 Distance 是 20, Direction是 -20,DistChng是1,DirChng是-2;player hfut 2距离我的Distance 是 23, Direction是 45,DistChng是0.5,DirChng是1,它的BodyDir是 22和HeadDir是 44;goal r 距离我的Distance 是 12, Direction是 20。

由于技术有限,我才用了粗暴地解决方法,即想办法将所有数据都放入一个数组中,在逐一处理;

首先要处理传来的信息,由于所给的信息(hear Time Sender Message)(see Time ObjInfo ObjInfo …)中包含了括号和空格,所以我们要想办法去掉,我的方法是将括号全部替换成逗号,再将所有的逗号和空格,再用用split函数将根据逗号和括号进行切片

 Scanner in = new Scanner(System.in); 
String str=in.nextLine(); 
String strafter2=str.replaceAll("\\(|\\)", "\\,"); 
String[] strafter=strafter2.split("\\s+|\\,");

每个信息的位置逐一进行处理,以see为例
see

如果 主函数中 strafter[y].equals(“see”) 说明接下来要处理的是see的信息
接下来strafter[y+1]就是周期,做法就是打印周期
在接下来,strafer[y+2]就是各种物体的信息,对于不同的物体,由于Distance , Direction ,DistChng,DirChng是不一样的,所以分别处理,比如,对球来说,它的信息中包含了Distance , Direction ,DistChng,DirChng,所以:

public void ball(String []strafter,int i){
   
i=i+2; //表示 strafer[i+2]
System.out.print(strafter[i]);
double []data = new double[4];
for(int y=0;y<4;i++,y++)
{
   
data[y]=Double.parseDouble(strafter[i]); //将字符串化成浮点数
} 
Distance=data[0]; 
Direction=data[1];
DistChng = data[2];
DirCng =data[3];
System.out.println( " Ball 距离我的 Distance 是 "+Distance+" Direction是"+Direction+" DistChng是"+DirChng+" DirChng是"
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值