C語言GUI的使用?

2017-08-12 4:38 am
我聽說C語言可以打出,
幾乎所有想的到的應用程式,
但據我目前知道的,C語言的GUI
好像只能使用WINDOWS API的內建元件,
那比如我想製作遊戲,遊戲中的角色圖案要如何製作呢?
更新1:

TO阿明 所以說C++的編譯器可以插入動態和靜態圖檔 那C的編譯器可以嗎?如果不行的話,為何說他能製作幾乎所有應用程式?

回答 (3)

2017-08-14 10:04 am
✔ 最佳答案
我也是來講一些觀念,版主現在學習的C語言,有使用printf() 顯示文數字嗎? 假如你學習的程式用printf() 與 scanf() ,表示你學的C語言程式是一種純文字模式的程式 (主控台應用程式(console application) ,它是類似早期DOS文字模式的程式,是在Windows作業系統底下虛擬DOS環境執行,微軟讓早期DOS文字模式的程式還可以在視窗環境執行(黑底視窗框架) ,DOS文字模式只是讓初學者學習程式,這種程式現在應該沒什麼用途,現在程式都是視窗程式,C語言程式你要改學真正的視窗應用程式,才能顯示圖檔,我們現在使用視窗應用程式,它是GUI圖形界面視窗程式,才適合顯示圖檔。



假如你有用C語言寫一般的視窗應用程式,C語言呼叫Windows API建立Windows Form 應用程式,使用C程式語言寫視窗應用程式,你應該知道程式碼很複雜,建議你改使用C++程式語言寫視窗應用程式,有些寫視窗程式的C++編譯器有提供顯示圖檔的元件,你不用寫程式指令,編譯器會幫你寫,用滑鼠點選拉下編譯器顯示圖檔元件放入的程式,可輕易把圖檔的圖像顯示在你的程式畫面,想製作遊戲人物圖可在靜態背景圖移動,需要把移動人物圖及靜態背景圖兩張點陣圖,兩RGB圖素做數值與邏輯運算。



可以在視窗程式顯示圖檔,跟寫遊戲軟體又是另外一回事,視窗程式是一種多工的程式,視窗作業系統可以同時執行很多個視窗應用程式,電腦的螢幕及繪圖顯示卡是多個應用程式共同使用,多個應用程式大家共用繪圖顯示卡的記憶體資源,作業系統只配置部份資源給你的視窗程式,這樣無法發揮遊戲軟體2D及3D的效能,微軟有開發遊戲繪圖的引擎 DirectX (還有別廠商OpenGL繪圖引擎) ,假如你常玩遊戲軟體應該知道DirectX,有些遊戲軟體要安裝微軟DirectX才能運作,它是一種繪圖顯示卡驅動程式,寫遊戲軟體要用C++語言呼叫DirectX API,把整個繪圖顯示卡資源提供給這一個遊戲軟體,一個遊戲軟體會霸佔全螢幕及整個繪圖卡記憶資源,這樣遊戲軟體的畫面動作才會順暢。

更新: TO阿明
所以說C++的編譯器可以插入動態和靜態圖檔
那C的編譯器可以嗎?如果不行的話,為何說他能製作幾乎所有應用程式?

C++的視窗編譯器,編譯器廠商有幫你寫好各種功能的視窗元件 (C++視窗編譯器有附加元件的類別庫),你從編譯器的元件模板拉下來,你的程式就可以使用這些視窗元件,你不用瞭解這些元件的程式碼怎樣寫,就可以使用它,這些元件也是用Windows API函數寫的,視窗C++ 編譯器廠商把各種的API函數組合某功能元件(物件) ,當然你也可以自己寫編譯器廠商沒提供的元件(物件類別),自己創造新的視窗元件,C++是物件導向語言(視窗元件是一種物件)。

C的編譯器都沒提供,所有視窗元件都要靠自己用Windows API函數慢慢寫,只要你懂Windows底層的運作及API函數,你願意一行一行API函數慢慢寫(很複雜很長的程式碼),幾乎所有視窗應用程式都可以寫。 (坐公車、火車、捷運、沒辦法到達的地方,假如你願意用走路,幾乎台灣所有地方都可到達)
2017-08-13 10:39 pm
Q:我聽說C語言可以打出,
幾乎所有想的到的應用程式,

A:許多其它語言也可以 只是C較快/方便

Q:但據我目前知道的,C語言的GUI
好像只能使用WINDOWS API的內建元件,

A:C語言沒有'元件'的概念且WINDOW應該不會公開C的API (因為沒有好處)

Q:那比如我想製作遊戲,遊戲中的角色圖案要如何製作呢?

A:製作圖案用繪圖軟體或是自己寫繪圖程式呢?
2017-08-13 5:11 pm
請導入<windows.h>或是自己寫定義檔

關於GUI部分 在學之前請透徹了解create程序 跟loop視窗迴圈 最後需了解參數執行後的destroy的方法
再來就是要精通C++的api接口的程式碼。

角色圖案 請依照定義檔的規則去作include的動作 寫入規則的函式 進行參數的變化
用繁體中文下去寫 可能會亂碼 所以需要一些編譯上的小技巧 用英文去寫比較不會亂碼

假設 你想製作遊戲引擎 這方面並不容易 但可參考網路上的open source資料
核心的東西需要用到大量的參數做變化 物理引擎部分可強化重力效果 但是這邊的程式碼非常不容易撰寫
核心分析拆解人物的動作需要做程式碼解析 這種核心迴圈要寫的很乾淨 不然這就是當機的出發點.....

如果你不介意遊戲畫面解析度 我就不多說了。

如果核心程式碼寫太多 會導致電腦效能浪費 需要壓縮優化原始碼 這個技術就看你學習C語言的能力與功力了。

一般的核心都是利用C++去撰寫的 畢竟效能最容易被掌控。

以上的解答無引用任何網站 純屬自己長年經驗的研究思考。
希望能幫助到你。


收錄日期: 2021-05-04 02:29:06
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20170811203831AAuT8gt

檢視 Wayback Machine 備份