文件選項
將此頁作為電子郵件傳送
級別: 初級
jae marsh
, 開發人員, infostructure systems
2002 年 5 月 10 日
您能夠擊中對手的次數必須要超過對手能擊中您的次數才能成為獲勝的 robocode 機械人。雖然您的機械人能瞄準對手需要高超的技藝,但是如果您的對手瞄準不到您呢?dodgebot 將向您展示如何利用如下所列的簡單技巧和一些猜測來躲避子彈。
在我向您展示這一技巧之前,您必須了解 robocode 的一些基礎知識。首先,它攻擊和防守使用的是乙個能量倉。這就帶來了有趣的博弈決定:您必須決定何時使用能量向對手開炮,何時儲存能量以應付可能的損失。
其次,機械人對於周圍環境的了解非常有限。它可以知道其它機械人的距離、方位、方向、速度和能量等級。但是,它看不到子彈,不過也許根據這些線索,您可以猜想如何發現其它機械人正向它開炮。
dodgebot 靜止不動,不斷的跟蹤對手的前一能量等級。當它的能量下降一定的量時,dodgebot 就認為它開炮了,並移向左邊或右邊。令人吃驚的是,這將會迷惑大多數機械人的瞄準方法。它們要麼直接向目標開炮,要麼試著根據您的速度和方向來推算位置。如果您的機械人不移動,兩種演算法都會正好衝著這個機械人開炮。而您的機械人猜到了這一點,向旁邊躍出一小步,但子彈仍是沿原來的方向。圖 1 展示了實際的 dodgebot。
圖 1. dodgebot 對 tracker(上當了!)
清單 1
展示了 dodgebot 的**。每當雷達覺察到敵人時執行主**部分。dodgebot 保持自己的直角狀態,另外還有 30 度傾向對手。以 90 度角靜止使機械人避開子彈的能力達到最大。附加的 30 度傾斜使機械人具有一定的攻擊力,並逐漸接近目標。接著是**的關鍵部分:如果機械人覺察到能量下降介於 0.1 和 3.0 之間(火力範圍),那麼機械人就立即切換方向,向左或向右移動。很簡單。它會切換炮和雷達掃瞄的方向,假定如果它在最後一次掃瞄中看到了乙個機械人,那麼當它再次掃過同一區域時還會再發現它。這時機械人就會開炮。因為我把炮和雷達聯絡在一起,而掃瞄器是在它面朝對手的那一刻被呼叫的,所以炮會正對著對手開炮。最後,我會為下一回合記下對手的能量。
清單 1. dodgebot 的**
import robocode.*;
public class dodgebot extends advancedrobot
double previousenergy = 100;
int movementdirection = 1;
int gundirection = 1;
public void run()
public void onscannedrobot(
scannedrobotevent e)
// when a bot is spotted,
// sweep the gun and radar
gundirection = -gundirection;
setturngunright(99999*gundirection);
// fire directly at target
f i r e ( 2 ) ;
// track the energy level
previousenergy = e.getenergy();
}}
我在叫做 wolverine 的機械人上使用了這一技巧,它另外使用了一些感應器資訊以使感覺更準確。當對手擊中我的機械人時,對手得重新充能量。當我的機械人擊中對手時,能量等級就會下降。機械人可能同時感受到這兩件事情,所以 wolverine 利用這一資訊來抵消對等的能量波動。
這個技巧還存在問題。子彈一發射,機械人就移動,所以它最終可能會移回炮彈軌跡之內。最好是在估計子彈要到達時再移動。
更嚴重的問題是,即使您能夠迷惑平常的瞄準,但實際上向旁邊一步一步的移動很容易**。使用這一技巧的最佳方式可能是讓資訊指導您的移動,而不是讓它控制。
您也許會想,這個技巧這麼簡單,您自己原本也是想得到的。不錯。這個遊戲就是這樣玩的,這也正是它為什麼如此吸引人的緣故。robocode 就象棋類遊戲,每新走一步都會是乙個新的想法。
回頁首參考資料
躲避 HSTS 的 HTTPS 劫持
hsts 的出現,對 https 劫持帶來莫大的挑戰。不過,hsts 也不是萬能的,它只能解決 sslstrip 這類劫持方式。但仔細想想,sslstrip 這種算劫持嗎?從本質上講,sslstrip 這類工具的技術含量是很低的。它既沒破解什麼演算法,也沒找到協議漏洞,只是修改和 了明文的封包而已。...
高手的高手,還有高手,flash未來的動態
最近和幾個熱心的談論了一些關於flash的未來,和一些高手談論總是感覺有點不容易說話,反而覺得距離差別太大。興趣大減,有時候總是希望可以分享一下自己的思想和興趣,反而覺得現實化了。興趣不相投,寫部落格僅僅是鼓勵自己的一種方式,把自己的筆記記錄在這裡是乙個時期的思想。說到忽悠別人,反而沒有這些想法。最...
成功的秘訣
在馬路上騎自行車,你完全可以騎出一條直線,可如果是在一根鐵軌上呢?恐怕騎不了幾步就會跌下來,為什麼?選擇麵不一樣!當面臨許多選擇時,生活中的我們總覺得自己能做許多事情 當我們只有一條路可走時,又表現出不知所措。一位從國外留學回來的朋友一天打 說 東子,能不能幫我介紹乙份工作,月薪5000元就ok了。...