可能是B站最好的植物大戰(zhàn)僵尸教程了!C語(yǔ)言實(shí)現(xiàn)完整版植物大戰(zhàn)僵尸!

大家好
我是程序員rock
現(xiàn)在我們來開始從零構(gòu)建這一個(gè)主打戰(zhàn)僵尸
首先我們創(chuàng)建一個(gè)項(xiàng)目
我這里使用的是vr
是2022
大家也可以使用vs的任意版本啊
不過現(xiàn)在的話
其實(shí)用2019或者22202是非常方便的
好創(chuàng)建一個(gè)新項(xiàng)目
選擇空項(xiàng)目模板
好項(xiàng)目的名稱啊
我的植物大戰(zhàn)是啊
可以給后綴按4號(hào)
項(xiàng)目名稱的話是可以使用中文的啊
嘖
好項(xiàng)目創(chuàng)建好了啊
然后我們創(chuàng)建添加一個(gè)新的文件
文件名啊
你可以改一下
也可以不用改
我給你改一下
好像我們?cè)谶烂鞔_說明一下
我們的一個(gè)這些開發(fā)日志吧
首先啊我們是創(chuàng)建新項(xiàng)目
這下好了
我們這里說的是空項(xiàng)目模板
其實(shí)你們還有一些項(xiàng)目準(zhǔn)備啊
項(xiàng)目準(zhǔn)備的話嗯
我們用到的時(shí)候再說吧
好先創(chuàng)建空項(xiàng)目
注意啊
使用這個(gè)vs
好接著我們就要導(dǎo)入素材
把我們這個(gè)植物大戰(zhàn)僵尸需要的游戲素材呀
啊圖片啊
聲音啊啊放到我們項(xiàng)目里面來啊
從哪里導(dǎo)入呢
哎大家可以把這個(gè)視信
然后在回復(fù)里面啊直接領(lǐng)取啊
我這里就這個(gè)做一個(gè)壓縮包
復(fù)制啊
這rock一幀一幀p出來的
粘貼好
解壓下
企業(yè)工具很多啊
7z是最其實(shí)最方便的
沒有廣告的
用其他的也可以
一取得好這一個(gè)解壓目錄好
這是我們的素材
我們把素材全部都復(fù)制過來或者剪貼過來吧
剪貼好啊
這里面我們搞一個(gè)新的目錄
新建一個(gè)專門放資源的r e s目錄
就是windows基本看下面開發(fā)常用的一個(gè)方式
r e s表示資源目錄
用其他目錄也可以好吧
我們都粘貼過來好
你看這里面啊啊這個(gè)素材都有了
好另外這里有兩個(gè)工具文件啊
這種rush的兩個(gè)工具文件啊
我看剪貼過來放在外面啊
放到夢(mèng)同目錄下面
好
這樣的話我們這個(gè)嗯素材啊就導(dǎo)入好了
首先我們做什么呢
呃我們初學(xué)者往往寫做項(xiàng)目的時(shí)候
往往會(huì)產(chǎn)生困惑
而不知道從哪里學(xué)起啊
最好給大家分享一個(gè)小的一個(gè)開發(fā)的一個(gè)方式
一個(gè)一個(gè)技巧吧
用需求
用需求來推動(dòng)
我們從學(xué)角度上角度的話
我們最想看到的是我們游戲界面是吧
所以我們最開始把我們把我們的這個(gè)游戲
界面啊
把它搞出來
就我們這里這個(gè)實(shí)現(xiàn)舒適的最開始的游戲
因?yàn)閷I(yè)術(shù)語(yǔ)叫場(chǎng)景
一場(chǎng)景其實(shí)就是一個(gè)界面
把頭文件寫下
c語(yǔ)言基礎(chǔ)的頭文件
還有這里有一個(gè)啊
這個(gè)這個(gè)是一個(gè)圖形庫(kù)啊
是easy tt
定住
啊所以需要什么需要先安裝
需要安裝easy tab啊
這個(gè)按住圖形庫(kù)啊
這臺(tái)官網(wǎng)可以下載
也可以私信我啊
直接獲取
直接雙擊安裝就可以了
還這樣的話
我們的基礎(chǔ)圖一定就找好了
沒函數(shù)
直接做我們的一個(gè)初始的一個(gè)游戲場(chǎng)景
一個(gè)好的方式的話是這樣的吧
哎但凡所有的項(xiàng)目不只是游戲啊
做一個(gè)初始化
所以我們開始可以做一個(gè)初始化
游戲初始化就是我們啊c語(yǔ)言所學(xué)到的是吧啊
定義調(diào)用函數(shù)來定義一個(gè)函數(shù)
infinite
從這可以看出來
函數(shù)是我們自己定義
把自己調(diào)用
當(dāng)然在大型項(xiàng)目開發(fā)里面的話
你會(huì)定義很多函數(shù)給別人調(diào)用
好游戲的初始化初始化
你有沒有做什么東什么東西呢
啊
首先啊我們對(duì)我們初學(xué)者最感興趣的
就是那個(gè)游戲的背景是吧
游戲背景加載游戲背景圖片
背景圖片的話有兩種加載方式
第一種是把背景圖片
直接打印到我們窗口里面來
但這種方式會(huì)它會(huì)比較慢
我經(jīng)常調(diào)的會(huì)比較慢
第二種方式的話
把背景圖片先放到我們的內(nèi)存變量里面去
這樣的話它再?gòu)淖兞坷锩骘@示就會(huì)很很快
就會(huì)更快一些
所以我這里使用這種變種方式
首先呢我們就需要定一個(gè)啊背景圖片啊
變量里面
啊這是image ex圖形庫(kù)的一個(gè)數(shù)據(jù)線
表示圖片的imac g背景圖片
導(dǎo)入c加開發(fā)放方式的話
就搞搞成員變量
我就用c元的方式
我就定義一個(gè)全局變量
它用來表示背景圖片的
所以我們要加載啊
就從硬盤的那個(gè)背景圖片
把它加載到我們這邊里面來
怎樣價(jià)值呢
load image加載

不
注意啊
加載的時(shí)候這里要加個(gè)取地址符號(hào)
后面是我們這個(gè)啊路徑呢
哎好像我們素材的路徑打開所在文件夾
就是我們的i s目錄吧
s目錄下面的這個(gè)好b g點(diǎn)接pg啊
這是我們的背景圖片
好像也是這個(gè)不建議用絕對(duì)路徑
有同學(xué)喜歡用這個(gè)啊
絕對(duì)路徑很長(zhǎng)很長(zhǎng)的
這個(gè)方不方便
而且項(xiàng)目改變位置你就失效了
必須點(diǎn)接筆記好
加上之后它這里有個(gè)錯(cuò)誤提示啊

老鳥的話就知道了啊
這是很多解決辦法
根本原因是字符集的原因造成的
所以我們這里只需要什么呢
啊最簡(jiǎn)單的方式是需要改變它的項(xiàng)屬性啊
右鍵單擊項(xiàng)目名稱

選擇屬性
彈出屬性窗口啊
這里選擇高級(jí)好這個(gè)字符集
把它改成多字節(jié)字符集

好ok
這樣的話我們背景的圖片就已經(jīng)加載好了

但是這個(gè)時(shí)候的話他是不會(huì)啊
不會(huì)顯示了
跑起來特別顯示的啊
因?yàn)樗旁趦?nèi)存變量里面是吧
所以我們要把它顯示出來的話
還要額外實(shí)現(xiàn)它顯示出來怎么辦呢
誒那我們肯定要什么要先創(chuàng)建這個(gè)什么
創(chuàng)建這個(gè)游戲窗口
顯示到窗口里面來吧
mod的話還是控制臺(tái)呀
創(chuàng)建一個(gè)游戲的圖形窗口

啊這個(gè)是一直插圖形庫(kù)的結(jié)構(gòu)
很多初學(xué)者的話
這個(gè)啊擔(dān)心記不住啊
沒關(guān)系啊
有個(gè)印象就行了
然后查下筆記
看下我的筆記就可以了
它有兩個(gè)參數(shù)啊
第一個(gè)窗口的寬度
還有窗戶的高度
穿過好多寬多高呢
啊這個(gè)游啊這個(gè)相機(jī)里哈哈他來算啊
這個(gè)游戲要多寬多高好看啊
我們這里來啊
直接復(fù)刻的那個(gè)經(jīng)典的總大戰(zhàn)僵尸啊
按照他的比例的話
我選擇這個(gè)寬度900x600

900x9也可以這樣寫
900 600
但這樣寫就不專業(yè)啊是吧
萬(wàn)一以后更改了
所以我們可以把它定義成一個(gè)紅或者
cos變量都行
我們這里定義成一個(gè)紅
這c語(yǔ)言的基本的語(yǔ)法是吧

窗口的一個(gè)寬度
900
三窗口的高度600
好的替換一下
單口的寬度
然后的高度好好
這樣的話我們最簡(jiǎn)單的初始化就做好了

你看被圖片已經(jīng)加載到我們的變量里面來了
窗口也已經(jīng)創(chuàng)建好了
好咱們可以跑起來了
哈哈這時(shí)候跑的話肯定是一片黑是吧
大家也可以先試一下啊
再加個(gè)暫停

因?yàn)槟悴患訒和5脑?/p>
程序直接gg啊
窗戶都來不及
來不及撿
來不及看到就直接關(guān)掉了
好跑一下
這主要是檢查一下你的開發(fā)環(huán)境
對(duì)不對(duì)
好
你看窗戶已經(jīng)出來了

我這個(gè)時(shí)候都出不來的話
那說明這個(gè)環(huán)境沒有搭配好啊
要重新重新裝一下
這個(gè)一直插圖形庫(kù)
好然后我們?cè)谀隳愦翱?/p>
但是我們是黑的吧
啊我們沒有看到我們最關(guān)心的這個(gè)游戲背景
就沒法跟項(xiàng)目經(jīng)理交代啊
哈哈哈嗯你這個(gè)嗯績(jī)效就拿不到
所以我們這里來哎
趕快把窗口把它顯示出來
怎么顯示呢
啊
這種啊也可以了解分享開那個(gè)專業(yè)的開發(fā)方式
單一的功能啊
我們要什么一定要封裝成一個(gè)函數(shù)
所以我們也給它封裝一個(gè)更新update

問那個(gè)更新窗口
這是表示更新啊
這個(gè)游戲窗口的update問的
但你有其他的名字也是沒問題的
再買定
更新窗口
更新窗口的話就是把我們的背景圖片打開
打出來寫出來
用反應(yīng)組叫渲染bot image
他就是專門把一個(gè)圖片渲染出來顯示出來的
它有呃多個(gè)參數(shù)
第一個(gè)參數(shù)其實(shí)這是什么意思
我先先寫吧
等一下把調(diào)查說明image pg好

很多同學(xué)可能已經(jīng)知道了
知道的話就溫故而知新啊
我們?cè)诖蛴∫粋€(gè)窗圖片的時(shí)候
啊啊我們要確定它的一個(gè)坐標(biāo)
幾乎所有的圖形庫(kù)它都是這種坐標(biāo)概念
這樣的
這是我這是我們的大方框

是我們的窗口啊
在窗口里面呢
我們要在上面繪制啊
要畫一個(gè)這個(gè)圖片
畫這個(gè)圖片好
畫這個(gè)綠色的方塊圖片怎么畫呢
誒你要確定它在哪個(gè)位置畫是吧
怎么怎么確定呢
就需要確定這兩個(gè)要素
就是說你的圖片他在窗口距離窗口最左側(cè)

它的一個(gè)間隔距離
這啊間隔多大好
這個(gè)我們一般稱之為水平的話說x坐標(biāo)

還有
這個(gè)圖形啊
你這個(gè)窗圖片距離
那個(gè)窗口頂部的一個(gè)距離有多高啊
這也是我們所說的一個(gè)y坐標(biāo)啊

這話就比較好理解啊
如果對(duì)數(shù)學(xué)比較熟悉的話
其實(shí)他本身就是圖片的左上角是吧
圖片左上角啊
在這個(gè)坐標(biāo)系里面的坐標(biāo)
這個(gè)坐標(biāo)系的話就是嗯
就是紅色的吧
坐標(biāo)系
初中數(shù)學(xué)要學(xué)的坐標(biāo)系

不過不同的是它的它這個(gè)垂直的這個(gè)y坐標(biāo)
y軸它是朝下的
你可以這樣去理解啊
左上角它它在這里面做標(biāo)志
對(duì)數(shù)學(xué)不熟悉的同學(xué)
你就直接疊成這個(gè)圖片
它距離最左側(cè)的距離和最底部的距離好
那我們要畫背景的話
他肯定要從左上角直接全部鋪開嘛
毫無(wú)疑問啊
所以我們這里的一個(gè)背景圖片的坐標(biāo)
a坐標(biāo)是零
y坐標(biāo)也是零
好對(duì)應(yīng)我們這里的x和y好
這樣我們背景圖片啊就已經(jīng)有了好
這時(shí)我們就可以直接跑起來了

哈哈哈哈哈啊
我們的游戲
植物大戰(zhàn)僵尸的最初始的界面就已經(jīng)出來了
不過啊還非常簡(jiǎn)陋
很多要素都沒有
比如說我們的這個(gè)啊全面
他在上面的有個(gè)類似一個(gè)背包內(nèi)的一個(gè)啊
有一個(gè)啊按鈕啊
有個(gè)按鈕可以選擇我們各種植物的啊
沒有出來
還僵尸也沒跑過來
好這些
我們看來下一步再做好
這里的話
這就非常簡(jiǎn)單啊
主要是開發(fā)環(huán)境的一個(gè)設(shè)置
一個(gè)開環(huán)境要使用這個(gè)vs
建議vs用其他開環(huán)境也可以啊
但是比較麻煩一下要繞左
為了配置另外裝一直插圖形庫(kù)
好把素材導(dǎo)進(jìn)來啊
我們就可以直接看到我們的這個(gè)
最初始的界面了
好啊
下一節(jié)我們就來做我們的墜子上面啊
上面這個(gè)啊這個(gè)啊工具欄
好下期再見拜拜