這篇文章將為大家詳細講解有關C++可視化角色按鍵移動控制的實現(xiàn)方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1.新建項目
新建一個空項目,并添加一個源文件(.cpp)


記住.cpp文件所在的位置
2.新建一個窗口,并添加背景圖片
將要使用的圖片,拷貝到項目所在文件夾
與.cpp文件處于同一文件夾
#include<stdio.h> //用于標準輸入輸出
#include<graphics.h> //用于圖形的函數(shù)庫
int main()
{
initgraph(1440, 768); //創(chuàng)建一個窗口,大小設定為背景大小,以免圖片拉伸變形
IMAGE background; //創(chuàng)建一個圖像,命名為background
loadimage(&background, "background.bmp");
//加載背景圖片
putimage(0, 0, &background);
//輸出到窗口,背景圖片從0,0,為原點
getchar(); //暫停,等待輸入任意字符
closegraph(); //關閉窗口
return 0;
3.加入一個角色
在main()函數(shù)中插入角色
IMAGE role, roleY; loadimage(&role, "role.bmp" ); loadimage(&roleY, "roleY.bmp"); putimage(100, 500, 93,100,&roleY,0,200,SRCAND); putimage(100, 500, 93,100,&role, 0,200,SRCPAINT );
第4行
putimage(100, 500, 93,100,&roleY,0,200,SRCAND);
100,500表示角色在窗口中的坐標,位置大約在左下角
93,100 表示角色圖片的大小
&roleY插入的圖片對象
0,200從該圖片的0,200像素開始取值
SRCAND 使用AND的方式加載
第4、5行,使用三元光柵操作實現(xiàn)透明貼圖
背景圖:

掩碼圖:


4.接收用戶輸入的按鍵,并判斷輸入的是什么
#include<conio.h> //控制臺輸入輸出
void keyDonw()
{
char choice = _getch();
switch (choice)
{
case 'w':
case 'W':
case 72:
break;
case 's':
case 'S':
case 80:
break;
case 'a':
case 'A':
case 75:
break;
case 'd':
case 'D':
case 77:
break;
}
}需要添加一個頭文件,并接收用戶輸入的按鍵
接收 上下左右 四個方向鍵
使用switch()循環(huán),判斷用戶輸入
5.當用戶按鍵后,執(zhí)行相應功能
1.首先將main()函數(shù)中定義的一些變量提出來,作為全局變量
不然只有main()函數(shù)可以使用,別的函數(shù)使用不了
IMAGE background,role, roleY;
2.putimage(100, 500, 93,100,&roleY,0,200,SRCAND);
putimage(100, 500, 93,100,&role, 0,200,SRCPAINT );
putimage()函數(shù)中的,表示角色在窗口位置的參數(shù),
會隨著用戶操作方向鍵改變因此不能再使用100,500
應該使用變量代替,如:int x;int y;
case 'w': case 'W': case 72: putimage(0, 0, &background); putimage(x, y, 93, 100, &roleY, imageNum * 93, 300, SRCAND); putimage(x, y, 93, 100, &role, imageNum * 93, 300, SRCPAINT); imageNum++; y -= 5; if (imageNum == 4) imageNum = 0; break;
以按下向上箭頭為例:
首先重新載入背景 putimage(0, 0, &background);
其次將圖片顯示為角色像上
用 imageNum記錄按下照片的次數(shù)
由于每走一步角色會稍有變化,向上走的圖片共有四張,
用每個角色的寬度X按下的次數(shù)
使用if語句,當照片到第四張的時候,回到第一張
將y軸減小5個像素,是人物向上移動

6.添加個背景音樂BGM
將要使用的音樂,拷貝到項目所在文件夾
與.cpp文件處于同一文件夾
#include<mmsystem.h> ////包含多媒體接口
#pragma comment(lib,"winmm.lib")
int main()
{
mciSendString("open 1.mp3 alias music", 0, 0, 0);//媒體控制接口函數(shù)
mciSendString("play music repeat", 0, 0, 0);
}7.完整代碼
#include<stdio.h> //用于標準輸入輸出
#include<graphics.h> //用于圖形的函數(shù)庫
#include<conio.h> //控制臺輸入輸出
#include<mmsystem.h> //包含多媒體接口
#pragma comment(lib,"winmm.lib")
IMAGE background,role, roleY;
int x=100;
int y=500;
int imageNum = 0; //為照片計數(shù),從0開始
void keyDonw()
{
char choice = _getch();
switch (choice)
{
case 'w':
case 'W':
case 72:
putimage(0, 0, &background);
putimage(x, y, 93, 100, &roleY, imageNum * 93, 300, SRCAND);
putimage(x, y, 93, 100, &role, imageNum * 93, 300, SRCPAINT);
imageNum++;
y -= 5;
if (imageNum == 4)
imageNum = 0;
break;
case 's':
case 'S':
case 80:
putimage(0, 0, &background);
putimage(x, y, 93, 100, &roleY, 93 * imageNum, 0, SRCAND);
putimage(x, y, 93, 100, &role, 93 * imageNum, 0, SRCPAINT);
imageNum++;
y += 5;
if (imageNum == 4)
imageNum = 0;
break;
case 'a':
case 'A':
case 75:
putimage(0, 0, &background);
putimage(x, y, 93, 100, &roleY, 93 * imageNum, 100, SRCAND);
putimage(x, y, 93, 100, &role, 93 * imageNum, 100, SRCPAINT);
imageNum++;
x -= 5;
if (imageNum == 4)
imageNum = 0;
break;
case 'd':
case 'D':
case 77:
putimage(0, 0, &background);
putimage(x, y, 93, 100, &roleY, 93 * imageNum, 200, SRCAND);
putimage(x, y, 93, 100, &role, 93 * imageNum, 200, SRCPAINT);
imageNum++;
x += 5;
if (imageNum == 4)
imageNum = 0;
break;
}
}
int main()
{
initgraph(1440, 768); //創(chuàng)建一個窗口,大小設定為背景大小,以免圖片拉伸變形
loadimage(&background, "background.bmp");
//加載背景圖片
putimage(0, 0, &background);
loadimage(&role, "role.bmp" );
loadimage(&roleY, "roleY.bmp");
putimage(x, y, 93,100,&roleY,0,200,SRCAND);
putimage(x, y, 93,100,&role, 0,200,SRCPAINT );
mciSendString("open 1.mp3 alias music", 0, 0, 0);//媒體控制接口函數(shù)
mciSendString("play music repeat", 0, 0, 0);
while (true)
{
keyDonw();
}
getchar(); //暫停,等待輸入任意字符
closegraph();
return 0;
}8.遇到的一些問題
VS中可能找不到頭文件<graphics.h>
安裝EasyX,素材中有
loadimage()函數(shù),沒有與參數(shù)列表匹配的重載函數(shù)
右擊項目名稱,選擇“屬性”,點左側的“配置屬性”,在右側的設置中找到“字符集”,修改默認的“使用 Unicode 字符集”為“使用多字節(jié)字符集(即MBCS)”即可。
關于“C++可視化角色按鍵移動控制的實現(xiàn)方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:C++可視化角色按鍵移動控制的實現(xiàn)方法-創(chuàng)新互聯(lián)
分享鏈接:http://chinadenli.net/article28/gshcp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、全網(wǎng)營銷推廣、網(wǎng)頁設計公司、響應式網(wǎng)站、品牌網(wǎng)站制作、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容