2014-02-14 56 views
2

我正在使用Game Maker製作一些遊戲,但我想用C來製作簡單的遊戲。我是一位新手C程序員。當我編碼時,輸出總是在CMD Windows控制檯中。我可以做一些簡單的遊戲,但總是在控制檯中,這不是很靈活(你不能在沒有滾動的情況下進行動畫製作)。當您運行更復雜的遊戲時,會創建一個完整的新屏幕,並且我實際上會與該屏幕交互。我在C. Console中編寫遊戲或不是?

所以我使用C語言的問題是:這個新屏幕是如何加載的?我認爲有一些Windows API來創建一個新的屏幕或其他東西。順便說一句,在舊時代,我的意思是DOS時間,你只是使用了一個控制檯,但你可以加載一個新的屏幕在哪裏玩遊戲。你怎麼能做到這一點?

我想要一些指導來研究根。我只是不想調用庫X或使用SDL。

感謝您的幫助。

+0

歡迎來到SO!你的問題非常廣泛,有點基於意見。在SO上,你應該試着提出通常由代碼示例組成的客觀問題,並提出具體問題。 –

+0

儘管我對所有開始的程序員都很熱心,並且正在開展擴展其功能的項目,但還是有一條線。你說你是C的新手。考慮學習該語言的基礎知識:創建一個解析器,它將鏈接列表中的消耗文本構成。對初學者來說,這是一個具有挑戰性的項目。掌握範圍,內存管理和指針算術的基礎知識後,即可學習使用衆多API之一編寫GUI應用程序。對不起,這樣說:不要跑,然後才能抓取,當然也不要試圖在奧運會上競爭 –

+0

@Elias Van Ootegem'這是一個非常糟糕的建議,因爲你完全錯過了他所要求的。如果他能在一個控制檯上完成一個完整的遊戲,他很熟悉C開始爲他的遊戲製作簡單的圖形窗口。他們不一定非常複雜或複雜。他們可以非常簡單。他正在問如何在Windows堆棧中創建新窗口並在那裏繪製他的遊戲GFX。不要因爲擔心缺乏技能而拒絕超越自己不想做的事。作爲編碼員/程序員(如果你是一個人),你知道最好的學習方法就是做。不要提出不好的建議。「# – Yokai

回答

0

既然你提到了庫X我假設你在Linux系統上。有幾種不同的方法來存檔您的目標。如果你想仍然使用控制檯,但涉及更多的圖形,你可以看看庫ncurses(http://www.gnu.org/software/ncurses/)。

如果你想要做更先進的圖形,我建議你看看這裏:How do you create a window in Linux with C++?

+0

當我編寫庫X時,我的意思是一個通用庫,如庫foo。使用圖書館總是需要的嗎?我認爲圖書館隱藏了我想學習的複雜東西。 –

+0

所以你要求的是Windows或API的API?如果尋找窗口api,邁克爾已經回答了你的問題。 – MrSykkox

0

創建新的Windows可以得到相當多毛(即代碼可以是複雜和難以閱讀)。我會嘗試給出一個有點高層次的概述,然後將您鏈接到加載基本窗口的好教程。

您需要聲明幾個類型HWNDWNDCLASSEX變量,並調用了一堆的Windows API函數與一些設置和諸如此類的東西來初始化窗口。

一旦做到這一點,你需要輸入一個循環,處理所有的窗口交互,通常用的TranslateMessage在DispatchMessage內循環。

您還需要實施處理Windows事件的回調過程,例如鼠標點擊,關閉窗口等。這通常在LRESULT CALLBACK WndProcedure中完成。

我現在已經拋出了一堆新的詞語和想法,並且沒有多少解釋;查看本教程以獲取我剛纔嘗試解釋的完整示例。

http://www.functionx.com/win32/Lesson01c.htm

希望這有助於!

此外,這一切都假設你在Windows上根據你對Windows API(即Windows.h)的評論。如果你在Linux上,你需要使用X.

+0

但在80年代,用DOS,你可以爲遊戲製作一個新的屏幕。操作系統也提供了一些API? –

+0

我不在DOS附近,但我認爲是的,有一個API需要。我認爲你要做的是創建一個窗口,而不使用任何API,只是C.這是不能做到的;你需要編寫很多程序集,因爲你正在處理GPU硬件。而且,以這種方式訪問​​GPU並不容易,因爲它們通常不是開源的。沒有規格的編程組件非常困難,很少有人能做到。我不會推薦嘗試。 Windows通過提供用於創建窗口/ GUI的API而獲得其名稱。它意在用於這個確切的目的。 –

0

C編程可以追溯到1970年代,所以你可以考慮創建類似於那個時代的遊戲。 窗口或新的屏幕是由開發人員已經編譯和存儲的少量預處理器指令加載的。 一個新的屏幕可通過爲一些命令來實現:

#include<stdio.h> 
    #include<conio.h> 
    void main() 
    { 

    local declarations; 
    And your program for the game; 

    getch(); 
} 

這是什麼基本上做的是getch()函數;存儲在(conio.h)中的文件將打開一個新窗口,它將顯示 輸出,直到它從鍵盤獲得一個值,即顯示輸出直到你按下鍵盤上的任何鍵。

希望這個答案可以幫助你。

+0

是支持圖形的計算機還是操作系統? –