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++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
小編就差不多把效果圖,代碼都已經發出來了,可以借鑒一下我的思路,圖形庫記得安裝好,別忘了,這個滑鼠可以控制人物的移動,素材的話自己都可以去找一下,可以不一樣的,小編就暫時說到這,素材,圖片命名,路徑都是要統一別亂了。


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