當前位置:
首頁 > 知識 > C語言打造——遊戲場景裡面的人物行走

C語言打造——遊戲場景裡面的人物行走


涉及到的知識點不多:


圖形庫 滑鼠和鍵盤操作 圖片 貼圖


C語言 if swicth分支 函數 循環for while do while


小編下面就把代碼發出來一下,代碼如下:


#include//圖形庫頭文件

#include


#include//getch 獲取鍵盤消息 kbhit 判斷是否有鍵盤消息


//#include"resource.h"


#include//加音樂 mcisendstring playsound


#pragma comment(lib,"WINMM.LIB")//多媒體的庫 winmm.lib 可以小寫


/*


1.實現 打包圖片 涉及到資源文件


//如果是添加資源的話 資源文件 改下代碼


2.音樂 wav-->playsound


*/

/*


關於 貼圖 圖形庫


創建一個窗口 initgraph


圖片 -->IMAGE 變數 loadimage 載入一張圖片


putimage 貼圖


*/


/*


人物移動


1.貼圖 素材 基本動作 上 下 左 右 左上 左下 右上 右下 8個方向


2. 人物走路 四個動作 //動作越多人物效果越好

人物 透明貼圖


1.貼圖 人物圖片 遮擋的圖片 -->素材


loadimage 貼圖 遮擋的圖片 AND SRCPAINT


人物圖片 OR SRCAND


貼圖 需要坐標 人物坐標 目的坐標 人物的移動方向 人物動作


傳遞參數會很麻煩


沒什麼區別 但是結構體好看一點 結構體 變數名字 取名字比較簡單


想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙


1.全局變數


2.定義全局結構體

*/


struct//結構體可以沒有名字


{


int x, y;//人物當前坐標 像素


int _x,_y;//目的地坐標


int move;//人物的移動方向


/*


0表示往下 1左 2往右 3往上 4左下 5右下 6左上 7右上


*/


int num;//人物動作 0 1 2 3

}person = ;//初始化狀態


IMAGE people[3];//圖片 背景圖 人物圖片 掩碼圖


void init()//初始化


{//創建窗口 圖片載入部分


mciSendString(L"open 1.mp3 alias bgm", 0, 0, 0);


mciSendString(L" play bgm", 0, 0, 0);


initgraph(640, 480);//窗口大小 像素


loadimage(&people[0], L"背景.jpg",640,480); //縮放 jpg bmp L多位元組


loadimage(&people[1], L"人物圖.bmp");//以圖片像素載入


loadimage(&people[2], L"掩碼圖.bmp");

//IDR_JPG1 JPG "背景.jpg"


//IDB_BITMAP1 BITMAP "人物圖.bmp"


//IDB_BITMAP2 BITMAP "掩碼圖.bmp"


//loadimage(&people[0], L"JPG",MAKEINTRESOURCE(IDR_JPG1), 640, 480); //縮放 jpg bmp L多位元組


//loadimage(&people[1], L"BITMAP", MAKEINTRESOURCE(IDB_BITMAP1),280,992);//以圖片像素載入


//loadimage(&people[2], L"BITMAP", MAKEINTRESOURCE(IDB_BITMAP2),280,992);


}


void draw()//繪圖


{


//1.重新繪製背景圖

//2.人物圖


//雙緩衝繪圖


BeginBatchDraw();//開始繪圖


//寫繪圖部分


putimage(0, 0, &people[0]);//背景圖片


//人物圖片


putimage(person.x-30, person.y-80, 70, 124, &people[2], 70 * person.num, 124 * person.move, SRCAND);//掩碼圖


putimage(person.x-30, person.y-80, 70, 124, &people[1],70*person.num,124*person.move,SRCPAINT);//貼人物圖 AND 方式貼圖


EndBatchDraw();//結束繪圖


if (person.num == 3)

{


person.num = 0;


}


else


{


person.num++;


}


Sleep(10);


}


//實現行走

void walk()


{


//如果目的坐標 和人物坐標不一樣 就需要走動


//先判斷哪個方向 可能沒辦法走到這個區域 給他一個範圍 4 x-=5 x=x-5


if (person.x > person._x&&person.y > person._y) { person.x -=1, person.y -= 1, person.move = 6; return; }//人物在目的地的右下方 左上方走


if (person.x person._y) { person.x += 1, person.y -= 1, person.move = 7; return; }//往右上方走


if (person.x > person._x&&person.y


if (person.x


if (person.x > person._x) { person.x -= 1, person.move = 1; return; }//往左走


if (person.x


if (person.y > person._y) { person.y -= 1, person.move = 3; return; }//往上走


if (person.y


/*


單位像素 一個像素一個像素 角度 三角函數 出現小數(捨棄) 跑偏的 剛剛好是整數情況非常小


*/


}


void change()//用滑鼠/鍵盤實現改目標位置


{


//鍵盤實現的部分 有沒有鍵盤輸入


if (kbhit())


{


switch (getch())//獲取鍵盤消息


{


case "W":


case"w":


//兩種方案


//目標位置 當前位置的上方 或目標點的上方


person._y = person.y - 15;//一次移動 15個單位


person._x = person.x;


break;


case "A":


case"a":


person._y = person.y;


person._x = person.x-15;


break;


case"S":


case"s":


person._y = person.y + 15;


person._x = person.x;


break;


case"D":


case "d":


person._y = person.y;


person._x = person.x+15;


break;


想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙


}


}


else if(MouseHit())//有沒滑鼠信息的


{


MOUSEMSG msg = GetMouseMsg();//獲取滑鼠信息 等待


switch(msg.uMsg)


{


case WM_LBUTTONDOWN://左鍵按下


person._x = msg.x;


person._y = msg.y;


break;


//case WM_RBUTTONDOWN://右鍵按下


}


}


}


int main()


{


init();


draw();


while (1)


{


change();


walk();


draw();


}


getchar();


closegraph();//關閉窗口


return 0;


}


/*


IMAGE img;//裝圖片的容器


loadimage(&img,L"背景.jpg",640,480);//jpg bmp L多位元組


putimage(0, 0, &img);//把這張圖片貼出來 0,0坐標


IMAGE img2;


loadimage(&img2, L"boy.bmp");//jpg bmp L多位元組


putimage(0, 0, &img2);//把這張圖片貼出來 0,0坐標*/


最終的效果圖:



C語言打造——遊戲場景裡面的人物行走



想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙


小編就差不多把效果圖,代碼都已經發出來了,可以借鑒一下我的思路,圖形庫記得安裝好,別忘了,這個滑鼠可以控制人物的移動,素材的話自己都可以去找一下,可以不一樣的,小編就暫時說到這,素材,圖片命名,路徑都是要統一別亂了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

經典益智遊戲讓你一秒掌握C語言遞歸方法論

TAG:C加加 |

您可能感興趣

一場手機、行人與光影的遊戲
從《水形物語》說起,遊戲界的人性善惡
遊戲版《行屍走肉》,挑戰人性極限
C語言編程學習打造—人工智慧版貪吃蛇小遊戲
球形敘事與遊戲
用戶場景下的遊戲設計
亂斗火柴人遊戲界面及設置中文翻譯一覽
遊戲行業是「跪著發展」的行業?
遊戲環境翔實如真,人物表情動作栩栩如生,動畫和遊戲畫面的差別
手繪遊戲有哪些 手繪風格遊戲推薦
目前市面上以畫面著稱的遊戲 畫面逆天不服不行
微軟收購遊戲大廠的野望 遊戲生態圈發展路漫漫
遊戲流量引領的遊戲模式變遷
一位作家的劍靈遊戲體驗 這才是真正玩遊戲的態度!
遊戲人值得一讀的非遊戲類著作
盛大遊戲首提大發行賦能行業 遊戲格局或迎改變
青蛙旅行遊戲全界面漢化文字翻譯講解
動作RPG遊戲《吸血鬼》全新遊戲場景和實機戰鬥演示
專為遊戲打造 台電TOS體驗版開放下載
遊戲並不暴力,美國機構製作視頻展示遊戲之美