最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

項(xiàng)目實(shí)戰(zhàn)《選老婆》一

2021-02-01 15:34 作者:xnadevelop  | 我要投稿



根據(jù)之前所學(xué)的知識(shí):
C#開發(fā)跨平臺(tái)游戲——XNA簡介
C#開發(fā)跨平臺(tái)游戲——MONOGAME簡介
C#開發(fā)跨平臺(tái)游戲——安裝VISUAL STUDIO 2017
C#開發(fā)跨平臺(tái)游戲——VISUAL STUDIO 2017安裝XNA
C#開發(fā)跨平臺(tái)游戲——VISUAL STUDIO 2017安裝MONOGAME
C#開發(fā)跨平臺(tái)游戲——編寫第一個(gè)C#游戲
C#開發(fā)跨平臺(tái)游戲——在游戲中使用中文
C#開發(fā)跨平臺(tái)游戲——游戲的全屏窗口及退出
C#開發(fā)跨平臺(tái)游戲——設(shè)置游戲的窗口大小及分辨率
C#開發(fā)跨平臺(tái)游戲——在游戲中顯示系統(tǒng)默認(rèn)鼠標(biāo)及鼠標(biāo)的基本使用
C#開發(fā)跨平臺(tái)游戲——自定義游戲鼠標(biāo)光標(biāo)
C#開發(fā)跨平臺(tái)游戲——游戲中按鈕的實(shí)現(xiàn)
C#開發(fā)跨平臺(tái)游戲——在游戲中使用背景音樂和按鈕音效
C#開發(fā)跨平臺(tái)游戲——游戲中使用多張圖片實(shí)現(xiàn)動(dòng)畫
今天開始我們來一起做一個(gè)小游戲——《選老婆》

首先下載本游戲需要用到的所有素材:SelectWifeContent.zip下載地址:http://www.xnadevelop.com/wp-content/uploads/2020/01/SelectWifeContent.zip

打開Visual Studio 2017,【文件】【新建】【項(xiàng)目】,如下圖:

【Visual C#】【W(wǎng)indows Games】,名稱輸入【SelectWife.XNA】,解決方案名稱輸入【SelectWife】,框架選擇【.NET Framework 4.6】,點(diǎn)擊【確定】。如下圖:

找到解決方案管理器,選中Game1.cs,右鍵【重命名】為【GameMain.cs】。如下圖:

點(diǎn)擊【是】,如下圖:

打開GameMain.cs文件,找到【SpriteBatch spriteBatch;】在下方定義游戲的寬度和高度:

找到構(gòu)造函數(shù),在【Content.RootDirectory = “Content”;】下面輸入:

將游戲窗口設(shè)置為480×800的尺寸。

游戲場景

選中【SelectWife.XNA】項(xiàng)目,點(diǎn)擊鼠標(biāo)右鍵【添加】【新建項(xiàng)】【類】

名稱輸入【GameScence.cs】,點(diǎn)擊【添加】。如下圖:

打開GameScence.cs文件,將文件的內(nèi)容修改為:

定義四個(gè)基本游戲場景。

打開GameMain.cs文件,在【SpriteBatch spriteBatch;】下方定義當(dāng)前場景:

找到【LoadContent()】方法,設(shè)置最初加載的場景:

找到【Draw(GameTime gameTime)】方法,定義場景繪制方式,將整個(gè)Draw方法修改為:

這時(shí)候只需要在【Update(GameTime gameTime)】方法中去修改【currentScence = GameScence.GamePlaying;】就可以修改游戲場景。這是最簡單也是最容易理解的一種游戲場景切換方式,根據(jù)一個(gè)枚舉類型,來繪制不同的游戲元素,來達(dá)到場景切換的效果。

游戲背景

從素材中選中【GameBackground.png】,將它復(fù)制到【SelectWife.XNAContent】項(xiàng)目中,選中【GameBackground.png】右鍵屬性,如下圖設(shè)置:

打開GameMain.cs文件,在【GameScence currentScence;】后面定義游戲背景紋理圖和位置大小變量

接著在【LoadContent()】方法中加載背景圖紋理和初始化背景位置和大小

繪制游戲背景,找到【Draw(GameTime gameTime)】方法,由于游戲背景繪制在其他游戲元素的最下面一層,而且無論任何場景都一樣,所以在【Draw(GameTime gameTime)】方法的【 GraphicsDevice.Clear(Color.CornflowerBlue);】后面,輸入

點(diǎn)擊【啟動(dòng)】效果如圖

游戲標(biāo)題

拷貝素材中的【GameTitle.png】,將它復(fù)制到【SelectWife.XNAContent】項(xiàng)目中,選中【GameTitle.png】右鍵屬性,如下圖設(shè)置:

打開GameMain.cs文件,定義標(biāo)題的紋理和位置大?。?br>

接著在【LoadContent()】方法中加載標(biāo)題紋理和初始化標(biāo)題位置和大小

【gameTitleTexture2D.Bounds.Width】表示標(biāo)題圖片的實(shí)際寬度,(游戲的寬度-標(biāo)題寬度)/2 就可以讓標(biāo)題居中顯示。

繪制游戲標(biāo)題,找到【Draw(GameTime gameTime)】方法,在方法體中找到【? if (currentScence==GameScence.MainMenu)】,在它的區(qū)域中找到【spriteBatch.Begin();和? spriteBatch.End();】在它們之間輸入:

點(diǎn)擊【啟動(dòng)】,效果如下圖:

游戲開始按鈕

在素材中找到【PlayNormal.png】,拷貝到【SelectWife.XNAContent】中,屬性設(shè)置如下圖:

打開GameMain.cs文件,找到【Rectangle gameTitleRectangle;】在下面定義開始按鈕的紋理和位置大?。?/p>

接著在【LoadContent()】方法中加載開始按鈕紋理和位置大小

最后繪制開始按鈕,找到【Draw(GameTime gameTime)】方法,在方法體中找到【? if (currentScence==GameScence.MainMenu)】,在它的區(qū)域中找到【spriteBatch.Begin();和? spriteBatch.End();】在它們之間,游戲標(biāo)題繪制的下面輸入:

音效開關(guān)和關(guān)于按鈕

在素材中找到【SoundOn.png】和【About.png】,拷貝到【SelectWife.XNAContent】中,同時(shí)選中這兩張圖片,右鍵屬性設(shè)置如下圖:

打開GameMain.cs文件,找到【 Rectangle playNormalRectangle;】在下面定義聲效開關(guān)和關(guān)于按鈕的紋理和位置大?。?/p>

找到【LoadContent()】方法,加載音效開關(guān)按鈕紋理和位置大小,加載關(guān)于按鈕紋理和位置大小

找到【Draw(GameTime gameTime)】方法,在方法體中找到【? if (currentScence==GameScence.MainMenu)】,在它的區(qū)域中找到【spriteBatch.Begin();和? spriteBatch.End();】在它們之間,開始按鈕繪制的下面輸入:

點(diǎn)擊【啟動(dòng)】,效果如下圖:

自定義鼠標(biāo)

在素材中找到【MouseCursor.png】,拷貝到【SelectWife.XNAContent】中,屬性設(shè)置如下圖:

打開GameMain.cs文件,找到【 SpriteBatch spriteBatch;】在下面定義鼠標(biāo)圖片紋理和位置大小

找到【LoadContent()】方法,在方法體內(nèi)加載自定義鼠標(biāo)紋理圖和初始化坐標(biāo)及大小

繪制鼠標(biāo),找到【Draw(GameTime gameTime)】方法,由于鼠標(biāo)位于最頂層,所以在方法體的最后【base.Draw(gameTime);】之前加入

最后讓鼠標(biāo)紋理圖跟隨鼠標(biāo)移動(dòng),找到【Update(GameTime gameTime)】方法,在方法體內(nèi)輸入

點(diǎn)擊【啟動(dòng)】,運(yùn)行效果如下圖:

關(guān)于場景

這是最簡單的功能,只需要輸出一段文字即可。我們從最簡單的場景開始。

選中【SelectWife.XNAContent】項(xiàng)目,點(diǎn)擊右鍵【添加】【新建項(xiàng)】

【Visual C#】選擇【Sprite Font】,名稱輸入【AboutFont.spritefont】,點(diǎn)擊【確定】。如下圖:

雙擊打開AboutFont.spritefont文件,找到【<FontName>Segoe UI Mono</FontName>】改為

字體改為

打開MonoGame字符簡化工具:https://www.microsoft.com/store/apps/9nvl2gr44t01,將【游戲名稱:選老婆\n\r作者:chengcong\n\r版權(quán)所有:www.xnadevelop.com】輸入到文本框中,點(diǎn)擊【轉(zhuǎn)換】【復(fù)制到剪貼板】

拷貝到AboutFont.spritefont文件的CharacterRegions節(jié)點(diǎn)中,如圖紅線所示位置:

打開GameMain.cs文件,定義關(guān)于場景中用到的文字和位置

找到【ContentLoad()】方法,在方法體內(nèi)加載關(guān)于場景的字體和初始化字體位置

找到【 Draw(GameTime gameTime)】方法,在方法體內(nèi)找到繪制關(guān)于場景的【 else if (currentScence == GameScence.About)】,在【spriteBatch.Begin();】和【spriteBatch.End();】之間輸入:

接著實(shí)現(xiàn)場景跳轉(zhuǎn),找到【Update(GameTime gameTime)】方法,在獲取鼠標(biāo)狀態(tài)之后的【 mouseCursorRectangle.Y = mouseState.Y;】這行代碼后面加入:

點(diǎn)擊【啟動(dòng)】,效果如下圖:

這時(shí)候你會(huì)發(fā)現(xiàn)場景跳轉(zhuǎn)到關(guān)于頁面以后沒辦法返回,所有這里需要添加個(gè)返回按鈕來回到主菜單場景。

拷貝素材中的【Back.png】到【SelectWife.XNAContent】,右鍵屬性。設(shè)置如下圖:

打開GameMain.cs文件,定義返回按鈕紋理圖片和坐標(biāo)

找到【ContentLoad()】方法,在方法體內(nèi)加載返回按鈕的圖片紋理和位置大小:

找到【Draw(GameTime gameTime)】方法體內(nèi)的關(guān)于場景部分,在【spriteBatch.DrawString(aboutFont, aboutText, aboutFontPosition, Color.Orange);】后面輸入:

來繪制返回按鈕。

找到【Update(GameTime gameTime)】方法,在獲取鼠標(biāo)狀態(tài)的代碼之后,輸入:

實(shí)現(xiàn)點(diǎn)擊返回按鈕,退回主菜單場景的功能

點(diǎn)擊【啟動(dòng)】,效果如下圖:

音樂和音效

將素材中的【Music.mp3】和【Click.mp3】拷貝到【SelectWife.XNAContent】項(xiàng)目中,【Music.mp3】右鍵屬性設(shè)置如下圖:

【Click.mp3】右鍵屬性設(shè)置如下圖:

打開GameMain.cs文件,定義背景音樂和音效:

找到【LoadContent()】方法,在方法體內(nèi)加載背景音樂和按鈕音效并播放:

找到【Update(GameTime gameTime)】方法,在【 if (currentScence == GameScence.MainMenu)】中括號(hào)內(nèi)輸入:

點(diǎn)擊【啟動(dòng)】,這時(shí)候你會(huì)發(fā)現(xiàn)雖然點(diǎn)擊了關(guān)閉音效音樂按鈕后確實(shí)停止了背景音樂,但按鈕的圖案還是打開狀態(tài),所以這里需要對原來的代碼做出修改。

在素材中找到【SoundOff.png】將它拷貝到【SelectWife.XNAContent】項(xiàng)目中,屬性如下圖設(shè)置:

找到【定義聲效開關(guān)按鈕的紋理和位置】的地方,新增一個(gè)靜音狀態(tài)的紋理定義

找到【ContentLoad()】方法,加載靜音按鈕紋理:

找到【Draw(GameTime gameTime)】方法,在方法體內(nèi)找到主菜單場景的部分【 if (currentScence == GameScence.MainMenu)】在里面找到繪制音效按鈕的部分,將【spriteBatch.Draw(soundOnTexture2D, soundOnRectangle, Color.White);】改為:

點(diǎn)擊【啟動(dòng)】,效果如下圖:

游戲場景

打開GameMain.cs文件,找到【Update(GameTime gameTime)】方法,找到【if (currentScence == GameScence.MainMenu)】,在其內(nèi)部加入跳轉(zhuǎn)到游戲場景的代碼:

點(diǎn)擊【啟動(dòng)】,效果如下圖:

這時(shí)候你會(huì)發(fā)現(xiàn)游戲場景缺少一個(gè)返回按鈕返回到主菜單場景,所以需要添加返回按鈕。

找到【Draw(GameTime gameTime)】方法中的【else if (currentScence == GameScence.GamePlaying)】,在 【 spriteBatch.Begin();】和【spriteBatch.End();】加入

找到【Update(GameTime gameTime)】方法,在鼠標(biāo)狀態(tài)代碼后面,加入

點(diǎn)擊【啟動(dòng)】,效果如下圖:

從素材中拷貝【W(wǎng)ife1.png到Wife11.png】到【SelectWife.XNAContent】 項(xiàng)目中,選中這11個(gè)圖片,屬性如下圖設(shè)置:

打開GameMain.cs文件,定義一個(gè)圖片紋理列表和當(dāng)前圖片的索引

在【LoadContent()】方法中用一個(gè)循環(huán)來加載11張圖片,并定義位置

找到【Update(GameTime gameTime)】方法中的繪制游戲場景的【 else if (currentScence == GameScence.GamePlaying)】代碼,在里面加入

點(diǎn)擊【啟動(dòng)】,這時(shí)候顯示的只是第一張。

接著讓圖片動(dòng)起來,在GameMain.cs文件中定義:

找到【Update(GameTime gameTime)】方法里的【if (currentScence == GameScence.GamePlaying)】輸入:

點(diǎn)擊【啟動(dòng)】,可以看到老婆們已經(jīng)蠢蠢欲動(dòng)了!如下圖:

修改timePerFame 的值就可以加快圖片,越小越快!當(dāng)然如果設(shè)置成16.6以下,是感覺不出來的,超過了每秒60張

在素材中找到【MarryHer.png】,復(fù)制到【SelectWife.XNAContent】中,屬性設(shè)置如下:

打開GameMain.cs文件,定義選老婆按鈕圖片的紋理和位置大?。?/p>

在【LoadContent()】加載選老婆按鈕和初始化位置大小:

找到【Draw(GameTime gameTime)】方法中的【else if (currentScence == GameScence.GamePlaying)】,在【spriteBatch.Begin();】和【spriteBatch.End();】之間輸入:

下面來實(shí)現(xiàn)選老婆的效果。

首先定義一個(gè)開關(guān),來停止圖片切換,打開GameMain.cs文件,輸入:

找到【Update(GameTime gameTime)】方法中的【 timeLastFrame = timeLastFrame + gameTime.ElapsedGameTime.Milliseconds;】在外層加入一個(gè)判斷,如下代碼:

找到【Update(GameTime gameTime)】方法中的【if (mouseState.LeftButton != ButtonState.Released && playNormalRectangle.Contains(mouseState.X, mouseState.Y))】,在內(nèi)部加入:

找到【Update(GameTime gameTime)】方法中的【 if (currentScence == GameScence.GamePlaying)】,在里面加入:

點(diǎn)擊【啟動(dòng)】,這時(shí)候你會(huì)看到點(diǎn)擊開始按鈕進(jìn)入游戲后,圖片就直接停止了,這是因?yàn)閡pdate方法是一個(gè)不停執(zhí)行的過程,速度過快直接導(dǎo)致主菜單【開始】按鈕的點(diǎn)擊鼠標(biāo)傳遞到了游戲場景中的【選老婆】按鈕。

處理方法:打開GameMain.cs文件,在全局位置定義一個(gè)鼠標(biāo)狀態(tài):

找到【Update(GameTime gameTime)】方法,在最后【base.Update(gameTime);】之前輸入:

然后找到【 if ( mouseState.LeftButton != ButtonState.Released && marryHerRectangle.Contains(mouseState.X, mouseState.Y))】修改為

點(diǎn)擊【啟動(dòng)】,運(yùn)行效果如下圖:

點(diǎn)擊【選老婆】按鈕后,需要跳轉(zhuǎn)到游戲結(jié)束的場景,在【Update(GameTime gameTime)】方法中找到【 if (mouseState!=prevMouseState&& mouseState.LeftButton != ButtonState.Released && marryHerRectangle.Contains(mouseState.X, mouseState.Y))】在里面加入

效果如下圖:

游戲結(jié)束

從素材中拷貝【DoubleHappiness.png】【MainMenu.png】【Divorce.png】到【SelectWife.XNAContent】項(xiàng)目中,同時(shí)選中三個(gè)文件,右鍵屬性。設(shè)置如下圖:

打開GameMain.cs文件,定義雙喜圖片、主菜單按鈕、離婚按鈕的圖片紋理和位置大小:


在【ContentLoad()】方法中加載這些圖片紋理和位置大?。?/p>

在【Draw(GameTime gameTime)】方法中找到【else if (currentScence == GameScence.GameOver)】,在【spriteBatch.Begin();】和【spriteBatch.End();】加入:


繼續(xù) 項(xiàng)目實(shí)戰(zhàn)《選老婆》二






項(xiàng)目實(shí)戰(zhàn)《選老婆》一的評(píng)論 (共 條)

分享到微博請遵守國家法律
南澳县| 合作市| 岳阳市| 揭东县| 五莲县| 舒城县| 炉霍县| 师宗县| 南昌市| 云梦县| 临安市| 靖江市| 维西| 洛阳市| 宁安市| 溧阳市| 南岸区| 台江县| 山丹县| 礼泉县| 韶山市| 门头沟区| 南宫市| 南川市| 社旗县| 板桥市| 炎陵县| 区。| 延庆县| 习水县| 石泉县| 洪洞县| 大田县| 乐昌市| 金昌市| 定兴县| 山东省| 凤山县| 图木舒克市| 年辖:市辖区| 贺州市|