如何評價漫畫《NEW GAME!》中人物櫻寧寧的編程水平?

在漫畫中實習結束後,寧寧從零基礎開始學編程在目測不到半年的時間內不依賴遊戲引擎做出了有一定完成度的遊戲。如何如何評價她的編程水平(個人覺得很厲害,學霸+天賦)


半年在沒人教的情況下有這個水平算是不容易。指出後能立即判斷出這裡有重複執行也是好評,但是正職程序員是不允許出現這種低級錯誤的。

但她自己改成了這樣而不是簡單加上break糊弄過去,說明她比起修正更傾向於重新整理思路,這對於程序員是非常可貴的品質,大部分正職程序員都做不到這點,只有老油條(比如像我這種)才能意識到修正主義的危害。


但是說這麼多並沒啥用,畢竟這是個漫畫人物。而且這段代碼錯的比較不可思議,因為上面的循環並不是debuff扣血,而是通過debuff修正主角的傷害(增傷debuff),按初學者的思路是不會把傷害執行代碼放上面的(不直觀)。比較像是拿到下面的正確代碼後強行造的一個錯誤。

換成持續debuff扣血這樣的情景會更符合一點。


另外,僅僅是做出她那破遊戲本身並不需要多少學習時間,把語法弄會弄個一周夠了。遊戲的複雜度和難度呈指數關係,而她寫的代碼質量是超出她的遊戲需求的。

---------------


另外這裡你們想想就知道「BUG多」絕對不是程序員能力的體現好吧……措辭產生的誤解而已。


半年入門C++,而且編碼風格看起來不錯,很難得了。

仔細觀察的話,debuf那裡似乎還應用了一些設計模式……

以及,看起來寧寧應該是學完C語言之後(見第一季OVA)直接學了C++ Primer,在代碼中使用了C++11的新內容——不過她的程序似乎還在直接操作裸指針,因此毫無懸念地出現了二次析構的bug,於是就像動畫里那樣崩了……

對於遊戲編程的學習路線,可以參照 @Milo Yip 大大的這篇文章遊戲程序員的學習之路(中文版) - 知乎專欄

現在寧寧已經至少走完了C++ Primer的部分,計算機科學部分看了多少不清楚(不過至少Windows編程應該是已經掌握的了),可能掌握了一點設計模式的內容。


稍微看了一下,她的程序可能是這麼設計的:

建立了一個vector&m_debuffs,類型是debuff(可能是自己定義的工廠類),然後把所有出現的debuff都保存在這個vector里,受到傷害的時候遍歷一遍當前的m_debuffs然後依次疊加傷害,再根據疊加之後的傷害扣血。

不過這個寫法顯然是有一些問題的——與其一輪一輪地扣血,倒不如直接遍歷完m_debuff,算出一個最終的傷害值之後再直接扣血扣完了事。以及,動畫里寧寧說「一直在進行同樣的處理」,聽起來有點像是初學者經常犯的for循環遍曆數組時,寫錯數組下標的錯誤——然而實際上寧寧使用的是C++11新提供的基於範圍的for循環,整個遍歷過程是自動進行的,顯然不可能存在下標之類的問題……

並且海子一上來就找出毛病在哪了,連象徵性的調試都不搞一下……這個也太誇張了。上了規模的C++程序要調試其實是很麻煩的,這個小遊戲的代碼量顯然不小——尤其是從左側的Solution Explorer可以看到寧寧自己實現了一個簡易的引擎NeneEngine,總代碼量不會太小,可能出bug的地方也肯定不只是遊戲的邏輯部分。

最後,人生苦短,少女你為啥不直接用C#啊……

PS:寧寧醬太可愛了~~

PS2:這集海子吐槽了改需求哈哈哈哈哈哈哈……果然產品狗是程序猿的天敵……


雖然沒寫過遊戲,但感覺這裡的設計有點奇怪

每次重新根據 debuff 計算傷害,那豈不是 debuff 遍歷順序不同最終傷害也不同了?

例如:debuff_a 是把傷害 * 2,debuff_b 是把傷害 + 1

假設初始傷害值為 4,按 [debuff_a, debuff_b] 的順序計算最終傷害值為 9, 按 [debuff_b, debuff_a] 的順序計算最終傷害值為 10。按理說這是不該出現的情況。

當然海子說的也沒錯,直接問題肯定是 DestroyMe 執行多次導致的。不過如果能多看一點那就更好了。

最後

請貴公司務必一定繼續保持這種招人風格。


看了Windows遊戲編程大師100頁的路過....
雖然這個破遊戲很粗糙,但是比我之前拍胸脯說要造個鬼泣出來結果還是玩鬼泣比較舒服強多了。。。



光自學c++就不是一般(接近)零基礎的人能做得到的。能把風格寫這麼好也是很厲害。


還真你么與時俱進用的IDE居然是vs2017


突然有好多人回答這個問題。。。。才發現原來newgame第二季已經開播了


其實這個問題我是在newgame第一季完結之後漫畫補完後提出來的,漫畫里沒有動畫里那麼具體的代碼片段,單從學習時間和成品看來,我覺得寧寧的天賦是比較高了


就看到了生命值低於多少就自殺


半年?給我也就能看完當初入門在圖書館隨便找的這本書。


推薦閱讀:

如何通俗的理解機器學習中的VC維、shatter和break point?
為什麼有些編程語言的數組要從零開始算?
前端開發中有什麼經典的輪子值得自己去實現一遍?

TAG:漫畫 | 編程 | ACG | 動漫 | NEWGAME! |