麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

對(duì) Robocode 的創(chuàng)始人 Mat Nelson 的一次采訪

2019-11-18 13:08:56
字體:
供稿:網(wǎng)友

  假如您一直在關(guān)注 developerWorks 和 alphaWorks 的話,您會(huì)看到一個(gè)名為 Robocode 的小東西的巨大能量:Robocode 是一個(gè)比較上癮的游戲,剛好可以用于 java 編程教學(xué)。Mat Nelson 在過去 18 月內(nèi)已經(jīng)付出了一段寶貴的時(shí)間來開發(fā) Robocode。起初是為了自己娛樂,后來就成了一份認(rèn)真的工作,把他心愛的這個(gè)項(xiàng)目放到了 IBM alphaWorks 上。現(xiàn)在已經(jīng)到了他收獲的時(shí)候。Robocode 的成功用“爆炸性”來描述一點(diǎn)也不過分 — 而這才只是個(gè)開頭。
  
  早在 1995 年,也就是 Mat Nelson 開始在 IBM 做全職工作之前,他就開始使用 Java 語(yǔ)言了。隨著這種語(yǔ)言的成熟,這個(gè)狂熱的玩家看到了創(chuàng)建這個(gè)“他一直想玩”的游戲的機(jī)會(huì)。2000 年后期 Robocode 剛開始時(shí)只是個(gè)人的努力,2001 年 7 月以 alphaWorks 下載的形式帶入 IBM 后就成了一種職業(yè)工作。在這個(gè)游戲(下載次數(shù)超過了 121,000 次)和它的創(chuàng)始人的名聲漸大之際,我們請(qǐng) developerWorks 的通訊記者 Dana Triplett 對(duì) Mat 進(jìn)行了一次采訪,請(qǐng)他談?wù)勈鞘裁醇ぐl(fā)了他創(chuàng)建 Robocode 的靈感,以及他對(duì) Robocode 未來發(fā)展的看法。
  
  developerWorks:Robocode 背后的中心思想是什么?
  
  Nelson:Robocode 是一種有趣的競(jìng)賽性編程,而“有趣”在這里絕對(duì)是要害詞。使用幾行簡(jiǎn)單的代碼,您就可以看著您的機(jī)器人在屏幕上四處奔馳,碾碎一切擋道的東西。在做這件事時(shí),您將學(xué)習(xí)到一種解決目前真實(shí)問題的真實(shí)的語(yǔ)言。
  
  dW:哪些游戲曾經(jīng)是您最喜歡的,您最喜歡它們的哪些方面?
  
  Nelson:Worms 的 Commodore 64 版(不要與目前同名的游戲混淆)是我看到的第一個(gè)游戲,它讓我“教”一些東西在游戲中如何行動(dòng),然后看它們玩。我還非常喜歡戰(zhàn)略和角色扮演游戲。這幾年來令我上癮的有哪些游戲?Civilization、Master of Orion、Sim City、Command and Conquer 系列、Warcraft/Starcraft 系列、Ultima 系列和 Diablo 系列。當(dāng)然,我還玩過數(shù)百種其它的游戲,但我最喜歡的肯定是那些讓我構(gòu)建一樣?xùn)|西,然后在游戲環(huán)境中放開它,看它如何發(fā)展的游戲。
  
  dW:這些游戲中有哪一個(gè)是您開始創(chuàng)建 Robocode 時(shí)的靈感來源嗎?
  
  Nelson:Worms,肯定是,其它的還有 C64 游戲 Mail Order Monsters。那些經(jīng)典游戲中的其中一些非常棒。那時(shí)還沒有圖形,所以一切東西都必須可玩。那正是我正設(shè)法在 Robocode 中采用的方法:輕易開始,玩起來有趣,并且讓人很上癮。
  
  然而 Robocode 的主要靈感來源于 Brad Schick 創(chuàng)建的一個(gè)名為 Robot Battle 的游戲(這個(gè)游戲本身的靈感來源于 Robot Wars 的 Apple 2 版)。我在 1995 年發(fā)現(xiàn)了 Robot Battle,并花費(fèi)了無數(shù)的時(shí)間創(chuàng)建我自己的機(jī)器人“The Cleaner”。它實(shí)在是太有趣了。我看著其他人創(chuàng)建的機(jī)器人把它淘汰出局,然后設(shè)計(jì)了我自己的戰(zhàn)略。那時(shí)主要的挑戰(zhàn)是一類被稱為 seesaw bot 的機(jī)器人,它們會(huì)往返移動(dòng),很難擊中。 Cleaner 在試圖擊中它們時(shí)碰到了很多麻煩。我的解決辦法?我用了一點(diǎn)三角知識(shí)來估算 seesaw 的角度,然后向那個(gè)角度猛烈開火。我一鼓作氣完成了編寫,然后開心地看著 Cleaner 3 爬上比賽排行榜。
  
  dW:當(dāng)您開始開發(fā) Robocode 時(shí),您心目中的觀眾是誰(shuí)?
  
  Nelson:開始時(shí),只是我自己。Robocode 是我一直想玩的游戲,所以我寫了它。
  
  我希望即使您什么也不知道也可以玩 Robocode,而當(dāng)您了解得更多時(shí)它可以與您一起成長(zhǎng)。學(xué)起來簡(jiǎn)單,但很難精通,就象國(guó)際象棋。我把 API 設(shè)計(jì)得盡可能簡(jiǎn)單,并提供了幾個(gè)樣本機(jī)器人說明如何使用它。我希望任何人,從建筑師到中學(xué)生到動(dòng)物園治理員,都能夠讓一個(gè)簡(jiǎn)單的機(jī)器人運(yùn)行,并說“嗨,我寫了一個(gè) Java 程序!”。另一方面,高級(jí)用戶很快意識(shí)到他們可以使用 Java 編程語(yǔ)言的整套功能,隨心所欲地使用它為自己的機(jī)器人構(gòu)建行為。
  
  dW:現(xiàn)實(shí)生活中玩 Robocode 的人們讓您感到過驚奇嗎?
  
  Nelson:最大的驚奇是成功本身。我很有把握人們會(huì)有愛好玩它,因?yàn)槲?...... 但我沒想到有那么多人!現(xiàn)在的下載次數(shù)超過了 100,000,真讓我大吃一驚。我一直能夠很驚異(興奮)地看到人們用不同的方式使用 Robocode,而社區(qū)也一直讓我感到驚喜。
  
  dW:Robocode 玩家建立了哪些具獨(dú)創(chuàng)性的機(jī)器人示例?
  
  Nelson:有很多種,包括猜測(cè)目標(biāo)(不是直接向機(jī)器人開火,而是向機(jī)器人即將到達(dá)的地方開火)、跟蹤和記錄敵人的行為、多線程控制機(jī)器人的不同方面、即時(shí)(just-in-time)算法、躲避子彈、僵持、最優(yōu)化的雷達(dá)跟蹤 ......,還有很多很多。其中最優(yōu)秀的機(jī)器人簡(jiǎn)直讓人吃驚。我最近引入了一個(gè)全新型的戰(zhàn)略,也就是組,所以我非常期待看到接下來還會(huì)有什么東西出現(xiàn)。
  
  dW:您想為 Robocode 添加些什么功能?
  
  Nelson:我想做的第一件事是把 API 重新構(gòu)建為更簡(jiǎn)單、更面向?qū)ο蟆⒏邤U(kuò)展性和更開放的 API。例如,我更希望看到 radar.setTurn() 而非 setTurnRadarRight()。一旦 Radar 成了一個(gè)對(duì)象,我們就可以擁有不同類型的 Radar:setRadar(new Radar(range,speed))。
  
  作為 API 重設(shè)計(jì)的一部分,我預(yù)備解決兩個(gè)突出的大問題:度數(shù)對(duì)弧度和單位圓數(shù)學(xué)(Unit circle math)。機(jī)器人將有一個(gè)單獨(dú)的調(diào)用,該調(diào)用確定它們是想使用度數(shù),還是使用弧度,而另一個(gè)調(diào)用在單位圓數(shù)學(xué)或羅盤數(shù)學(xué)(Compass math)間切換。單位圓數(shù)學(xué)用于 Java 中的所有三角方法,它的 0 度指向右,逆時(shí)針方向?yàn)檎6_盤數(shù)學(xué)的 0 度指向上,順時(shí)針為正。不同的程序員喜歡不同的東西,我希望在使 API 簡(jiǎn)單的同時(shí)支持它們中的全部。
  
  另一個(gè)大問題是物理學(xué)問題。目前 Robocode 的物理學(xué)原理極其簡(jiǎn)單。為增加真實(shí)感,我預(yù)備引入力矢量。例如,加速度將會(huì)被空氣阻力和滾動(dòng)摩擦力抵消一部分,而不只受到“最大速率”的限制。根據(jù)摩擦力和半彈性碰撞原理,機(jī)器人撞到另一個(gè)機(jī)器人的一側(cè)時(shí)會(huì)把它推到一邊去。我以前對(duì)這些的試驗(yàn)使游戲比以前“酷”了許多。猛烈地撞向一個(gè)機(jī)器人并使其發(fā)出尖利的聲音滑向一邊,這是很有趣的。另外,前后加速將會(huì)更改;機(jī)器人向前移動(dòng)時(shí)速度可以更快。
  
  目前,撞擊(Ramming)還未被充分利用,所以,我想引入機(jī)器人各部分不同的裝甲力量 — 仍然是可配置的。擊中機(jī)器人的一側(cè)將會(huì)造成更大的傷害。
  
  我還想在競(jìng)技場(chǎng)中引入墻和障礙物,以及不同外形的競(jìng)技場(chǎng)、這將產(chǎn)生許多全新的戰(zhàn)略。
  
  因?yàn)檫@些更改要引入一些復(fù)雜的編程,我計(jì)劃使它更輕易擴(kuò)充機(jī)器人。一個(gè)專家可以寫一個(gè)查找墻四周路徑的可重用的機(jī)器人類,而一個(gè)新手可以只使用它來快速創(chuàng)建一個(gè)不錯(cuò)的機(jī)器人(同時(shí)學(xué)習(xí)如何重用代碼)。
  
  dW:您認(rèn)為將來 Robocode 會(huì)變成一個(gè)由 alphaWorks 主持的分布式游戲嗎?
  
  Nelson:現(xiàn)在我主要關(guān)心簡(jiǎn)單性;引入一定程度的復(fù)雜性卻不能使游戲玩起來更有趣是沒有必要的。Robocode 在分布式環(huán)境中會(huì)比現(xiàn)在更有趣嗎(現(xiàn)在的 Robocode 只是一種單機(jī)游戲,可以從中下載其它的機(jī)器人)?我還不確信。我的確認(rèn)為有一個(gè)空間可以容納一個(gè)趣味無窮的分布式 Java 編程游戲...... 但我認(rèn)為那就是一個(gè)新游戲,不是 Robocode。
  
  dW:為什么您選擇用 Java 編寫 Robocode?
  
  Nelson:當(dāng)我在 1995 年發(fā)現(xiàn) Java 時(shí),我馬上就被迷住了。它是一種簡(jiǎn)潔、優(yōu)雅的語(yǔ)言。使用 Java 可以比用其它語(yǔ)言節(jié)省一半的時(shí)間,并且做出來的東西可以在完全不同的系統(tǒng)上運(yùn)行。 例如,Robocode 可以在 Mac OS X 上運(yùn)行,而我甚至從來沒接觸過 Mac。
  
  目前,Java 速度很快,盡管許多人仍沒有意識(shí)到這一點(diǎn)。計(jì)算機(jī)的處理速度正以驚人的速度增長(zhǎng),JVM 的速度比以前任何時(shí)候都快,Java 已經(jīng)成熟了,我們甚至可以用硬件加速生成圖形。Java 現(xiàn)在已經(jīng)用于客戶機(jī)了,我希望 Robocode 可以幫忙促進(jìn)這一點(diǎn)。
  
  dW:是什么使您想使用自己的編程技巧為程序員創(chuàng)建一個(gè)教育性游戲而不是創(chuàng)建只用于娛樂的浮華的游戲?
  
  Nelson:沒有任何東西。我的確只是為了好玩而編寫了一個(gè)浮華的游戲。我們是后來才發(fā)現(xiàn)它的教學(xué)用途的。
  
  在 25 年的玩游戲生涯中,我已經(jīng)花費(fèi)了無數(shù)的時(shí)間來學(xué)習(xí)如何玩游戲。我閱讀手冊(cè)、看幫助菜單、查閱游戲參考資料、還在 Web 上看技巧和提示。當(dāng)然,與任何其它游戲一樣,對(duì) Robocode 也要做相同的事。但有一點(diǎn)很大的不同:手冊(cè)是關(guān)于 Java 的。參考資料是 Javadoc。幫助菜單是 Java 教程。學(xué)習(xí)玩 Robocode 就是學(xué)習(xí) Java,剛開始時(shí)我沒有意識(shí)到這一點(diǎn)。
  
  我希望擔(dān)任編程入門課程的教授和教師能夠發(fā)現(xiàn) Robocode 是一種使學(xué)習(xí)變得很有趣的好方法,并推廣 Java,使人們選擇使用 Java。使用幾篇教程(游戲內(nèi)部和外部皆可),我相信我們可以使 Robocode 成為一個(gè)更好的自學(xué)工具。我將嘗試用幾個(gè)簡(jiǎn)單的任務(wù)來完成我們的游戲內(nèi)教程(就象“完成這 10 個(gè)任務(wù)您就能夠很好地理解 Java 一樣”)。稍微利用些指導(dǎo),任何人都可以成為 Java 程序員。
  
  回頭看一下,很明顯;它當(dāng)然是一個(gè)教育工具。但 Robocode 是從一個(gè)全新的角度達(dá)到了現(xiàn)在的程度。Robocode 是一個(gè)游戲。但在您學(xué)習(xí)玩 Robocode 時(shí),哦,哇唔!您學(xué)會(huì)了 Java。我的確是把 Robocode 作為一個(gè)有趣的游戲而不是教育工具來寫的,而且我還將繼續(xù)以這種精神開發(fā)它。但假如您在得到樂趣的同時(shí)又學(xué)會(huì)了 Java,那就太妙了!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美成人影院 | 亚洲精品欧美二区三区中文字幕 | 麻豆视频国产在线观看 | 噜噜噜在线 | 孕妇体内谢精满日本电影 | 91精品国产日韩91久久久久久360 | 亚洲最大的成人网 | 亚洲精品久久久久www | 天天看逼 | av在线一区二区三区 | 精品人人人人 | 国产精品资源手机在线播放 | 欧美 日本 在线 | 请播放一级毛片 | 国产羞羞网站 | 日本看片一区二区三区高清 | 亚洲情视频 | 免费国产自久久久久三四区久久 | a网在线| 亚洲精品一区二区三区在线看 | 九九视频精品在线观看 | 青草久久久久 | 欧美91看片特黄aaaa | 九九精品在线播放 | 91成人在线免费视频 | 性欧美xxxx免费岛国不卡电影 | 香蕉国产在线视频 | 国产超碰人人做人人爱ⅴa 国产精品久久久久久久hd | av电影在线观看网址 | 蜜桃视频在线观看视频 | 午夜精品福利影院 | 久久久久国产成人精品亚洲午夜 | 亚洲一区二区三区高清视频 | 国产亚洲精品久久久久久大师 | 亚洲白嫩在线观看 | 天使萌一区二区三区免费观看 | 久草视频福利在线观看 | 主播粉嫩国产在线精品 | 日韩一级片黄色 | 视频一区免费观看 | 精品国产一区二区三区四区阿崩 |