1. 程式人生 > >JAVA面向對象解決實際問題實例(一)

JAVA面向對象解決實際問題實例(一)

同步 class 打印 def 使用 運動 同時 三種 AI

某次戰役中,為便於信息交互,我軍偵察部門將此次戰役的關鍵高地坐標設定為(x=0y=0)並規定,每向東增加100米,x1,每向北增加100米,y1。同時,我軍情報部門也破譯了敵軍向坦克發送的指揮信號,其中有三種信號(L,R,M)用於控制坦克的運動,L R 分別表示使令坦克向左、向右轉向,M 表示令坦克直線開進100米,其它信號如T用於時間同步,P用於位置較準。

一日,我軍偵察兵發現了敵軍的一輛坦克,偵察兵立即將坦克所在坐標(P, Q)及坦克前進方向(W:西,E:東,N:北,S:南)發送給指揮部,同時啟動信號接收器,將坦克接收到的信號實時同步發往指揮部,指揮部根據這些信息得以實時掌控了該坦克的位置,並使用榴彈炮精準地擊毀了該坦克。

假設,偵察兵發送給指揮部的信息如下:

坦克坐標:(1139

坦克運行方向:W

坦克接收到的信號為:MTMPRPMTMLMRPRMTPLMMTLMRRMP

請通過編程計算出坦克所在的位置(編程語言不限)

Java的實現代碼如下:

 1 package bst;
 2 
 3 public class Bst {
 4     //坦克初始坐標
 5     ZB zb = new ZB(11,39);
 6     //坦克初始運行方向
 7     String direction = "W";
 8     
 9     //根據接收到的信號編程計算出坦克最終的坐標
10     public
ZB getZB(String news){ 11 12 String[] str = news.split(""); 13 14 for(int i = 0;i<str.length;i++){ 15 if("L".equals(str[i])){ 16 switch (direction) { 17 case "W":direction="S";break; 18 case "E":direction="N";break
; 19 case "N":direction="W";break; 20 case "S":direction="E";break; 21 default:break; 22 } 23 }else if("R".equals(str[i])){ 24 switch (direction) { 25 case "W":direction="N";break; 26 case "E":direction="S";break; 27 case "N":direction="E";break; 28 case "S":direction="W";break; 29 default:break; 30 } 31 }else if("M".equals(str[i])){ 32 switch (direction) { 33 case "W":zb.setX(zb.getX()-1);break; 34 case "E":zb.setX(zb.getX()+1);break; 35 case "N":zb.setY(zb.getY()+1);break; 36 case "S":zb.setY(zb.getY()-1);break; 37 default:break; 38 } 39 } 40 } 41 42 return zb; 43 44 } 45 46 //打印出坦克的最終坐標 47 public static void main(String[] args) { 48 Bst bst = new Bst(); 49 ZB zb = bst.getZB("MTMPRPMTMLMRPRMTPLMMTLMRRMP"); 50 System.out.println("坦克所在的位置為:"+zb.toString()); 51 } 52 53 } 54 55 //坦克坐標類 56 class ZB{ 57 int x; 58 int y; 59 60 public ZB(int x, int y) { 61 super(); 62 this.x = x; 63 this.y = y; 64 } 65 66 public int getX() { 67 return x; 68 } 69 70 public void setX(int x) { 71 this.x = x; 72 } 73 74 public int getY() { 75 return y; 76 } 77 78 public void setY(int y) { 79 this.y = y; 80 } 81 82 //重寫toString方法 83 public String toString(){ 84 return "("+x+","+y+")"; 85 } 86 }

JAVA面向對象解決實際問題實例(一)