足球机器人技术

*****题目: 在机器人足球比赛中,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为例

如果 主函数中 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是"+DirChng);
}对每种物体都进行处理

后,即可粗暴地读取数据并展示

import java.awt.Robot;
import java.io.ObjectInputStream.GetField;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.swing.text.StyledEditorKit.ForegroundAction;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import javax.xml.stream.StreamFilter;
import
javax.xml.transform.sax.SAXTransformerFactory;public class robot {double Distance, Direction, DistChng, DirChng,BodyDir, HeadDir;public void see(String[]strafter,int i ){String time = strafter[i+1];System.out.print("在"+time+"周期"+" see ");}public void ball(String []strafter,int i){i=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];DirChng =data[3];System.out.println(  " Ball 距离我的 Distance 是 "+Distance+" Direction是"+Direction+" DistChng是"+DirChng+"  DirChng是"+DirChng);}public void Player(String []strafter,int i ){String []playerName =new String[2];int x;x=i+4;double []data = new double[6];for(int y=0;y<6;x++,y++){data[y]=Double.parseDouble(strafter[x]);} Distance=data[0];Direction=data[1];DistChng = data[2];DirChng =data[3];BodyDir = data[4];HeadDir =data[5];System.out.println( strafter[i+1]+" "+strafter[i+2]+"  距离我的 Distance 是 "+Distance+"  Direction是"+Direction+"  DistChng是"+ DistChng+"  DirChng是"+DirChng);   }public void goal(String []strafter,int i){int x=i+3;double []data = new double[2];for(int y=0;y<2;x++,y++){data[y]=Double.parseDouble(strafter[x]);} Distance=data[0];Direction=data[1];System.out.print( "goal "+strafter[i+1]+ "  距离我的 Distance 是 "+Distance+"  Direction是"+Direction);}public void hear(String[]strafter){int i=0;int x;for(;i<strafter.length;i++){if(strafter[i].equals("hear"))break;}x=i+1;String time = strafter[x];System.out.print("在"+time+"周期"+"  hear ");}public void sender(String[]strafter,int x){int i=0;for(;i<strafter.length;i++){if(strafter[i].equals("passto"))break;}System.out.print("从"+strafter[x+2]+"方向听到了"+"passto("+strafter[i+1]+","+strafter[i+2]+")"); }
public static void main(String[] args) {    robot Robot = new  robot();Scanner in = new Scanner(System.in);       String str=in.nextLine();      String strafter2=str.replaceAll("\\(|\\)", "\\,"); String[] strafter=strafter2.split("\\s+|\\,"); for(int y=0;y<strafter.length;y++)
{if(strafter[y].equals("hear")){Robot.hear(strafter);
Robot.sender(strafter,y);
System.out.println("");
}
else if(strafter[y].equals("see")){Robot.see(strafter,y);}
else if(strafter[y].equals("ball")){Robot.ball(strafter,y);}
else if(strafter[y].equals("player")){Robot.Player(strafter,y);}
else if(strafter[y].equals("goal")){Robot.goal(strafter,y);}}  }                    }}  

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

  1. 机器人足球仿真第一次作业

    机器人足球仿真第一次作业 机器人足球仿真是一门与RoboCup有关的一门课程,讲到了有关球员的决策,球队的开发等知识. 这是老师布置的第一次作业,基本任务就是解析字符串,其功能相当于uva中Prase ...

  2. 请利用SAX编写程序解析Yahoo的XML格式的天气预报,获取天气预报——python学习笔记

    1. 题目: 请利用SAX编写程序解析Yahoo的XML格式的天气预报,获取天气预报: 题目是廖雪峰老师的python教程中XML的练习. 本篇博文只是针对这一题目,没有做详细的介绍,如果看不懂可以在 ...

  3. HFUT《机器人技术》第一次作业

    C#语言!! 输入数据的不规范 题目: 在机器人足球比赛中,server 和球员 client 之间通过发送字符串来进行信息交互,其 中 server 要把某球员的听觉和视觉信息发送给该球员,信息的格 ...

  4. 合工大 机器人技术 作业

    共四次作业报告,CSDN下载:下载链接 作业内容: <机器人技术>第一次作业 题目: 在机器人足球比赛中,server和球员client之间通过发送字符串来进行信息交互,其中server要 ...

  5. OO2019第一次作业总结

    1. 为什么我们需要OOP 这个问题应该是始终贯穿整个OO课程的核心问题之一,在上完每一堂课,写完每一次作业或是写下每一个类和对象之后我们都应该考虑一下这个问题,OOP带给了我们什么好处?其实在每学习 ...

  6. 编写程序python输入任意大的自然数、输出各位数字之和_兰理工Python第一次上机作业源码...

    1.编写程序,输入任意大的自然数,输出各位数字之和. a=input() sum=0 for i in a: sum=sum+int(i) print(sum) 运行结果: 2.编写程序,输入两个集合 ...

  7. c语言第一次作业程序题pta,c语言第一次作业程序题pta

    c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...

  8. python输入正方形边长值、计算其面积_尝试修改列6.2编写命令行参数解析的程序,解析命令行参数所输入边长的值,计算并输出正方形的周长和面积。_学小易找答案...

    [简答题] [单选题]ZigBee 中每个协调点最多可连接______个节点,一个ZigBee网络最多可容纳______个节点.( ) [资料题]DWord-Ans.pdf 索引和目录.pdf 完成效 ...

  9. 13、数码相框编写程序之支持中文和课后作业

    文章目录 1.支持中文 2.课后作业 上一节:12.数码相框编写程序之效果演示与代码讲解 1.支持中文 这一节我们来改进数码相框的功能:支持中文代码见:第 1 个项目数码相框全部源码_图片_文档\源码 ...

  10. 库卡机器人CELL程序解析

    KUKA机器人  CELL程序 解析及注释 &ACCESS RVP &REL 4 &COMMENT HANDLER on external automatic DEF  CEL ...

最新文章

  1. Django框架restful序列化组件get/post请求接口设计
  2. 石家庄地铁查询PSP0级
  3. Java中的适配器设计模式
  4. react 执行入口_如何使用React执行CRUD操作
  5. 复制assert目录文件到私有目录_在电脑上复制目录的方法
  6. KeyMob--最智能的移动广告聚合平台
  7. python cross val score_python - sklearn cross_val_score的精度低于手动交叉验证 - 堆栈内存溢出...
  8. 疯狂的程序员--绝影
  9. 直接播放H264视频流的方法或工具
  10. 联想主板9针开关接线图_家庭配电箱总漏电保护,空气开关用63A还是40A好?看完彻底懂了...
  11. Linux+bridge做透明网桥
  12. 启明创投邝子平谈禾赛上市:做硬科技领域长线投资人
  13. setenv setfenv
  14. 毕得医药递交科创板注册:年营收6亿 拟募资4.34亿
  15. 各大平台免费接口,非常适用
  16. 第十天文件包含漏洞 php伪协议
  17. 2021年私域流量的力量会更强劲!
  18. 【附源码】Java计算机毕业设计安卓移动LYQ电子商城APP(程序+LW+部署)
  19. 盈利之外,世纪佳缘哪些变化值得关注?
  20. JavaEE——Spring AOP(面向切面编程)

热门文章

  1. 【WLAN】WLAN室内无线信道模型分析及matlab仿真
  2. redis 入门指南第二版 学习记录3 列表类型
  3. 区块链“搅局”中介风云
  4. 【教程】小米盒子4 刷机,无广告,总是无限重启,刷入2%报错的解决方法
  5. 一个简单的python爬虫,以豆瓣妹子“http://www.dbmeizi.com/category/2?p= ”为例
  6. win10升级工具_win10升级安装工具
  7. imx6ul pinctrl 驱动浅析
  8. 带你了解锂电池保护板的工作原理
  9. 注册表的保存位置在哪里?注册表文件保存在哪里?
  10. 软媒魔方 v6.2.1.0 绿色纯净版及经典版