還不登入嗎?
(-3-)是不是要下跪求你們?
趕快為了可愛的管理員登入喔。
登入可以得到收藏功能列表
還能夠讓我們知道你們有在支持狂人喔(*´∀`)~♥
《程序媛養成計劃》第19章 快跑灰太狼
  在我的期盼中,第二天的課程如約而至,不過在上課之前,老爹在我的電腦上安裝了一款叫做Visual 的軟件。

  「由於咱們今天是要編寫遊戲,自然不能再像之前那樣使用小黑屏咯,而是要使用圖形界面化窗體程序。

  而用C語言直接來編寫圖形化界面有些麻煩,這裡咱們就用C語言的加強版C Plus以及微軟提供的MFC來實現推箱子這個遊戲了。」

  「C Plus?那是不是我要重新學習相關的知識啊?」

  我苦著臉問道。

  「C Plus就是大家口中的C++,它的基礎語法和C語言幾乎一模一樣,增強的地方在於面向對象部分。」

  老爹一邊安裝軟件,一邊解釋道。

  「啥?我編個程序還得找個對象來坐我對面麽?原來當程序員的福利真麽好啊,難怪不得那麽人都想當程序員。可是我還這麽小,這樣做真的好麽?」

  聽到「面向對象」四個字的時候,我不禁一臉懵逼。

  「這裡的對象不是你想的那個對象,是……算了,我們先別討論對象的問題,現在只是換一個環境讓你使用C語言。你看C++,C++,++在後,說明是先使用C語言,然後再加的。」

  老爹捂著額頭苦笑道,想要解釋卻不知道該怎麽說。

  「這樣的麽?那當初開發C++的人應該叫它++C才對嘛……」

  在和老爹閑聊的時候,軟件也安裝好了。為了防止我被一些不相關的東西干擾,老爹先將工程搭建好,並且設置好了窗體的相關參數。

  「現在我給你演示一遍怎麽加載圖片,如果記不住就算了,反正我們的目的不在這兒。」

  有了老爹這句話,我理所應當的沒有學會。

  「好了,現在背景圖片和灰太狼都已經加載進來了,我們下一步就是獲取從鍵盤上的輸入,然後使用switch語句讓灰太狼動起來。

  在MFC中給我們提供了控件的鍵盤輸入事件,我們只需要到相應的位置獲取鍵盤輸入了好了。」

  「鍵盤輸入我能夠理解,事件是個嘛玩意兒?」

  我又被老爹說的新名詞給弄迷糊了。

  「嗯,比如說哈,我們現在在這個窗體上點擊鼠標,這個時候計算機是能夠捕捉到我們這個點擊動作的,這個動作被稱之為事件源。當計算機捕捉到這個動作的時候,就會去執行對應的一段代碼。

  而要執行的那段代碼,叫做事件響應內容,需要我們給出,... ...

因為計算機並不知道捕捉到動作的時候需要做什麽事情。

  之前一直跟你說過,計算機很笨,我們不能把事件響應內容隨意放置,而是要放在一個特定的地方,否則計算機就找不到。而這個特定的位置,就叫做事件,事件裡邊執行的是事件響應內容。

  所以事件的機制是:事件源觸發事件,事件執行事件響應內容。

  對了對了,我想到一個特別好的例子,我們再來說說諜戰風雲。」

  「好呀好呀!」

  「在諜戰片裡邊一般情報人員裡邊都是單線聯系對吧?假設現在你是老爹的上級,老爹是你手下的一個情報人員,但是由於我們是單線聯系,你可以直接聯系我,但是我不能直接聯系你。

  這天呢,你聯系我,讓我要在半個月之內獲取到敵人的密碼本。老爹我歷經千難萬險,

九死一生,終於從敵人手裡拿到了密碼本。  密碼本是拿到了,但是我要怎麽給你呢?我又沒有辦法主動聯系你?

  這個時候我就想到你之前說的,一旦拿到敵人的密碼本,就立刻藏在某個寺廟的佛龕下面。

  老爹將密碼本放在佛龕下邊後不放心,於是就旁邊寫上了此處沒有密碼本幾個大字。果不其然,敵人很快就找到了老爹藏密碼本的佛龕,但是在看到上面的字後信以為然就走了。

  半個月的時間到,你就到佛龕下面拿到了密碼本,任務完成!」

  「哈哈!老爹你這不是騙小孩兒麽?敵人怎麽可能相信你寫的字嘛,這不是此地無銀三百兩麽?」

  「這只是老爹編的故事而已,不要較真嘛。

  在這個故事裡邊,半個月的時間就是事件源,當半個月的時間一到,你就要去佛龕拿密碼本,所以佛龕就是事件,事件內容就是密碼本咯。

  同理,當我們按下鍵盤上某個按鍵就是事件源,這個時候就要觸發鍵盤輸入事件,而我們只需要在事件裡面添加我們需要進行的邏輯內容。」

  「哦,原來是這樣的哦。」

  我若有所思道。

  「如果你暫時理解不了也沒有關系,我們現在的學習重點並不是UI的機制。那我們現在分析一下我們在鍵盤輸入事件裡面需要添加哪些內容:

  首先,我們需要在事件中用一個char類型的變量來獲取鍵盤輸入按鍵的鍵碼,就取名叫做keyde吧。至於如何獲取,MFC已經給我們留好方法了,這個暫且不提。

  接下來我們就應該用switch來進行邏輯處理:

  switch(keyde)

  {

  c... ...

case 38

  灰太狼向上移動

  case 40

  灰太狼向下移動

  case 37

  灰太狼向左移動

  case 39

  灰太狼向右移動

  default

  什麽都不做

  break;

  }

  上下左右的鍵碼分別38、40、37、39,接下來我們要做的就是實現灰太狼的移動邏輯了。」

  「嗯」

  我應了一聲,在腦中想了一下老爹剛剛說的內容,確認沒有什麽問題後點了點頭。

  「還記得第一天我跟你說過,電腦的顯示屏其實是一個個排列的點陣吧?應該說是像素點。」

  「記得!」

  畢竟當時老爹讓我親自動手實現了大寫字母「Y」的過程,所以我對這個知識點的印象還是很深刻的。

  「記得就好,對於每一個像素點來說,它們都有自己的位置, 就像是五指棋盤行數用數字表示,列數用字母表示,當我們描述一個格子的位置時,就會A1,B2等來表示第一行第一列和第二行第二列的格子。

  同樣,像素點也有自己位置的描述方式,它是用x和y來記錄,其中x代表列號,y代表行號,它們都是從0開始的,x從左到右依次增大,y從上到下依次增大。

  像你房間裡這台電腦的顯示器分辨率是1920x1080,這代表著台顯示器像素點一共有1080行,每一行有1920個像素點。最左上角的那個像素點位置是x=0,y=0,最右上角那個像素點的位置是1920,0。你能告訴老爹最左下角和最右下角的兩個點的像素位置麽?」

  老爹拿著屏幕跟我細細講道。

  「這有什麽難的,左下角像素點的位置是x=0,y=1080,右下角的像素點是x=1920,y=1080。」

  「不錯,正是如此。其實我們在移動灰太狼的時候,本質上就是在改變灰太狼圖片在屏幕中的位置。比如說我們要把灰太狼向上移動10個像素,那麽只需要讓灰太狼的x保持不變,讓y減去10;如果要向下移動,就讓y加上10。

  同理,要向左移動,就是對x做減法,向右則是對x做加法。」

  有了老爹的理論支持和技術支持,很快我就將移動灰太狼的邏輯寫好了。費了這麽大的勁,我肯定要好好玩一下,於是在我的控制下,灰太狼在屏幕... ...

中到處亂跑。
鍵盤左右鍵 ← → 可以切換章節
章節問題回報:
翻譯有問題
章節內容不符
章節內容空白
章節內容殘缺
上下章節連動錯誤
小說很久沒更新了
章節顯示『本章節內容更新中』
其他訊息