第一篇:游戲編程感想
游戲編程感想
班 53080907 周杰
首先,通過游戲編程課程的學(xué)習(xí),我了解了怎么用我們所學(xué)過的知識進(jìn)行游戲編程,不過對于第一開始應(yīng)該用什么語言,你有許多種選擇,包括Basic、Pascal、C、C++、Java等等,而且在網(wǎng)上關(guān)于游戲制作新手應(yīng)該選擇哪門語言的討論也很多。推薦選擇C和C++做為開始寫游戲的語言。一些人可能會說這兩種語言對于沒有編程經(jīng)驗的新手來說有點難度,我不同意這種說法,因為我就是剛開始的也是選擇這兩種語言。另外C/C++在今天是兩種應(yīng)用范圍最廣的語言,因此你才會更有可能得到更多的編程和學(xué)習(xí)資源以及其他人的幫助。
其次,如果要進(jìn)行游戲編程,我們要對我們在大學(xué)期間學(xué)過的相關(guān)知識有個大概的了解,游戲編程設(shè)計到經(jīng)濟(jì)學(xué),統(tǒng)籌學(xué),物理學(xué),機(jī)器人學(xué),生物學(xué),心理學(xué),人工智能,計算機(jī)圖形學(xué),多媒體技術(shù),虛擬現(xiàn)實等等。而且它也是一個團(tuán)隊的合作才能完成的工作,它所涉及的工作有策劃、程序、美術(shù)、音樂等。只有每個方面的工作相互配合達(dá)到完美,所設(shè)計出來的游戲才是一款經(jīng)典的游戲作品。
第三,作為游戲編程,它所設(shè)計的不單單是一款游戲,如果把它想成僅僅工人們娛樂消遣的工具,那就把游戲定義的有所狹隘。游戲只是人們?nèi)粘I钪兴芙佑|到的一部分應(yīng)用,它更可以應(yīng)用虛擬現(xiàn)實的技術(shù)把這個產(chǎn)品應(yīng)用到人們生活的方方面面,比如軍事模擬訓(xùn)練,仿真模擬等等。
最后,不要僅僅是積累知識,用它。除非你用它們,否則你不能真正的知道和理解它們。用你所學(xué)的東西制作一個小的Demo。認(rèn)真的去做書里面每個章節(jié)后面留的練習(xí)。
盡量玩更多的游戲。這樣做可以給你許多靈感并能幫助你把游戲做的更好一些。這也可以給你枯燥的編程工作減輕一些痛苦。
幫助別人。在教別人或者給別人講解的過程中你將會更加的了解自己,學(xué)到很多東西。有始有終。不要陷入“我知道我能完成這個游戲,但是我有更好的方法,因此我要繼續(xù)想想我的那個方法?!比绻隳芡晖暾膶懲暌粋€你從一開始要做的游戲,你將會學(xué)到非常非常多的東西,而且你也有東西可以證明你不是一個把什么東西都停留在嘴巴上的人。在你成為一個有經(jīng)驗的游戲程序員之前,請把你要做的游戲更簡單更容易一些,不要貿(mào)然的去嘗試寫一些比較大或者很復(fù)雜的游戲。
第二篇:編程感想
編程感想
從C學(xué)到C++,就是從面向過程到對象,又從C++到JAVA,就是從靜態(tài)語言到動態(tài)語言。編程語言的學(xué)習(xí)無怪乎多寫代碼,多參考,多了解,那些所謂的牛人,又有多牛呢 ? 我想開始時也跟我們剛學(xué)時一樣,但人家堅持住了,所以被牛了!編程要養(yǎng)成好的習(xí)慣!
下面是我在一篇博文上看到的,很受用,與大家分享 態(tài)度篇
1.做實事 不要抱怨,發(fā)牢騷,指責(zé)他人,找出問題所在,想辦法解決。對問題和錯誤,要勇于承擔(dān)。
2.欲速則不達(dá) 用小聰明、權(quán)宜之計解決問題,求快而不顧代碼質(zhì)量,會給項目留下要命的死角。
3.對事不對人 就事論事,明智、真誠、虛心地討論問題,提出創(chuàng)新方案。4.排除萬難,奮勇前進(jìn) 勇氣往往是克服困難的唯一方法。學(xué)習(xí)篇
5.跟蹤變化 新技術(shù)層出不窮并不可怕。堅持學(xué)習(xí)新技術(shù),讀書,讀技術(shù)雜志,參加技術(shù)活動,與人交流。要多理解新詞背后的所以然,把握技術(shù)大趨勢,將新技術(shù)用于產(chǎn)品開發(fā)要謹(jǐn)慎。
6.對團(tuán)隊投資打造學(xué)習(xí)型團(tuán)隊,不斷提高兄弟們的平均水平。7.懂得丟棄 老的套路和技術(shù),該丟,就得丟。不要固步自封。
8.打破砂鍋問到底 不斷追問,真正搞懂問題的本質(zhì)。為什么?應(yīng)該成為你的口頭禪。9.把握開發(fā)節(jié)奏 控制好時間,養(yǎng)成好習(xí)慣,不要加班。開發(fā)流程篇
10.讓客戶做決定 讓用戶在現(xiàn)場,傾聽他們的聲音,對業(yè)務(wù)最重要的決策應(yīng)該讓他們說了算。
11.讓設(shè)計指導(dǎo)而不是操縱開發(fā) 設(shè)計是前進(jìn)的地圖,它指引的是方向,而不是目的本身。設(shè)計的詳略程度應(yīng)該適當(dāng)。
12.合理地使用技術(shù) 根據(jù)需要而不是其他因素選擇技術(shù)。對各種技術(shù)方案進(jìn)行嚴(yán)格地追問,真誠面對各種問題。
13.讓應(yīng)用隨時都可以發(fā)布 通過善用持續(xù)集成和版本管理,你應(yīng)該隨時都能夠編譯、運行甚至部署應(yīng)用。
14.提早集成,頻繁集成 集成有風(fēng)險,要盡早盡量多地集成。15.提早實現(xiàn)自動化部署 16.使用演示獲得頻繁反饋 17.使用短迭代,增量發(fā)布
18.固定價格就意味著背叛承諾 估算應(yīng)該基于實際的工作不斷變化。用戶篇 19.守護(hù)天使 自動化單元測試是你的守護(hù)天使。20.先用它再實現(xiàn)它 測試驅(qū)動開發(fā)其實是一種設(shè)計工具。21.不同環(huán)境,就有不同問題 要重視多平臺問題。22.自動驗收測試
23.度量真實的進(jìn)度 在工作量估算上,不要自欺欺人。24.傾聽用戶的聲音 每一聲抱怨都隱藏著寶貴的真理。編程篇
25.代碼要清晰地表達(dá)意圖
代碼是給人讀的,不要耍小聰明。26.用代碼溝通 注釋的藝術(shù)。
27.動態(tài)地進(jìn)行取舍 記住,沒有最佳解決方案。各種目標(biāo)不可能面面俱到,關(guān)注對用戶重要的需求。
28.增量式編程 寫一點代碼就構(gòu)建、測試、重構(gòu)、休息。讓代碼干凈利落。
29.盡量簡單 寧簡勿繁。如果沒有充足的理由,就不要使用什么模式、原則和特別的技術(shù)。30.編寫內(nèi)聚的代碼 類和組件應(yīng)該足夠小,任務(wù)單一。31.告知,不要詢問 多用消息傳遞,少用函數(shù)調(diào)用。32.根據(jù)契約進(jìn)行替換 委托往往優(yōu)于繼承。調(diào)試篇
33.記錄問題解決日志)不要在同一地方摔倒兩次。錯誤是最寶貴的財富。34.警告就是錯誤 忽視編譯器的警告可能鑄成大錯。
35.對問題各個擊破
分而治之是計算機(jī)科學(xué)中最重要的思想之一。但是,要從設(shè)計和原型階段就考慮各部分應(yīng)該能夠很好地分離。
36.報告所有的異常 37.提供有用的錯誤信息
稍微多花一點心思,出錯的時候,將給你帶來極大便利。團(tuán)隊協(xié)作篇
38.定期安排會面時間 常開會,開短會。
39.架構(gòu)師必須寫代碼
不寫代碼的架構(gòu)師不是好架構(gòu)師。好的設(shè)計都來自實際編程。編程可以帶來深入的理解。
40.實行代碼集體所有制 讓開發(fā)人員在系統(tǒng)不同區(qū)域中不同的模塊和任務(wù)之間輪崗。41.成為指導(dǎo)者 教學(xué)相長。分享能提高團(tuán)隊的總體能力。
42.讓大家自己想辦法
指引方向,而不是直接提供解決方案。讓每個人都有機(jī)會在干中學(xué)習(xí)。
43.準(zhǔn)備好后再共享代碼 不要提交無法編譯或者沒有通過單元測試的代碼!44.做代碼復(fù)查 復(fù)查對提高代碼質(zhì)量、減少錯誤極為重要。45.及時通報進(jìn)展與問題
主動通報,不要讓別人來問你。
第三篇:游戲編程入門
游戲編程入門
經(jīng)常有人問我,沒有編程經(jīng)驗的人該如何開始開發(fā)游戲。在此之前,我總是一個個的盡力回答。然而,后來提相同問題的人數(shù)增長到難以處理的地步。我決定,是時候把我所有的建議寫成文章,作為一個大概。
這篇文章是針對那些想要開發(fā)自己游戲,但幾乎沒有編程經(jīng)驗的人。事實上,我假設(shè)讀者沒有任何編程經(jīng)驗。我主要討論游戲開發(fā)的程序和設(shè)計方面,而不是藝術(shù)性。我也不準(zhǔn)備講述如何進(jìn)入游戲行業(yè)(這方面已經(jīng)有足夠的資料),而只是讓你逐步的開始開發(fā)自己的游戲。最后,我所指出的這條道路也并不能作為唯一的,或是最好的路徑來學(xué)習(xí)開發(fā)游戲,但至少對我和一些人很有用。選擇一門語言
你要做的第一件事就是選擇一門開發(fā)語言。你有很多選擇,包括
Basic,Pascal,C,C++,Java,等等。也經(jīng)常會有人爭論對于初學(xué)者那一門語言是最好的。對于這一系列流行語言的討論,你可以參看John Hattan的著作,What Language Do I Use?(我用什么語言?)
我的建議是以C和C++開始。有些人會說這些語言對初學(xué)者來說太高級了,但因為我自己就是學(xué)C++,我并不同意這一說法。而且,C/C++是當(dāng)今使用最廣泛的語言(譯者認(rèn)為應(yīng)該是漢語。。),所以你可以找到大量學(xué)習(xí)資料和幫助。你先學(xué)C或C++都無所謂,因為只要學(xué)了一個,再學(xué)另外一個就很容易。但是,如果你先學(xué)C++,請保證在學(xué)習(xí)面向?qū)ο缶幊讨澳芾斫夂褪褂眠^程編程(等編程熟練再去學(xué)習(xí)類)。(譯者:C是過程性語言,C++是面向?qū)ο笳Z言)
如果你開始學(xué)習(xí)C/C++,發(fā)現(xiàn)太難,那再學(xué)一個簡單一點的也沒關(guān)系,比如Basic或Pascal。但是我真的認(rèn)為,如果你堅持努力,而且有好的資料,學(xué)C/C++應(yīng)該沒有太大問題。
你的下一個問題可能會是:“我該怎么學(xué)C/C++?”我很高興你這樣問。最好的辦法是上課。有老師可以回答你的問題,幫助你產(chǎn)生很大進(jìn)步,編程練習(xí)作業(yè)也可以保證你能用到所學(xué)的東西。
如果你不覺得上課是個好主意,那最好的辦法就是買一些好書。不要花太多時間去選一本什么“超級寶典”或“萬用全書”,因為你最終可能會買幾本。我建議你去一家書店,然后拿幾本比較入眼的C或C++書看,直到找到一本或幾本你能看懂,并且可以拿來學(xué)習(xí)的。同時,你可能會想要一些更深入的,或者一些材料,但是你一旦對于這門語言有了一些了解,我相信你應(yīng)該有自己更好的選擇。在這里,我有必要花一些時間,來說我看到很多初學(xué)者所關(guān)心的一個事情,特別是年輕人:沒有錢買書和其他東西。首先,有很多免費資源可以利用,圖書館,Macmillan Computer Publishing(/personal),有成千上百的編程書籍。但是如果你真的想要成為一個好的程序員,還是應(yīng)該投入一部分資金。應(yīng)當(dāng)想方設(shè)法(合法的)幫助你弄到一些錢。
網(wǎng)上也有很多C/C++的學(xué)習(xí)指南。但是我認(rèn)為那只能作為補(bǔ)充而不是你自學(xué)的主要資源。
選擇正確的編譯器
你寫的程序,或者代碼,是以文本方式儲存的,你甚至可以用記事本寫C/C++程序。但是總需要有東西把他們轉(zhuǎn)換成為可執(zhí)行文件。對于C和C++,那就是編譯器。
可用的編譯器有好多種,包括很多免費的。選擇一款自己適合的編譯器很重要,免費的編譯器就有這樣的好處,你可以把它們試個遍,然后從中選擇自己最喜歡的。然而,免費編譯器比起商業(yè)版,可能會缺失一些功能和大部分服務(wù)。幸運的是,多數(shù)商業(yè)版編譯器也兼售介紹版或?qū)W習(xí)版,這要便宜得多,通常功能卻不見得少,唯一的限制是你不能發(fā)布用它編譯的程序(短時間內(nèi)你也根本用不著)。
總之,選擇編譯器取決于你能花多少錢,用什么操作系統(tǒng),和為什么平臺開發(fā)。如果要為windows開發(fā),我強(qiáng)烈推薦Microsoft Visual C++。他強(qiáng)大的開發(fā)環(huán)境使得很多事做起來更方便,毫無疑問沒有其他編譯器更適合開發(fā)windows應(yīng)用程序。如果你是個學(xué)生,你還可以折價買到。(譯者:爽?。┤绻阍贒OS平臺開發(fā),你最好的選擇可能是DJGPP,免費的哦~。
選擇開發(fā)平臺
盡管最終你很可能為好幾個平臺開發(fā),總要先選擇一個來學(xué)。當(dāng)你在學(xué)這門語言,還沒有接觸到圖像的時候,你可能會想使用非圖形用戶界面的操作系統(tǒng),比如DOS,Unix.這樣可以避免接觸高層,比如windows編程,讓你集中精力學(xué)習(xí)語言本身。
一旦你做好開發(fā)游戲的準(zhǔn)備,那么,應(yīng)該考慮是否改變平臺,讓我們來看看每個選項的特征。
windows:如果你想成為游戲行業(yè)的專家,或者如果你想讓許多人來玩你開發(fā)的游戲,那么,這就是你要選擇的平臺。因為多數(shù)你的用戶使用windows,而且現(xiàn)在我也看不出有什么改變的跡象。當(dāng)今大多數(shù)的windows游戲都是由一種你可能聽說過技術(shù)---DirectX---開發(fā)的。你可以DirextX這個庫直接訪問硬件,這意味著你可以開發(fā)高性能的游戲。
DOS:DOS過去是占統(tǒng)治地位的游戲平臺,但是已經(jīng)一去不復(fù)返了。盡管可能有一些特殊愛好者還在為DOS開發(fā)游戲,現(xiàn)在沒有一個為DOS開發(fā)的商業(yè)游戲,他也將繼續(xù)衰落,直到微軟不再支持。如果你只是想開發(fā)游戲,還是不要選擇DOS,如果你非要這么做,也不要太久。記?。河捎诖嬖诖罅緿OS游戲開發(fā)的書,可能還有人辯護(hù)從這些書中學(xué)習(xí)DOS游戲開發(fā)。但是,windows游戲開發(fā)的書越來越多,那些辯解也變得越來越無力。
Linux:Linux是Unix的一種,由于很多原因后來變得流行,包括穩(wěn)定性,價格,和反微軟情緒。盡管Linux用戶還是相當(dāng)少,但是圍繞著他的熱情和不斷增長的市場潛力使其也成為不錯的選擇。
Macintosh:MAC有大量忠實粉絲并不能說明什么,幾乎每一個和我討論的MAC狂熱者都需要更多更好的游戲。我沒有見過多少MAC游戲開發(fā)資源,但我相信還是有的,因此這也是一個選擇。
consoles:console(就是PS,N64,DC等等)的游戲市場十分巨大,當(dāng)然
console游戲開發(fā)的前景也不錯。然而以非商業(yè)的形式開發(fā)console游戲,出于各種原因,在現(xiàn)在似乎行不通。如果你開發(fā)console,很可能是在被商業(yè)游戲開發(fā)組雇用之后。
開始進(jìn)入主題
現(xiàn)在是時候討論開發(fā)游戲了。簡單起見,我假設(shè)你選擇用C/C++在windows平臺開發(fā),可能你選擇別的,但大多數(shù)我說的還是有用的。
首先,甚至在你打算開始開發(fā)游戲之前,你必須很好掌握C和C++.你應(yīng)該懂指針,數(shù)組,結(jié)構(gòu)體,函數(shù),可能還有類。如果你精通他們,就可以開始做游戲了。
這篇文章可能不能教會你所有關(guān)于開發(fā)游戲的東西。幸運的是,也沒有這個必要。這方面有很多書,網(wǎng)上也有很多指南。GameDev.net應(yīng)該有所有你想要的東西,這里我建議你怎么開始:
找一本或幾本書。對于windows游戲開發(fā)初學(xué)者,Tricks of the Windows Game Programming Gurus是個完美的開始。除此之外,還有許多好書.讀透這些書,試試所有的例子,不懂得部分多讀幾遍。
網(wǎng)上指南作為補(bǔ)充。除了弄清書上讀到的,他們還涉及一些書上沒有談及的主題。
向?qū)<覍で髱椭?。如果你不能在書上或指南找到問題的答案,好好利用我們的論壇和聊天室。那里有好多專家愿意幫助別人。
這并不是要你按照順序執(zhí)行的,而是可以同時并且不斷的重復(fù)執(zhí)行。
光學(xué)習(xí)還是不夠的,你必須運用你所學(xué)到的。從一個小游戲開始,然后在這個基礎(chǔ)上前進(jìn)。你可以看一下Geoff Howlands 的著作: How do I Make Games?
A Path to Game Development.開始,自己獨立工作。不要急著加入團(tuán)隊,那樣只會減緩學(xué)習(xí)過程。而且一旦你有了自己的幾個游戲,你可以為團(tuán)隊做出更大的貢獻(xiàn)。
還有關(guān)于書,你應(yīng)該不僅僅看游戲開發(fā)的書。為了能夠開發(fā)出你看到商店出售的游戲,你應(yīng)該鉆研比大多數(shù)游戲開發(fā)書籍更高級的一些主題。有一些可以在網(wǎng)上找到,但你也應(yīng)該選一些圖形學(xué),人工智能,網(wǎng)絡(luò),物理學(xué)等方面的書。計算機(jī)科學(xué)學(xué)位看來唾手可得,但因為你被迫上這些課的時候可能認(rèn)為他們和游戲開發(fā)無關(guān)----你錯了!
包裝
這里有一些提示很有用
不要只積累知識,用它:你永遠(yuǎn)不會知道會理解一些東西知道你是用他們。用你學(xué)的東西作些演示。做作書上的練習(xí)。
經(jīng)常玩游戲:這樣做會使你做出更好的游戲。而且可以減輕編程的枯燥。幫助別人:能幫別人的地方盡量幫助別人,教別人的過程中自己會學(xué)到更多。有始有終:不要有這樣的想法“我能夠完成這個游戲了,但是我又有一個新的想法,那就直接做下一個?!蹦憧梢詫W(xué)得更多如果你完成他,你也可以用事實證明你不是只會空談。所以,盡量不要做很大很復(fù)雜的游戲,直到你有了一定經(jīng)驗。
開始吧!你現(xiàn)在可以開始準(zhǔn)備QUAKE4了??赡苣悴皇遣皇呛芰私?,但是至少應(yīng)該知道如何開始這條道路,找多些資料,加上多年努力工作,他一定會實現(xiàn)!
第四篇:編程大賽感想
(本人技術(shù)一般,所寫只為給新人介紹一下西工大acm如何入門,大牛請無視本貼)
ACM競賽作為大學(xué)階段計算機(jī)學(xué)生的最高榮譽(yù)在咱學(xué)校竟然不受重視,也沒人提起,讓那些高中轉(zhuǎn)戰(zhàn)NOIP,IOI的同學(xué)寒心不已。其實我們學(xué)校成績還是可以的,前年就獲得了合肥賽區(qū)的第二名,當(dāng)然由與高手都在其它賽區(qū),沒有參加決賽的資格,但也說明了只要我們努力就能有成果。但由于其獲獎難度極高,我們學(xué)校幾乎是破罐子破摔,根本就不管事。其實是學(xué)校的這種心態(tài)造成大量潛在人才由于不知道相關(guān)信息而大學(xué)四年庸庸碌碌迷失方向,所以我來說說吧。(如果想簡單地保研的話就去機(jī)器人吧,進(jìn)了70%國家一等獎,直接保研資格哦)當(dāng)然想成為高手,想提升自己的能力就參加ACM吧。首先說下參加ACM比賽好處,以及與其它課程的關(guān)系: 很多人都說ACM考察面太窄了只是算法罷了,像操作系統(tǒng),編譯原理,網(wǎng)絡(luò),嵌入式等等都沒考察。
其實當(dāng)你成為ACM高手的時候會發(fā)現(xiàn)這些課的重點難點用的算法你都已經(jīng)知道了,你再學(xué)這些東西就像看小人書一樣了,你會覺得如果讓你去做這些東西你也會這么設(shè)計甚至還能加以優(yōu)化。比如內(nèi)存分配管理其實就是排序算法的應(yīng)用而已,PV操作就是設(shè)置標(biāo)志的小技巧而已,編譯原理就是字符串處理而已,路由器的相關(guān)算法就是圖論里的東東而已。。因為算法是核心,其它那些只是算法在具體環(huán)境下的特定應(yīng)用罷了。如果說那些東西是套路,那么算法就是內(nèi)功,而ACM比賽就是內(nèi)功的檢驗場,你通過了說明你的任督二脈已經(jīng)打通,你已可縱橫天下了。此時你已成為世界各高校爭相搶奪的人才了。就算沒有進(jìn)入決賽但內(nèi)功強(qiáng)了干啥都順手。從本科生階段到博士生階段的的各種面試筆試機(jī)試全逃不出acm考察的圈圈。因為難所以價值極高!
對于找工作來說,百度騰訊網(wǎng)易google每年都有類似于ACM的競賽,初賽大概都在五月份到六月份進(jìn)行。只要進(jìn)入決賽去他們公司找工作都不用簡歷,直接走綠色通道的哦~你奪得名次后這些公司的崗位就任你挑了,不用簡歷不用面試,求你到他們公司去!
想想看吧:你不用向各大公司投簡歷,而是各大公司像你投他們公司的簡歷了,然后你看都不看把它們都丟到垃圾桶里去?。ㄎ視r常就在幻想這樣的牛人待遇啊,現(xiàn)在已經(jīng)大四了悔之晚矣,希望大一的同學(xué)努力?。?/p>
再說高數(shù),物理等科目。其實與算法真的沒什么關(guān)系。一旦模擬信號變成了離散信號就是算法的天下了,與之相關(guān)的數(shù)學(xué)是組合數(shù)學(xué)(研究生階段才開,我認(rèn)為應(yīng)該大一就開)。主要是為了我們今后的計算機(jī)應(yīng)用,比如各種物理數(shù)據(jù)的采集處理,物理電路的設(shè)計仿真等等,這些都屬于計算機(jī)應(yīng)用范疇,我們學(xué)校其實沒有計算機(jī)科學(xué)專業(yè),有的只是計算機(jī)應(yīng)用與技術(shù)專業(yè)。有志去1,3系的同學(xué)好好學(xué)高數(shù),復(fù)變,信號與系統(tǒng)這些課吧。當(dāng)然高數(shù)等是常識性知識,不能不知道,這么簡單的東西都學(xué)不好就不要搞acm了。接著講正題:
本人剛來時由于不知道如何進(jìn)校隊而浪費大量時間,學(xué)校信息也較為閉塞,到了大三參加了一次也是草草收場,所以希望更多有志的同學(xué)早些知道些信息少走彎路。咱學(xué)校進(jìn)校隊其實非常簡單,有兩條路:
第一條路:在學(xué)校舉行選拔的時候去參加選拔賽。這個要特別留心,很多陰險的人看了通知后就把通知扯掉的(當(dāng)年親眼目睹。。),一定要多留心。
第二條路:把usaco前五章的題目做完你就直接去找王琪老師就可以進(jìn)校隊了。王琪老師會上離散數(shù)學(xué)和算法分析課,大家留心下。王老師水平不咋樣但人還是很好的,會盡力幫你的哦。ACM競賽與其它競賽的區(qū)別就是學(xué)生一定比老師強(qiáng),強(qiáng)很多!(不像咱學(xué)校的那些所謂的強(qiáng)項競賽,哼哼)
第二條路顯然是我們的最好選擇。因為一旦你做完了前五章題目什么選拔賽早已不在話下了。usaco是美國的程序設(shè)計訓(xùn)練站,剛開始英語看不懂的話就去nocow看翻譯。acm的題目都是英文的,所以最好看英文的。(學(xué)計算機(jī)英語極為重要,這東西幾乎是美國一家弄出來的沒辦法)。這個站的特點是題目按學(xué)習(xí)進(jìn)程一步步安排,從最簡單的講起,對各種算法分別介紹,題目循序漸進(jìn)的出現(xiàn)。不像其它OnlineJudge一開始就讓你面對雜亂無章的一對題目。一開始你只能做幾道題,只有你做完了這幾題之后才能解鎖后續(xù)的題目。做這套題目還有一個好處就是做過這套題的人特別多,相關(guān)分析講解到處都是,相當(dāng)于有一位經(jīng)驗豐富的老師給你指引了。
當(dāng)然做完這套題是很不容易的,用一年時間攻克它吧。如果光看書不做題是絕對不行的,要邊做題邊看書。你會感到強(qiáng)烈的對知識的渴求,而且在應(yīng)用中你會牢牢記住書上的東西并透徹地了解他們。
首先是語言基礎(chǔ),先把C語言弄熟來(高中用過PASCLE學(xué)C一樣很快的)。C語言書用譚浩強(qiáng)的就可以了,我們的目標(biāo)只要會用這門語言即可,此階段會寫冒泡排序,斐波那契數(shù)列的遞歸法,八皇后,約瑟夫問題(數(shù)組版和鏈表版,有興趣看看數(shù)學(xué)公式版)即可。然后找一本簡單數(shù)據(jù)結(jié)構(gòu)書看一下(一般都用嚴(yán)蔚敏寫的),先把前四章看下,代星星的以及樹和圖以后做題時一塊看。接著學(xué)習(xí)C++。C++的好處就是STL,一些數(shù)據(jù)結(jié)構(gòu)如棧,隊列,優(yōu)先隊列都可以直接調(diào)用,一些常用的算法(例如快排)也可直接調(diào)用。C++先用幾天看看譚浩強(qiáng)的寫的紅色的那本,把類,構(gòu)造函數(shù),析構(gòu)函數(shù),泛型編程,操作符重載等相關(guān)概念理解下,譚的書例子非常簡單利于理解,然后看下《ACM程序設(shè)計》這本書(藍(lán)皮的,北京大學(xué)出版社,超簡單的入門基礎(chǔ)書,強(qiáng)烈推薦新手看),基本上STL就會用了。然后備著本《C++ primer》就好了,遇到問題時查查。用一周把《ACM程序設(shè)計》上的水題推掉,這時語言功底已經(jīng)打好了。接著準(zhǔn)備一本《算法導(dǎo)論》和一本簡單的國人寫的算法設(shè)計與分析,按照usaco上的順序開始算法的學(xué)習(xí)吧。
其中你會遇到各方面的問題,主要有數(shù)論,數(shù)據(jù)結(jié)構(gòu),組合數(shù)學(xué),計算幾何等方面,帶著問題去圖書館或上網(wǎng)查資料學(xué)習(xí)吧,效率很高的哦~ 順帶說下,我們學(xué)校是先學(xué)數(shù)據(jù)結(jié)構(gòu)再學(xué)算法,我認(rèn)為在學(xué)數(shù)據(jù)結(jié)構(gòu)前先學(xué)下算法較好,因為是先有算法
做完五章就去校隊吧,會讓你做烏拉爾大學(xué)的OJ,這時再準(zhǔn)備本劉汝佳的《算法藝術(shù)與信息學(xué)競賽》翻翻吧(此書極難,分析超短,只適合高手看)
第五篇:MATLAB游戲編程實例(拼
MATLAB游戲編程實例(拼圖)
這是一個簡單的游戲,只要把數(shù)字按順序排好就可以了。游戲方法是用鼠標(biāo)點中數(shù)字,如果該數(shù)字相鄰的格子為空,則自動移到到該空格。
本程序是由realghost編寫,如果有問題可以與 slqinyi@163.com 聯(lián)系。
附圖如下:
function pintu1()A = gen()
G = [1 2 3;4 5 6;7 8 0];drawmap(A);
while 1
[xpos,ypos] = ginput(1);col = ceil(xpos);row = 3-ceil(ypos)+1;num = A(row,col);
if row>1&A(row-1,col)==0 A(row-1,col)= num;
A(row,col)= 0;
end
if row<3&A(row+1,col)==0 A(row+1,col)= num;A(row,col)= 0;
end
if col>1&A(row,col-1)==0 A(row,col-1)= num;A(row,col)= 0;
end
if col<3&A(row,col+1)==0 A(row,col+1)= num;A(row,col)= 0;
end
drawmap(A)
zt = abs(A-G);
if sum(zt(:))==0
msgbox('??ò??-3é1|?′o?í?£?')break
end end
function drawmap(A)clf;hold on
line([0 3],[0 0],'linewidth',4);line([3 3],[0 3],'linewidth',4);line([0 3],[3 3],'linewidth',4);line([0 0],[0 3],'linewidth',4);
for i = 1:3
for j = 1:3
drawrect([j-1 3-i],[j 3-i],[j 3-i+1],[j-1 3-i+1],'y',A(i,j));
end end
axis equal axis off
function drawrect(x1,x2,x3,x4,color,num)x = [x1(1)x2(1)x3(1)x4(1)];y = [x1(2)x2(2)x3(2)x4(2)];fill(x,y,color)if num==0
text(0.5*(x1(1)+x2(1)),0.5*(x1(2)+x4(2)),' ','fontsize',24)else
text(0.5*(x1(1)+x2(1))-0.05,0.5*(x1(2)+x4(2)),num2str(num),'fontsize',24)end
function y = gen()y = inf*ones(1,9);for i = 1:9
while 1
a = randint(1,1,9);
if isempty(find(y==a))y(i)= a;break
end
end end
y = reshape(y,3,3);
當(dāng)然可以啦,其實圖像就是數(shù)字矩陣,圖像的拼接就是矩陣的拼接,橫著拼得行數(shù)相等,豎著拼得列數(shù)相等就行
例子
clc;clear;
a=imread('我的圖片.jpg');[m n t]=size(a);
b=a(1:fix(m/2),:,:);%取圖像的上半部分
c=a(fix(m/2)+1:end,:,:);%取圖像的下半部分
figure(1);imshow(b);
figure(2);imshow(c);
%注意,上下拼接要求兩幅圖的列數(shù)要相同 %左右拼行數(shù)要相同
figure(3);d=[b;c];%把b,c拼起來,若左右拼接d=[b,c];imshow(d);