如何用C++寫一個簡單的小遊戲?

恩沒錯其實是這樣的。我是大一的學生,這學期計算概論的課期末的大作業就是自己做一個黑白棋的遊戲。由於我實在是不知道怎麼從我們這樣一開始學C++到能做一個像平時玩的一個簡單的遊戲。希望能知道我如果要做這麼一個事要自己去學什麼東西。要怎麼入手?


首先我分析下你的問題:

「怎麼從我們這樣一開始學C++到能做一個像平時玩的一個簡單的遊戲」

「從我們這樣一開始學C++」 

這是你的現在狀態,那麼我假定:你還沒有C++入門咯,或者C++剛完成「理論部分」

其實第一個答主,

Clones

這位同學說的是調用遊戲引擎和圖形庫去開發遊戲,我覺得題主還沒有達到這個水平,所以我暫時不和你說一些圖形庫和遊戲引擎。

我認為你是剛入門。(如果我理解錯了,請糾正O(∩_∩)O哈!)

「能做一個像平時玩的一個簡單的遊戲」

我不知道咯租戶對於這個「簡單的遊戲」是怎麼定義的?

1.

黑窗口的貪吃蛇你玩過沒?

(你懂黑窗口吧,就是cmd菜單,就是你第一次輸入"hello world"那個黑黑的窗口,學術名:控制台程序)

聽懂了嗎?

2.

或者說,你所謂「簡單遊戲」,是電腦上的「拳皇「,」合金彈頭「,這些單機,

或者一些更炫的桌游或者,現在很流行的擼啊擼這類網遊。

3.

或者說,你想要的是安卓手機上,社么」2048「 "天天酷跑 " "3D飆車"

*********************************************************************************************************

這三類都是遊戲,所謂"簡單",我覺得不好理解。

我建議樓主以後問問題的時候,可以打個比方,舉個詳細的例子,否則他人無法理解,你到底想要什麼?

*********************************************************************************************************

言歸正傳,我上面標記為1的是樓主必須要會的,就是你如果想做2,3,這種類型的遊戲,第一步

1代表的控制台程序必須要會。

這些遊戲,比如 "貪吃蛇" 」俄羅斯方塊「 」飛行器「

這類控制台的遊戲,雖然無趣,但是如果你想做一些看起來很炫很艷麗的2,3類遊戲,相信我,你控制台這關,最好是認真做完。

這類遊戲,你可以去圖書館借一本 」C語言課程設計」

這本書真的認認真真學完,敲出每一行代碼,你的面向過程編程能力,基本可以放心了。

有什麼代碼細節搞不定,上 CSDN, 博客園,overflow 去問,去發帖問。

問百度。

翻牆問谷歌。

但如果是架構上的問題,問老師吧或者一些 "真的很" 牛逼的學長。

不要急躁,打基礎這一步,千萬不要跳

完成這一步,第1類遊戲相信,對你來說不在話下,更重要的是,你的C語言功底絕對會有一個很大提升。

****************************************************************************************************************

第二,當你第一步完成了,1類遊戲搞定了,那我就可以告訴你,第二類遊戲,會接觸4個概念:面向對象編程OOP遊戲引擎可視化編程GUI(圖形界面)

這個時候C++的確可以做,一些簡單的帶圖形的遊戲。

至於用了啥技術,你把我說的下面這本書看一下,就都知道了,碼字好累。。。

比如,你能力夠,完全可以把 合金彈頭 那種遊戲,或者 手機上 天天酷跑 這些遊戲移植到windows上來,只是你至少要去圖書館借一本書:

當初我倒是做過一個 坦克大戰的windows版。可惜源碼已不知所蹤。

你可以百度試試有沒有寫好的源碼。

這本書當時我是下的pdf版,如果嫌棄太老了,你去圖書館借一本和這本書類似的吧,推薦我就不了,其實我也就完整看了這一本,我覺得對於初學者,夠了。

至於第3類,那是安卓程序,所以,你至少需要再學一門java,它不是C++能搞定的,

然後再百度 「安卓開發入門」

然後再百度安卓遊戲開發

之後,等你搞清楚什麼是安卓開發的,搞定java基礎,對OOP有一點實戰經驗,

而且決心做安卓,再去做 社么 「天天酷跑」子類的遊戲吧、

*********************************************************************************************************

我也不是專業做遊戲的,也就大一做過一段時間,玩過MFC,我覺得吧,做遊戲最主要是遊戲引擎要玩的好,其他的都是浮雲。

希望你按照順序學東西,不要嫌棄黑窗口,先打好黑窗口的基礎。

學東西一定要踏實,穩紮穩打。

學東西一定要踏實,穩紮穩打。

學東西一定要踏實,穩紮穩打。

我的答案,其實也就是一條路線了吧。

詳細術語的描述,等我下次再來改一下,碼字多了,累了。

希望對你有幫助。


我們平時玩的遊戲需要圖形介面在顯示器上繪製

3D遊戲一般使用Direct3D或者OpenGL,2D遊戲也有貌似有SDL、Direct2D等。

一般你需要通過所在平台(比如Windows)的桌面介面創建窗口,然後用這些圖形介面提供的函數去畫窗口裡的內容。(有一些也提供簡化快速的方法,比如GLUT就有創建窗口的函數,而且是跨平台的)

至於黑白棋,在命令行里一行行畫字元圖也可以顯示,通過輸入命令下棋,每一步之後刷新顯示;或者用GUI庫在窗口裡擺放按鈕,按鈕上放上不同的顏色也可以了;或者用圖形庫去畫棋盤、棋子。

上述的東西都可以用C++去實現,但是具體怎麼使用這些庫,以及怎麼實現遊戲的邏輯,就得題主自己去鑽研了~


客戶你好,請問怎麼開發遊戲呀!


既然是要能玩的,那至少要有個界面,有按鈕,有開始、暫停、設置、聲音、退出等選項,這個有很多庫或方法可以實現,如QT,OPENGL等,最簡單的是WIN32 SDK或者MFC。有C++基礎的話去學MFC吧

有了界面後就剩下邏輯了,做一個標準的遊戲還是有很多專業的術語(技術)的,如幀、腳本等,涉及的技術很多很多,這個要學起來不容易,最好是去公司邊做邊學。

但是,要做一個像俄羅斯方塊、貪吃蛇什麼的,還是很easy的,用一個定時器就全部搞定。等學了界面開發,隨便搜一下教程都一大堆


想當年文計幾乎沒什麼基礎去學了JS,前面覺得寫寫html也就算了。後來作業竟然是做個五子棋的遊戲,都不知道後來怎麼過來的。


推薦閱讀:

為什麼 C/C++ 的宏一直沒怎麼發展?
malloc是從系統堆裡面動態申請空間,那與char *申請的空間有什麼區別?
不用虛析構函數也不會造成內存泄漏的原因是什麼?
C/C++靜態庫中的函數在這個靜態庫被使用時還有被inline的可能嗎?

TAG:遊戲 | 軟體 | 編程 | C編程語言 | CC |