C語言C++編程基礎(chǔ)入門新手學(xué)習(xí)打造——游戲場景里面的人物行走

今天帶來一個游戲場景的人物行走纷捞。用的是C語言寫的痢虹,用到的編譯器是vs2015,2013或者(vc)也行的,自然要記得安裝圖形庫文件主儡。

涉及到的知識點(diǎn)不多:

圖形庫 鼠標(biāo)和鍵盤操作 圖片 貼圖

C語言 if swicth分支 函數(shù) 循環(huán)for while do while

星城下面就把代碼發(fā)出來一下奖唯,代碼如下:

#include//圖形庫頭文件

#include

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

//#include"resource.h"

#include//加音樂 mcisendstring playsound

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

/*

1.實(shí)現(xiàn) 打包圖片 涉及到資源文件

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

2.音樂 wav-->playsound

*/

/*

關(guān)于 貼圖 圖形庫

創(chuàng)建一個窗口 initgraph

圖片 -->IMAGE 變量 loadimage 加載一張圖片

putimage 貼圖

*/

/*

人物移動

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

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

人物 透明貼圖

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

loadimage 貼圖 遮擋的圖片 AND SRCPAINT

人物圖片 OR SRCAND

貼圖 需要坐標(biāo) 人物坐標(biāo) 目的坐標(biāo) 人物的移動方向 人物動作

傳遞參數(shù)會很麻煩

沒什么區(qū)別 但是結(jié)構(gòu)體好看一點(diǎn) 結(jié)構(gòu)體 變量名字 取名字比較簡單

1.全局變量

2.定義全局結(jié)構(gòu)體

*/

struct//結(jié)構(gòu)體可以沒有名字

{

int x, y;//人物當(dāng)前坐標(biāo) 像素

int _x,_y;//目的地坐標(biāo)

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

/*

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

*/

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

}person = {100,100,250,250,2,1};//初始化狀態(tài)

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

void init()//初始化

{//創(chuàng)建窗口 圖片加載部分

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多字節(jié)

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多字節(jié)

//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();//結(jié)束繪圖

if (person.num == 3)

{

person.num = 0;

}

else

{

person.num++;

}

Sleep(10);

}

//實(shí)現(xiàn)行走

void walk()

{

//如果目的坐標(biāo) 和人物坐標(biāo)不一樣 就需要走動

//先判斷哪個方向 可能沒辦法走到這個區(qū)域 給他一個范圍 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._x&&person.y > person._y) { person.x += 1, person.y -= 1, person.move = 7; return; }//往右上方走

if (person.x > person._x&&person.y < person._y) { person.x -= 1, person.y += 1, person.move = 4; return; }//左下方走

if (person.x < person._x&&person.y < person._y) { person.x += 1, person.y += 1, person.move = 5; return; }//右下

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

if (person.x < person._x) { person.x += 1, person.move = 2; return; }//往右走

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

if (person.y < person._y) { person.y += 1, person.move = 0; return; }//往下走

/*

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

*/

}

void change()//用鼠標(biāo)/鍵盤實(shí)現(xiàn)改目標(biāo)位置

{

//鍵盤實(shí)現(xiàn)的部分 有沒有鍵盤輸入

if (kbhit())

{

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

{

case 'W':

case'w':

//兩種方案

//目標(biāo)位置 當(dāng)前位置的上方 或目標(biāo)點(diǎn)的上方

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;

}

}

else if(MouseHit())//有沒鼠標(biāo)信息的

{

MOUSEMSG msg = GetMouseMsg();//獲取鼠標(biāo)信息 等待

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();//關(guān)閉窗口

return 0;

}

/*

IMAGE img;//裝圖片的容器

loadimage(&img,L"背景.jpg",640,480);//jpg bmp L多字節(jié)

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

IMAGE img2;

loadimage(&img2, L"boy.bmp");//jpg bmp L多字節(jié)

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

學(xué)習(xí)編程(C語言/C++)并不難各位可以加下群315732400(資料和視頻),一起交流提升糜值,編程不要覺得很難丰捷,雖說也有難度,但是學(xué)好了對以后的幫助是非常大寂汇。

最終的效果圖:


星城就差不多把效果圖瓢阴,代碼都已經(jīng)發(fā)出來了,可以借鑒一下我的思路健无,圖形庫記得安裝好,別忘了液斜,這個鼠標(biāo)可以控制人物的移動累贤,素材的話自己都可以去找一下,可以不一樣的少漆,小編就暫時說到這臼膏,素材,圖片命名示损,路徑都是要統(tǒng)一別亂了渗磅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末真朗,一起剝皮案震驚了整個濱河市豁陆,隨后出現(xiàn)的幾起案子秀仲,更是在濱河造成了極大的恐慌躯泰,老刑警劉巖眠菇,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件残家,死亡現(xiàn)場離奇詭異放可,居然都是意外死亡铺罢,警方通過查閱死者的電腦和手機(jī)卖氨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門会烙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筒捺,你說我怎么就攤上這事柏腻。” “怎么了系吭?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵五嫂,是天一觀的道長。 經(jīng)常有香客問我村斟,道長贫导,這世上最難降的妖魔是什么抛猫? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮孩灯,結(jié)果婚禮上闺金,老公的妹妹穿的比我還像新娘。我一直安慰自己峰档,他們只是感情好败匹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讥巡,像睡著了一般掀亩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上欢顷,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天槽棍,我揣著相機(jī)與錄音,去河邊找鬼抬驴。 笑死炼七,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的布持。 我是一名探鬼主播豌拙,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼题暖!你這毒婦竟也來了按傅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胧卤,失蹤者是張志新(化名)和其女友劉穎唯绍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灌侣,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡推捐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了侧啼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牛柒。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痊乾,靈堂內(nèi)的尸體忽然破棺而出皮壁,到底是詐尸還是另有隱情,我是刑警寧澤哪审,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布蛾魄,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏滴须。R本人自食惡果不足惜舌狗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扔水。 院中可真熱鬧痛侍,春花似錦、人聲如沸魔市。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽待德。三九已至君丁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間将宪,已是汗流浹背绘闷。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留较坛,地道東北人簸喂。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像燎潮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扼倘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容