你寫過什麼有趣的程序?
大家都寫過什麼什麼有意思的程序啊,不管是演算法,數據結構,還是可視化的,研究還是學習。羅列幾個你寫的覺得收穫最大的最得意的程序。
我們從高一到高三都強制採用圖形計算器,可以畫函數圖像的那種。我們用的是德州儀器系列,Ti-Nspire,貴的要死要死的。
然而我卻買錯了計算器的制式,便宜貨,相比其他同學的系統少了很多重要的功能。
作為一個很窮很喜歡計算機很愛折騰的少年,我先是把計算器系統刷成了正規版本,然後再將其越獄,安裝上了GBA模擬器和電子書以及仙劍奇俠傳。
你沒看錯,這真的是在計算器上玩的。
教程網上都有,所以我都是按網上教程做的(我那時可不懂什麼嵌入式內核開發,現在也不懂...)
給個圖吧,網上複製的,但當時效果一模一樣。
右邊那就是我們的圖形計算器(但我的計算器左右兩邊框框都是白色的,因為機型不一樣嘛)。
後來到高三了,學業也重了,都在應付高考,不敢折騰我的計算器,生怕變磚。正好計算器有個原生編程語言叫Ti-Basic(和Basic類似),所以就把心思花在這個語言上。
有天做數學作業,學的是概率,有那種需要計算最小樣本數量的題目,得反覆算概率才能推出結果。
然後黑客流附身,想到可以用暴力枚舉的方法強行算答案。
於是在計算器上編了個小程序,分分鐘搞定數學作業(就和基友去玩提莫輔助了)
永遠忘不了第二天數學課,老師帶著同學們在課上講作業,要麼是手動窮舉要麼是用表格大法,沒有三五分鐘干不掉一道題。而我的程序只需要三秒寫個參數就可以了……
這些題目都有兩分,一分是過程一分是答案,而我的程序只有答案顯然是不行的,於是我加上了計算輸出過程的代碼。
完美了!
後來又陸陸續續寫了其他一些有用的程序,但最後傳給學弟學妹們的也就兩個程序,剛才那個是其中之一。
也寫過一些遊戲,本來是想做地牢RPG系列的,花了一節半數學課的時間擼出了一個戰鬥系統,因為不確定Ti-Basic里有沒有類似數組一類的數據結構,所以卡在了地牢地圖生成的開發上。
******
高三期間,兩次被老師請去給全年級高三學生教學計算器進階用法。
澳洲維州數學高考,計算器題目佔一半分數比重。
上述程序目前全州就我們學校的學生有。
連續兩年數學高考,我的程序在考試中發揮了作用。節省了全體學生幾分鐘的時間,並保證了送分。
去年大一,被數學老師請回母校,對新一屆的高三學生指導計算器的這些進階用法。
一小時的講座讓他們腦洞大開。
一眨眼兩年過去,我現在也大二了,希望在計算器上編程的這點小技巧能在我的母校里繼續做下去 :)
知乎支持GIF啦,更新一波動圖,然而畫質十分捉雞,還是歡迎大家到網站玩耍。
---
上了一波日報,多謝大家的厚愛。
好多朋友看著俄羅斯方塊兒AI跑著不會死很捉急,我就更新了一下。
切到俄羅斯塊兒的那一欄(通過點擊右邊的LOGO輪換),再點擊左邊的LOGO(寫著TY那個),就可以開關手動遊戲模式,上下左右四個鍵控制。
這下你們就可以擺成各種各樣的你們想擺的形狀挑戰AI了。【手動斜眼
---
這是一個重點跑偏但是有趣的項目。
因為知乎不能發動圖所以附上鏈接:https://thomas-yang.me/
之前擼了一個個人網站,為了激勵自己多寫一些新項目。由於堅持不用流行的css框架,自己又是個設計苦手,就打算設計的簡單點兒。嗯,想想,就來個左右雙欄吧,左邊固定住放點兒名字信息鏈接什麼的,右邊兒放上一張張帥氣的項目截圖,加上可點擊的鏈接。以後擼出了新項目就往裡加。顏色什麼的嘛,偷個懶用單色吧,改改透明度來表示不同的層級就好。
然後噼里啪啦敲鍵盤,擼出來了,長這樣兒:
嗯。感覺還看得過去。鼓掌 。
然而這個不是重點 = =
又是單色留白又這麼多,看起來好單調啊!
怎麼辦,已經懶得改設計了啊!
---
某天我突然靈機一動,誒要不我給左邊的側邊欄背景加個動畫,動態內容比較吸引眼球,大家就不會注意到右邊這麼白了【騙自己。
說整就整!
先寫了個雪花飄落的效果,實現倒是挺容易的,y軸速度一定,x軸加速度隨機變換一下。
誒不錯不錯,鼓掌 。
---
但是時間久了看著好無聊啊!
要不我再多做幾個側邊欄動畫,每次打開頁面的時候隨機播放一個,這樣不就沒有這麼無聊了嘛!
後來做成了點右邊的Logo【對就是上圖那個條紋正方形框框】也能輪換。
說整就整!
這次多花了一點兒時間寫了個俄羅斯方塊,又寫了個簡單的AI讓它自己玩兒免得一會兒就死掉了。
誒不錯不錯,鼓掌 。
---
誒嘛然後就一發不可收拾了,正經的項目不做,經常沒事兒就想著要寫新的側邊欄動畫,跟著了魔似的莫名有動力。
後面又陸陸續續寫了三個,
一個Game of Life的實現,跑著一個 Gosper glider gun,周而復始,非常魔性。
【我特別喜歡Game of Life,logo就是取材自其中一個spaceship
一個二維隨機遊走,放一會兒就能跑出來類似【打了馬賽克的】星雲的效果,是不是有種科幻大片兒的感覺!
還有一個Perlin noise,效果太鬼畜被我注釋了,默哀三秒鐘。
誒不錯不錯,鼓掌 。
等等,我是為什麼要做這個網站來著?
---
P.S. 年前回顧個站有感
P.P.S. 左上角那個按鈕其實是初期我不知道用什麼顏色比較好就寫了一個隨機換色的按鈕,幫助我挑顏色,後來發現誒嘛真好玩兒我戳戳戳戳。。。。
編程是件很有趣的事情,我也來湊個熱鬧。前方多圖預警,注意流量哈。
大一寒假跟弟弟一起玩俠盜飛車,遊戲的作弊碼用起來很麻煩,玩的不盡興,家裡又沒網,於是乎用VB搞了個作弊器:
大學期間當紀檢,點名這事就由我負責了,喜歡折騰的我,潛心研發一個月(WPF+TTS+XML+WebService),搞了個很炫酷的點名系統,用軟體協助我點名,實現點名這項工作的信息化、自動化管理,哈哈,請自行腦補同學們當時的反應:
需要源碼的同學,請到這裡獲取:stanzhai/RollCallSystem
舍友玩騰訊的《尋仙》,有個活動需要不停的點滑鼠搶東西,手動點經常搶不到,於是我用C++幫忙搞了滑鼠連點器(報酬是一個饅頭,哈哈,項目地址:stanzhai/AutoClick):
U盤太小了,遊戲拷不進來,寫了個文件分割器,把大的壓縮文件切分,多次拷貝,在組裝,就可以了。後來發現網上已經有人做了這工具了,哎,誰讓當時家裡沒法上網呢:
大學教室多媒體的滑鼠失靈了,想到可以用鍵盤控制滑鼠啊,於是做了這麼個東西,做完後,滑鼠居然又好使了,汗~
跟一個好哥們聊天,聽到一個以字拼字,以圖拼字的好點子,於是乎搞了個:文字魔法師 - pc6下載站
大學那會,為了解決俺的破鍵盤沒有多媒體鍵的問題,做了個多媒體鍵盤模擬器:
源碼地址:stanzhai/MediaKeyBoard
08年左右還流行同學錄,就做了個電子版的(不知道現在的小朋友還用不用這東西):
源碼地址:stanzhai/Classmates
大一下學期,幫師姐做畢業設計,開發的一個多媒體播放器,支持音樂,視頻,和圖片的播放,還支持錄音,復讀功能。為了看起來專業,還做了個安裝包。還手寫了一份使用說明文檔,沒錯,是手寫(⊙﹏⊙)b
寫個俄羅斯方塊遊戲給自己玩(做遊戲真心不易,折騰了整整一個寒假,看似簡單的遊戲開發起來好複雜:方塊變換、碰撞檢測、消行等等):
受到俄羅斯方塊的啟發,做了個用方塊拼字的屏保:
惡搞同學,整了個QQ消息自動發送工具:
搜個東西不方便,於是做了個小工具,不用手動切換搜索引擎了(可惜現在谷歌和迅雷都用不了了):
電腦總有些文件不像讓他人看到,做了簡易的資源管理器,查看特定文件:
登錄QQ太麻煩,整個自動登錄器:
想了解下截圖軟體的工作原理,於是開發了個:
總覺的系統自帶的圖片瀏覽器缺點啥,於是自己又搗鼓了一個:
和楊釗同學參加比賽,用C++做的通用瀏覽器插件框架,這東西有些像Flash,只不過Flash用的AS腳本開發運行swf,我們用的C++開發運行dll。也是大學期間最有成就感的項目之一,這貨對於大一的我們來說做起來實在太難了,不過,歷經艱辛,我們還是把他搞出來了。楊釗同學在這個框架上實現了一個俄羅斯方塊遊戲,這是IE的效果:
這是Firefox的效果:
楊釗同學的數碼相機摔壞了,拍照的時候只能倒著拍,拍的所有照片都是倒著的,需要旋轉後才能看,一張張的折騰太麻煩了,就開發了個這麼個小東西,對圖片進行批量處理。其實我最常用的是壓縮功能,數碼相機拍出來的照片太大了,用它批量壓縮一下還是很方便的。
大二元旦晚會,為了體現我們班元旦晚會的專業性(實際上就是為了達到類似央視春晚的大屏幕顯示效果),做了個投影儀導播系統:
MP3打開大點的文本文件太卡,於是做了個文本文件分隔軟體:
覺得自己記性差,假期做了這個么小東西:
浩哥大學期間搞在線賭博(當然浩哥現在已經從良了,這個網站也用不了了),幫忙做了個專版瀏覽器工具:
09年附近,Autorun類型的U盤病毒橫行,搞了個U盤病毒防護精靈給同學們用(自己人做的,用著放心啊):
為了讓U盤的文件夾顯得與眾不同,搞了個:文件夾美化大師
期末考試,安排考試座次是件麻煩事情,給輔導員開發了一個隨機打亂座次的軟體:
打算練手做做網站,剛好系裡缺個主頁,於是就有了:
班裡舉行辯論賽,搞了個辯論賽計時器(後來其他院也用上了,小有成就感):
一度使用宇宙第一IDE,VisualStudio,總想在VS上加點自己的功能,於是給VS開發了用處不大的插件(可以方便的在代碼頭部添加註釋):
快要交作業了,有門課比較無聊,我們大部分人的作業都是從網上扒的,跟好基友楊釗聊天,聊到老師可能會看文件的創建時間及修改時間,後來聊到應該可以調用系統API改這些信息,過了幾天,我激動的找到楊釗同學,他見到我說要給我看樣東西,我一看他也開發了個修改文件時間的工具,這正不是我想給他看的東西么,實在太默契了,他用C#,我用VB,用了相同的時間,實現了相同的功能:
曾經搗騰Win32API,把自己XP系統的開始菜單弄成了窗口,可以拖著開始菜單滿屏幕的晃了,我發現自己實在太無聊了:
10年,也就是Android開始火的那年,參加移動搞的百萬青年創業大賽,利用課下時間,花了一個月開發了一個Android五棍棋遊戲,[MM百萬青年創業計劃全國評審入圍作品]五棍棋。可惜的是被移動給坑了,當時給遊戲加了個時間限制,比賽結束後無法啟動,誰知移動將比賽延期一個月,真尼瑪蛋疼,提交的作品也改不了了,最後也沒拿獎/(ㄒoㄒ)/~~。遊戲最複雜的地方在於人機對戰AI、聯機對戰,這個遊戲AI部分還要感謝周昊師哥前期辛苦付出,當然還有美院的李美婷師姐提供的設計支持,對了,還有董兆安老師的指導。
11年的時候,還給學校搞過一個「儒風海韻」社區網站,可惜的是,很快就畢業了,沒用上。這個項目也多虧了楊釗、劉新宇、祥子、小白同學的幫忙,還有王連華老師提供404實驗室供我們一起編碼:
WindowPhone剛推出時,.NET社區還是比較火熱的,我也參與了一把,做了個Metro風格的博客園客戶端(哎,不給力的WP啊,可惜現在算是徹底失敗了):
==================== 風格要變了 ====================
畢業以後,也很少折騰桌面應用了,自己大部分的精力主要在後端,除了Web系統,做的都是些看不見摸不著的服務。
13年在淘寶上淘了個IBM的屈蹲彈簧軸式機械鍵盤,鍵盤很古老,手感超級好,可惜沒有Win鍵,當時公司要求離開工位必須鎖屏,也就不能使用Win + L鎖屏,我為了效率,能用快捷鍵的絕不用滑鼠,於是自己做了這麼個東西:
這個高大上的東西是用:超聲波測距模塊+Digispark做出來的(硬體成本在60左右),實現了我離開工位自動鎖屏的功能,連快捷鍵都不用按了!順便附上我那沒有Win鍵的鍵盤:
14年的時候,接觸了落網 - 獨立音樂推薦,喜歡上了落網推薦的音樂,但是落網的音樂不支持下載,用NodeJS做了個下載器:stanzhai/luoo-down
生命不息,折騰不止。如今畢業這麼多年了,回頭看看這些有用沒用的東西,發現自己還是大學的時候最能折騰,以此,紀念下大學的美好時光,多謝題主的好題目。
歡迎在GitHub上Follow@stanzhai (Stan Zhai)
------有更新啦,在最後哦--------
在高中的時候,當時還是編程小白的我收到了一損友發來的某「xxx.vbs」文件,文件名就不說了(自行腦補),我雙擊後彈出了一個窗口:請輸入「我是豬」。我當然不會輸這個,我輸了「你才是豬」,結果電腦就關機了。結果電腦就關機了。結果電腦就關機了。
當時的我一臉懵逼,這玩意兒竟這麼神奇!重新開機後我打開那個文件,放下我作為一個人類的身份,輸入了「我是豬」(對不起,給人類丟臉了),結果又一個彈窗:「豬是不會使用電腦的」。我點了確定,隨後又關機了。又關機了。又關機了。
嗯,這個文件成功勾起了我的興趣,我當時覺得特別驚奇,不是exe文件也可以直接運行真的好神奇,我默默地右鍵&>打開方式&>記事本,看到了這些(自己根據其邏輯儘可能復原的):
dim pig,close
pig=inputbox("請輸入我是豬","系統提示","在這裡輸入")
set close = createobject("Wscript.shell")
if pig="我是豬" then
msgbox("豬是不會使用電腦的")
close.run"cmd.exe /c shutdown -s -t 0"
else close.run"cmd.exe /c shutdown -s -t 0"
end if
大概就是這樣,即使對編程一無所知,我還是大概腦補出了它的邏輯,從它開始,我走上了programme的不歸路。。。
我開始瘋狂地尋找類似代碼,漸漸熟悉了一些vbscript的語法,創造出了一大批類似的腳本,隨後成功地坑了更多的人。
一次,我一朋友跟我說,能不能想個辦法讓他的弟弟別在電腦上玩某大型遊戲,會影響學習(我猜是不讓他弟和他搶)。我想我的這項技能終於能有一個正經的用途了。
kill v1.0:
dim a
a=MsgBox ("出於安全考慮,本機已禁止該遊戲運行",VbExclamation,"系統警告")
就兩行代碼,之後需要設置一下,把這個vbs文件放在一個只有自己知道的位置,複製為路徑,然後在桌面上找到遊戲的快捷方式,按住alt雙擊,把目標粘貼成vbs腳本的路徑,大功告成。
我拿QQ舉例:
就這樣,然後雙擊修改過的快捷方式,彈出以下窗口。
第一代只發揮了幾天的作用,死亡原因是遊戲被重裝了一遍(這告訴我永遠不要低估一個渴望玩遊戲的孩子)。
為了補上這個bug,kill2.0橫空出世(依然拿QQ做例子):
2/19修改:經 知友指正,第九行原來的「ingetobject」改為「in getobject」,當時排版時不小心刪掉一個空格,導致無法直接運行,現已更正。
dim fso,ws,pt,msg
set fso = createobject("scripting.filesystemobject")
set ws = createobject("wscript.shell")
set file = fso.getfile(wscript.scriptfullname)
pt = ws.specialfolders("startup") ""
file.copy pt
sub Close_Process(ProcessName)
On Error Resume Next
for each ps in getobject("winmgmts:\.
ootcimv2:win32_process").instances_
if Ucase(ps.name)=Ucase(ProcessName) then
ps.terminate msg=MsgBox("出於安全考慮,本機已永久禁止本遊戲運行",VbExclamation,"系統警告")
end if
next
end sub
do
Close_Process("qq.exe")
wscript.sleep 5000
loop
大概思路是:先把自己添加到啟動項里,保證開機即監視程序,之後每5秒執行一次Close_Process,如果發現有遊戲的進程則將其關閉並彈出警告。
雖然2.0版還是有很多bug,但是對付一個只會在電腦上玩遊戲的孩子來說已經足夠了。
過了一陣子,朋友說他弟弟天天吵著換電腦 (逃
好久沒用過vbs了,代碼可能很亂,不規範,大神請輕噴
--------------更新分割線--------------
經知友提醒,用鏡像劫持的方法會更方便,修改註冊表就可以達到類似甚至更好的效果
操作方法:新建一個文本文檔,打開後輸入下面的內容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsqq.exe]
"Debugger"=""C:\Windows\system32\cmd.exe""
之後保存,將文件後綴名改為「reg」,雙擊運行,就會添加相應的註冊表值,這時再雙擊QQ(又誤傷到企鵝了),彈出的不是QQ登錄窗口,而是命令提示符,其實可以把"cmd.exe"換成 「winmine.exe」 (win10以前的系統),這樣就會打開掃雷。這個方法有很大幾率被殺毒軟體解決掉,所以還原的方法也很簡單,殺一次毒就好了(因為這招已經被病毒們用的爛大街了),或者手動刪除註冊表裡添加的那些項。
某一天在使用Wolframe|Alpha的時候,我偶然發現了這樣一個頁面:
嗯,用一個參數方程畫出了愛因斯坦的簡筆畫。(還有超人啊 蝙蝠俠啊 太祖之類的曲線,有興趣的可以去找找看)
當時的我感到很神奇,直到我在不知道什麼地方亂逛的時候偶然看到了講解這類曲線的一篇文章,提到這種曲線是利用傅里葉展開繪製的。
然後醍醐灌頂的我就把這事完全忘了。
直到數年後偶然在qq群又看到這圖,這時的我已經被調教成了看到東西就會開始想原理的腦子。
然後我就打算自己寫一個能通過圖片生成這類方程的程序。
結果嘛……如你們所見:
嗯……Guda-Curve?
技術含量並不高,繪製出的曲線也不如Wolfram|Alpha上的漂亮,不過我覺得挺有趣的。
咕噠曲線解析式:http://pastebin.com/XFJSwgAC,有興趣的人可以拿其它軟體來繪製一下……
曲線範圍應該是0&
寫一點程序來折騰折騰圖片總是有趣的事情,至少可以做完了以後發給朋友炫耀一番。 不過大多數時候得到的回應都是,你用什麼P的? 呵呵,我是寫程序寫的!你才P圖,你們全家都P圖!#莫名其妙的優越感
最有趣的是當時在讀一篇講 image blending 的論文。說白了就是先把兩個圖片的 Guassian Pyramid 算出來,然後再出來 Laplacian Pyraimd算出來,然後在每一層把他們 alpha blend 在一起,再全部拼起來。我知道這麼說沒人聽得懂,廢話別多說,show me the code
Reduce
採樣圖片(4個像素點取1個)
convolve the image with given kernel
small = convolveResult[::2, ::2]
return small
Expand
擴展圖片(1個像素點擴4個)
initialize big as double size on both dimension.
big[::2, ::2] = image
convolveResult = convolve big with given kernel
return convolveResult *4
Gaussian Pyramid:
創建gaussian Pyramid,其實就是一層層採樣
set current to input image
loop until depth reaches
reduce the current
append reduce result to pyramid
set current to reduce result
return pyramid
Laplacian Pyramid:
創建Laplacian Pyramid,其實就是記錄每一層採樣中流逝的信號,以後還能加回來
for every level of input pyramid p
compute p[currentLevel] - expand(p[nextLevel])
append result to pyramid
return pyramid
blend
把每一層通過alpha blend,合起來,組成新的pyramid
for every level
get black, white and mask of current level
computer white*mask + black * (1-mask)
set the result as the level of return pyramid
return pyramid
collapse
把整個pyramid還原成圖片,大功告成
current = last level image
loop from the last level to the second level
expand(current)
current = expand result + upper level image
return current
來看看成品吧
左邊右邊兩張圖,加上一張黑白的mask
黑代表選左邊,白代表選右邊,接縫處無縫連接,最後合成一張圖。
再來一個例子,沙漠和海底
合成一張海底沙漠
下面直接放成品了
不過你覺不覺得有趣,我反正覺得是蠻有趣的,哇哈哈。
感謝@Walker同學投稿~歡迎各路同學交流!
雖然現在的我已經基本上可以熟練使用五六種語言寫簡單的遊戲..
但我依稀記得小學五年級時用ppt寫的遊戲...如今已經找不到當時那個文件了
只依稀記得 原理是這樣的 ppt2003的時候 可以添加一些自動上下 左右滑動的方塊 然後如果滑鼠碰觸到滑塊可以有響應跳轉
所以我就做了個 迷宮遊戲 鍛煉手活也就是布置一堆滑塊 密密麻麻的 需要小心翼翼才不會碰到它們 碰到了就自動跳轉到一個 上面有四個大字的頁面 :挑戰失敗...
實現了今年的一個siggraph論文,能把手繪材質轉移到3d渲染的圖像上
目前還在調參中
本科的時候因為學的是計算機又在學校的計算機協會,很多同學找我修電腦,而且多是妹子,然而妹子遇到的問題通常都很boring……索性重裝系統解決,沒啥技術含量,純粹重複勞動……
重點來了……由於找我修電腦的妹子實在太多……那個時候還沒有SSD和USB3.0的U盤,裝個系統一下午就沒了還要留我吃晚飯什麼的,這嚴重耽誤了我寫代碼和踢球的時間,本著只修電腦不過夜的原則,為了儘可能減少給妹子修電腦花的時間,我先後做了兩個小程序來完成XP和Win7系統的一鍵封裝及部署(可以預裝好常用軟體並且可以任意指定部署階段執行的任務),其中Win7的一鍵封裝程序應該是全國最早的,這個軟體還得了個小獎 。
結果就是,我每次不到半小時就能給一個妹子修好電腦,不用耽誤時間陪妹子閑聊也不用吃飯更不會發生過夜這樣的事情,我的學習效率大幅提升,終於可以盡情暢遊在技術的海洋里,順利的一直讀到了博士,而且沒有女朋友。13年微信在裡面引入了兩個遊戲,《天天愛消除》和《打飛機》。
剛出來的時候大家好像熱情都很高,每天拼了命的玩兒,想盡辦法讓自己的排名更高一些,那段時間好像業餘時間都給了《天天愛消除》這個遊戲。
因為相較於《打飛機》而言,《天天愛消除》這個遊戲的運氣成分可能更多一些,運氣好一些的時候可以把排名升的比較靠前。後來發現每天都花大量的時間在上面有些玩物喪志,就想著做一個外掛幫我打好了。
於是在某天回家後寫了幾小時的代碼,總算打爆了好友排行榜……
實現方式很簡單粗暴。
1.電腦上安裝安卓模擬器,因為安卓的手機非root的狀態下,並不能夠很好的實現截屏功能,而用模擬器的話可以直接截取屏幕的圖像。
2.截圖下來後,將裡面的每一個圖標的元素都抽離出來。處理的方式也十分簡單,每一個圖標我們取五個像素點來確定它的唯一性。然後將相應圖標的編號填入到二維數組當中。
3.最後計算一下數組當中每一個元素上下左右的圖標的個數,優先交換能消除元素個數多的元素。然後模擬點擊事件,快速點擊屏幕就可以了。
一開始我怕模擬器的性能不足,點擊了一個圖標後,隔了10毫秒,再點擊下一個圖標。於是就有了下面的結果。
看到這個分數有零有整,我發現這個好像還能提升,所以我把10毫秒的限制去除,於是就有了,這樣的結果。
限制去除後,實際上已經跑到了300+萬分,但這個遊戲的上限好像只有250萬分,於是我穩妥的佔領了好友的排行榜第一名。
達到孤獨求敗的境界後,內心感到無比的空虛,再也沒有碰過這個遊戲。
請大家遠離外掛,享受遊戲樂趣。
--------------------------------統一回復一下評論區的問題------------------------
1.能不能開源呢?
不是不能開源,而是代碼13年寫的,已經找不到了(╯‵□′)╯︵┻━┻。而且評論區有同學指出現在已經不能在模擬器上登錄微信了,所以即使代碼在恐怕也不好用了吧。具體實現方式就是答案中的方式。暴力點擊而已,沒什麼技術含量。
2.是用什麼語言寫的?
用Java寫的,模擬滑鼠點擊事件,按照答案中的演算法不斷點擊模擬器屏幕罷了。
大概7年前吧,2010年前後,那時在微軟閑得蛋疼,業餘時間做了個打坦克手機小遊戲,叫戰火坦克。自己設計的玩法和武器敵人系統。先在Android上開發,那時安卓好像剛發布還是1.6版本,很不成熟,上面沒什麼像樣的遊戲,也沒有什麼遊戲引擎,完全自己從零開始實現繪製渲染和遊戲邏輯,看了一天開發文檔後開干,自己一個人策劃美工加編程,一兩周出第一個版本(真的是業餘時間,在公司基本沒幹,只是考慮些設計和編程實現),迭代了十來個版本吧(後來的幾個版本主要是加廣告… 慚愧慚愧…)就不管了。這期間還移植到iOS和WinPhone,也是看了兩天開發文檔從零開始,因為語言和平台完全不同,說是移植其實就是重寫,只有遊戲架構設計能夠重用。還寫了一個地圖編輯器,可以很方便生成關卡地圖。
那時硬體性能不行,為了在普通機器上運行做了些優化,放到三四年前的手機上CPU佔用率接近0,非常省電。
在安卓市場上發布後反響不錯,很多下載,高峰時期每天有幾百萬人次玩吧。2010年尾換公司了就忙起來不管了,兩三年後每天看廣告統計還有幾十萬人次在玩呢,感覺放棄有些可惜了。總共廣告收入有個大幾百美金吧,記不太清了雖然錢不多,但還是挺有點成就感的。
寫個回答,紀念一下過去的這段時光。
附圖,自己寫的圖文並茂的幫助文檔,因為當時主要針對歐美市場還做了英文版。
(地圖上的元素都是可以帶動畫的,自己實現的動畫系統。)
感謝 @卷餅艾特葡萄 提供的下載地址,居然還能玩,剛開始推薦wooden world small地圖,地圖小出現的獎勵好找
http://m.mdpda.com/app/apk1782788.html
發現這個版本有點舊,有點bug,有個高級武器也沒有。
ps. 評論里看到有十個老用戶 (?????)幫哥們兒藏黃片,可能是我寫過最有意思的一個程序了。
當時上大二,平時沒事就喜歡搗騰電腦,尤其是對腳本很感興趣,作為一個飛行器相關專業的同學,我可能是在這幫會打飛機的朋友里最會修電腦的了。然後某天,一個哥們跑過來說,我女朋友生氣不讓我看黃片,沒事總檢查我電腦,能不能想想辦法啊?
在這種關乎民族大義和個人幸福的問題上我一向是不會含糊的,所以經過幾個晚上的奮戰之後,寫了這個腳本給他。
原理很簡單,就是利用當時Xp系統的一個文件夾漏洞,後綴加了..字元以後不能雙擊直接打開,以及在文件夾加特定後綴以後將文件夾偽裝成網上鄰居,控制面板等等系統文件,雙擊打開看不到裡邊真正內容的,雖然很簡單,但是也足夠了。
打開以後是這個樣子的,不要問我下面為什麼加那一行字,可能是因為傻逼吧。
回想起來這件事,我只想說:
藏你妹的黃片啊,她是生氣你不跟她一起看好嗎???
-------------------------------------------------
卧槽一天沒來好多評論不能一一回復,謝謝各位。
沒錯是我瓜大,那哥們兒跟女朋友已經結婚,孩子都有了。
我?
我不需要藏啊,因為連個女朋友都沒有。#別說了我特么也很無奈#
用Unity 3D寫了一個AR(增強現實)的傢具小應用。因為很喜歡家裝領域,而自己一直都在租公寓+經常搬家,所以很難有機會去買很多好看的傢具/(ㄒoㄒ)/~~。(程序媛本來就不需要太多家具有木有)。
於是,我就很閑的做了一個AR傢具的小應用,這樣就可以把傢具投影到家裡啦。少圖預警,比如花:
比如電視機和電視櫃(哈哈這個只是做著玩的)。
當然少不了各種畫:
黃色的小椅子:
深色的咖啡桌:
=========================== 分割線 ========================
謝謝小夥伴們的喜歡,更新一波新傢具:藍色沙發
紅色皮沙發:
紅色皮沙發の側寫:
檯燈:
柜子迷之出現在電腦前面:
這樣增強現實了之後,以後朋友到我家來,我就會讓他們掏出手機,然後就可以看到裝修過的我家了(⊙﹏⊙)b。(好吧,我知道這樣很懶)。
因為才開始做這個應用,所以還沒有很多3D模型。如果以後放了更多傢具,我會來這裡更新答案的。(⊙v⊙)嗯!感興趣AR的小夥伴,大家可以一起交流。
最後,另附一張新年快樂,Happy Rooster Year!1.群蛇爭食
初中的時候學會了 C++ 編程,當時經常宅在家裡,於是無聊的時候就寫了各種各樣的程序,比如四則混合運算計算器、貪吃蛇、俄羅斯方塊之類的。然後暑假有一天突發奇想,在貪吃蛇的基礎上設計了這樣一個遊戲,命名為「群蛇爭食」:
(我承認界面很醜……)
規則大概就是添加了好幾條蛇,然後讓它們互相競爭。撞擊其他蛇會使對方變短,如果對方沒有長度了那麼對方就輸了。成為唯一一隻存活的蛇即為勝利。當時開發大概用了一周的時間(因為是初學編程,所以大部分時間都是在調試各種奇怪的 BUG……)。
遊戲中除了玩家控制的0號以外剩下的都是電腦玩家。電腦的策略非常簡單,就是隨機地在「無視」和「仇恨」之間改變對其他玩家態度,如果態度是「無視」就把對方當成障礙物,如果態度是「仇恨」就把對方和食物同等看待,然後用最短路演算法向最近的「食物」移動。
後來到了高中,這個小程序在同學們之間傳播開了,有一段時間大家總是在上信息課的時候沉迷於這個遊戲。於是我就把程序移植到了 iOS,發到了 Apple Store 上(說是移植,其實是用 Objective-C 完全重寫了一遍……)。另外移動版還加入了多人模式,如圖,每個顏色的區域用於控制對應顏色的蛇。
大家想玩的話可以去 Apple Store 里搜索一下「群蛇爭食」。安卓暫時不支持,不過下一個版本我計劃用 HTML5 開發,到時候理論上大部分智能手機和電腦都能用了。
2.微信狼人殺面殺法官
這是我最近做的一個 Python 程序。寫這個程序的原因是,我們班非常喜歡玩狼人殺,之前一直用「狼人面殺助手」當法官,不過最近這個應用強制我們更新,有幾位同學在更新過程中出現了各種各樣的問題,導致我們無法開心地玩耍。於是我就花了一周多的時間自己寫了一個類似的軟體,這樣就能擺脫那些商業化軟體的影響了。
最初的版本用起來非常麻煩,需要每個人都安裝 Python 才能運行客戶端。後來我看到了 itchat 這個開源項目,於是靈機一動,利用 itchat 把程序改成了一個微信機器人。這樣只要伺服器有 Python 就可以了,沒有安裝客戶端的麻煩了。效果大概是這樣的:
伺服器會播放錄音來提醒睜眼,然後用微信引導玩家進行操作。
目前實現的身份有有平民,神陣營的預言家、女巫、守衛、獵人、白痴,以及狼陣營的白狼王、狼人。另外,白天法官還能主持警長競選和投票。至於系統要求,由於是 Python 寫的,所以理論上 Windows, Mac 和 Linux 都支持。具體的使用方法可以看項目的 README 文件。
源代碼我已經放到 GitHub 上了,大家可以根據說明文件安裝使用,甚至在閱讀代碼後自行編寫新的身份。我開始開發的時候就考慮到了開源,因此寫的時候還是比較注意擴展性和可讀性的,不過還是有很多地方不太規範,而且由於時間原因也沒有進行大規模的重構。如果用的人多的話,我還會繼續完善這個程序,也歡迎其他編程愛好者參與進來。
GitHub 鏈接:LouYu2015/WerewolvesWechatBot
=========== 2017 年 5 月 6 日更新 ============
3.模擬羽毛從太空中「飄落」
前幾天看到了一個問題,問的大概是如果一根羽毛從太空中釋放,那麼它會慢慢地飄下來還是在墜落過程中燒毀。於是我根據物理知識寫了一個 Python 腳本進行了簡單計算。我在回答里描述了我的思路和結果:
把羽毛從太空扔下,會被燒毀,還是飄落到地上? - 知乎高三菜雞強答一發
高二的時候學java,然後自己做了一個五子棋遊戲以及一個五子棋AI。。基本界面如下(完全不懂圖形界面)。
其實就是用一維數組組成的一組 JButton拼湊出來的棋盤,棋盤的每一個格子都是一個按鈕,第一次點一個按鈕變成黑棋,第二次點另一個按鈕就變成了白棋(點過一次的再點沒用),對於這個我的思維是,黑棋的回合,切換到白棋的回合,在黑棋的回合中點任何按鈕都會出現黑棋。遊戲有多人模式,也有單人模式(打AI)。
五子棋AI也是非常簡單的AI, AI只能操控白棋,也就是只能後手,然後基本只知道堵人,偶爾有一下進攻。親測跟學校的人對戰,這個AI可以完虐初學者,但是遇到那種用黑棋先手必勝的人就不可能贏了,因為沒有禁手。上圖所示是我與AI瞎玩,你可以發現基本AI的主要套路就是堵。
我還設置了一個算是彩蛋的東西吧,打AI選擇難度的時候選以我的名字命名的難度等級就是真正的AI,如果選「神」的話,就是AI一來就下五個白字直接勝利,如果選「菜雞」的話電腦隨機下子,最開始有個新手同學下菜雞難度,直接贏了然後罵我做的什麼垃圾玩意。。
這個程序總共1100多行,代碼寫的很亂。不過做完還是很有成就感的,畢竟點子都是自己想出來的。
看見有朋友問怎麼實現界面和Jbutton排版的。我在這裡貼一下吧(非常簡單)。。
這個colorButton是我extends JButton的一個類。p是一個JPanel,我用一位數組直接代表每一個按鈕
p.setLayout(new GridLayout(16,15));
for (int i=0; i&<225; i++){
guess[i]= new colorButton();
p.add(guess[i]);
}
再附上幾張圖:
這是勝利提示
這是選擇難度的
這是隨機決定先後的小功能
如果不選擇難度(點cancel)就是這樣的:
還做過一款用來打遊戲王的小工具
主要就是有加減血量,決定先後(剛開始會讓設定兩個玩家),擲骰子,擲硬幣,和戰鬥日誌,就是一個可以記錄誰打了誰,扣了多少血,投了硬幣沒,然後一輪遊戲結束後戰鬥日誌會自動輸出成一個文檔,文檔可以保存到本地。
因為最近和朋友吃飯,大家都到了大三季,都在糾結自己該以哪裡作為自己職業發展的起點?
也想看看自己的背景,能不能找到靠譜的師哥師姐幫忙,那麼師哥師姐都在哪裡發光發亮呢?
我當時也是午休的時候想到,知乎有那麼多結構化的好的數據,不如抓取之,拿來分析
可以看看名校生們都在哪?
我們行業的人都喜歡哪,哪裡每年帶走一堆人?
然後花半小時寫了個多線程爬蟲,爬下來幾百萬數據(其實是我爬的太猛。。。爬到幾百萬被知乎封號了。。。誰有多的測試號的話可以給我一個)
好的,我們先來看看結果
首先是清華大學的優秀畢業生都去了哪?
接著是北大的
接著我很多兩財一貿的同學,我想知道他們會去哪?
接著我旁邊很多兩電一郵的朋友
復旦的畢業生呢?
上海交通大學的同學呢?是霍格沃滋么?
再看看人民大學的,人民大學的朋友也很多
南京大學的朋友呢?
浙江大學的朋友呢?
中科大呢?
以上的都是學校的,納悶想看看那些有名的公司都招了哪裡的人,去了那些公司我們會遇到哪些學校的校友呢?
首先是BAT
接著是北美FLAG
然後我很多去四大的同學,他們那裡都喜歡收什麼人呢?
那麼諮詢行業呢?
最近大三認識特別多學經濟金融的同學,他們會去哪呢?
那麼我那麼多學法律的同學呢?
這次抓取的數據量有將近200萬,跑了一個下午,然後我把沒有公司或者教育學校的篩掉,就還剩25萬了
拿來公開的,有興趣的朋友可以自己玩玩,我給的是CSV格式,如果excel打開有亂碼,自己百度怎麼辦
https://pan.baidu.com/s/1ceuBjK
我這裡已經有寫好的爬蟲,之後還會爬取,但是賬號暫時被封了。。。。。
誰有測試賬號可以給我一個2333
想要全部數據的也可以私信我~
另外,好內推的可以隨時私信我~
本人程序員,由於經常在各種軟體之間來回切換,尤其是終端和其他軟體的切換最為頻繁。
於是就動手寫了這麼個軟體,為每個軟體設定好默認輸入法,當切回到某個app時就會自動根據設置切換輸入法。
這個軟體解決了我每次回到終端不知道是中文輸入法還是英文輸入法的迷茫的問題,減少了每次重複切換輸入法的操作。
這個軟體對絕大部分應用是有效的。
下載地址:GhostSKB 根據應用切換輸入法
--------補充回答(20170709)---------------
1. mac有個自帶的功能是「自動切換到文稿的輸入法」
但有時候這個文稿的輸入法不一定是自己想要的。
所以用GhostSKB的時候最好把這個取消勾選,避免詭異的表現。
2. 有的輸入法自帶了GhostSKB這個軟體的功能,比如搜狗。畢竟大家用各種個樣的輸入法,所以GhostSKB相當於一個橋樑,它不關心你用那個輸入法,也不關心你使用什麼程序,只要設置好默認自動切換就好了。
3. 另:有些軟體自帶了輸入法管理,比如Mac上最新版的Microsoft Office, 還有一類軟體是GhostSKB監聽不到它的消息比如Alfred 3. 這兩類情況是GhostSKB沒法解決的。也如上所說:對絕大多數軟體有效。
-- 更新:20170905---
新版本1.6.6 已經修復了word 等應用的切換失效問題。
更新:內容在後面。
————————
唔..筆者目前初三,面臨中考壓力不小不過還是堅持開發.
小學三年級第一次接觸C,當時有本書叫《啊哈C》來著,靠這本書入了坑(這本書不錯,如果想入門可以看看)。
四年級知道了有個東西叫做VB,當然,是VB6.0。正好數學學了雞兔同籠,寫出來第一個解雞兔同籠的程序,很興奮,也很有成就感。
五年級,知道了VB. net,慢慢的開始學習.net裡面的各種模塊,不停做些自己認為有意思現在看來很xx的項目,不過在做這些項目的時候踩的坑也造就了現在的我。
六年級,做了個自己寫的加密演算法(很簡單的ASCII碼移位加密),當年自覺很有意思
初一,軍訓的時候帶著個本子整天寫偽代碼還有結構思路,被當做sb。。後來學習了C艹,但是畢竟水平限制,放下了,同時VB. net的使用已經越發熟練
初二,知道了神經網路,做出了自己的封裝庫"INeuron",基於.net平台下的"aforge. net開源項目"。能實現一些簡單的應用,不過做圖像方面的處理就心有餘而力不足了(因為這只是普通的bp神經網路,網路層數大了跑起來很慢,收斂幾乎不可能)
初二下,開了個坑,做了個氣象軟體,主要是集成了各個數據源的衛星雲圖數據,現在還在更新(後面有Github鏈接以及圖片)
初三,開始學習Python,彷彿發現了新世界:VB算個球!簡潔的語法驚呆了我。。於是三天就幹了第一個Python爬蟲(原來在.net上做,效率很低),爬豆瓣的電影數據,做些數據分析。
目前正在學習keras平台的使用,一直在做關於深度學習方面的研究。有興趣的可以看看我的文章:
關於人工智慧,人類沒什麼好擔心的
知乎專欄
以及我的Github主頁:
https://github.com/a2010115
FlySatelliteWeather3.0
https://github.com/a2010115/FlySatelliteWeather
——————————————————————
更新:豆瓣爬蟲寫完了
目前爬蟲已經施工完畢,自己寫了一個主伺服器以及分散式爬蟲的客戶端。主伺服器和客戶端使用TCP進行通訊,效率不錯。一晚上的時間開了兩個進程爬到了1.3W條電影數據(詳細數據包括演員、標籤、評價等等。)
源碼在進行優化之後應該會放到GitHub,大家可以關注一下我的Github主頁~
——————————————————————
(手機打字,排版看著可能有些難受,見諒)
順便安利一下我的博客小站:http://artrix.tech
非典時在家辦(xiu )公(xi ),用delphi寫了一個自動完成掃雷的程序,初中高三級的最快紀錄分別是1秒,2秒,4秒。
十幾年前讀研時寫了個程序,一鍵把當前窗口隱藏,叫BossIsComing。
讀研時還寫了一個校內點歌台,用winamp的插件做廣播(大家聽到的是一樣的),校園網內可以訪問網站點歌,還允許大家上傳mp3供他人點播,硬碟很快就滿了。
幾年前還經常越獄ios設備時,寫了一個app,能瀏覽我們收集的破解應用,一鍵安裝。
現在代碼寫得少了,就寫了一個隨機生成加減法算術題的,虐娃用。。。
//補充,沒想到都是覺得最後一個有趣,其實這個最沒有技術含量。第一個最難,因為掃雷遊戲那些格子都不是按鈕控制項,需要通過像素去識別每個格子,還要推理,猜測,排除。點歌台那個運營比寫代碼更有意思。CG里用於編輯3D模型的Mesh Deformation,我實現了最基本的一版,基於Large Mesh Deformation Using the Volumetric Graph Laplacian [Zhou et al. 2005]的非volumetric部分,先show結果:
原始模型:
選取面部頂點向上移動並旋轉一小段:
解算後的模型在保證細節與其餘部位位置的情況下,頭抬高了一點:
更多編輯結果:
演算法還是很簡潔的,不需要rigging,就是解一個Poisson equation with Dirichlet boundary condition,不過為了解算方便以及robust,我們採用了linear least square的形式,這樣boundary condition也變成了soft constraint。就是說每個頂點有一個laplacian operator可以利用該頂點及其1-ring neighbor的坐標描述此處局部的幾何細節信息,我們要解的變數是新模型上所有頂點的坐標,那麼我們希望新的頂點的laplacian和原始模型頂點的laplacian儘可能相似(Poisson equation),同時希望用戶指定的需要改變坐標的頂點也盡量被滿足(Dirichlet boundary condition)。
這是我第一個自主實現的CG應用演算法,結果挺粗糙的,當時大三,現在回想起來,估計連translational part也一起帶著去乘原始laplacian了。。。不過這個程序也算奠定了我目前研究方向的選擇,同時也讓我明白數學在CG研究中的重要性。
想當年選擇CG純粹就只是因為它好玩,我沒有選擇掙錢超多的金融,也沒有選擇影響因子巨大的物理、化學、生物等,我只知道編程會給我帶來很大的成就感和樂趣,尤其是當運行結果是圖形圖像的時候。沒有要黑上述領域人士的意思,只是最近總是時常糾結於鈔票和影響因子,回想當年,不禁感慨。
——
由於本演算法對模型各部位的旋轉是預先插值計算好的,結果中難免有些不自然的地方。之後發表的As-Rigid-As-Possible Surface Modeling [Sorkine and Alexa 2007]將各離散點的旋轉也作為未知變數用alternating的優化方法給出了mesh deformation更加自然的解,受到領域內的廣泛關注與使用。我最近做的一門課程作業所練習實現的Subspace gradient domain mesh deformation [Huang et al. 2006]也引入了旋轉這一未知變數,並首次提出了在reduced space中用更強大的非線性能量函數和保體積限制條件來指導mesh deformation的過程。
推薦閱讀: