❶ 驅動精靈的玩游戲c語言插件有必要安裝嗎
裝上吧,占不了多少內存的,有些東西是需要它的
❷ funcodeC語言實訓平台上怎樣實現大魚吃小魚的功能或者是怎樣實現精靈與精靈碰撞的試驗。
游戲里的精靈(sprite)一般不直接通過其圖像本身實現碰撞檢測,大多時候通過定義該sprite的單位的位置和邏輯形狀(方形,圓形,多邊形等)來判斷兩兩碰撞。其中方形、圓形計算簡單適合對碰撞檢測要求不高的游戲。
個人以為最簡單的是圓形檢測,在這個檢測方法下不管sprite形狀如何,其碰撞區域均以給定半徑的圓形考慮。
比如有A,B兩個單位,它們的圓心坐標分別是(A.x,A.y);(B.x,B.y),那麼圓心之間的距離就是sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)(A.y-B.y))。如果該值比兩單位的半徑和A.r+B.r大則無碰撞,否則則碰撞。
❸ 用c語言在funcode上做黃金礦工的游戲 求發整個文件
//funcode黃金礦工源文件
#include"CommonAPI.h"
#include"stdio.h"
#include"string.h"
voidDrawHookLine();
intg_fGoldBornMinX=0;
intg_fGoldBornMaxX=0;
intg_fGoldBornMinY=0;
intg_fGoldBornMaxY=0;
intg_iGoldCount=20;
intg_iGameState=2;
intflag=1;
floatScore=0.f;
intflagnum=0;
charszGotGoldName[20];//當前抓到金子的名稱
floatg_fHookRotation=0.f;
floatg_fEmptyHookSpeed=35.f;
floatfTimeDelta;
floatg_fHookStartPosX;//存儲鉤子的初始X位置
floatg_fHookStartPosY;//存儲鉤子的初始Y位置
///////////////////////////////////////////////////////////////////////////////////////////
//
//主函數入口
//
//////////////////////////////////////////////////////////////////////////////////////////
intPASCALWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{
//初始化游戲引擎
if(!dInitGameEngine(hInstance,lpCmdLine))
return0;
//游戲初始化代碼
dSetWindowTitle("黃金礦工");
g_fGoldBornMinX=dGetScreenLeft()+5;//金子左邊界
g_fGoldBornMaxX=dGetScreenRight()-5;//金子右邊界
g_fGoldBornMinY=dGetScreenTop()+20;//金子上邊界
g_fGoldBornMaxY=dGetScreenBottom()-5;//金子下邊界
g_fHookStartPosX=dGetSpritePositionX("GoldHook");//獲取鉤子的初始X坐標
g_fHookStartPosY=dGetSpritePositionY("GoldHook");//獲取鉤子的初始Y坐標
dSetSpriteCollisionSend("goldHook",1);
dSetSpriteCollisionReceive("goldTemplate",1);
constfloatfRotateSpeed=45.f;//搖擺速度,單位度/秒
intiHookRotToLeft=1;//鉤子擺動的方向:1←;0→
floatfTimeDelta=dGetTimeDelta();
//引擎主循環,處理屏幕圖像刷新等工作
while(dEngineMainLoop())
{
//獲取兩次調用之間的時間差,傳遞給游戲邏輯處理
floatfTimeDelta=dGetTimeDelta();
DrawHookLine();
//執行游戲主循環
if(g_iGameState==0)
{
floatfThisRotate=fRotateSpeed*fTimeDelta;
if(iHookRotToLeft)
{
g_fHookRotation+=fThisRotate;
if(g_fHookRotation>=180.f)
{
g_fHookRotation=180.f;
iHookRotToLeft=0;
}
}
else
{
g_fHookRotation-=fThisRotate;
if(g_fHookRotation<=0.f)
{
g_fHookRotation=0.f;
iHookRotToLeft=1;
}
}
dSetSpriteRotation("GoldHook",g_fHookRotation);
}
elseif(g_iGameState==1)
{
dSetTextValue("Score",Score);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3",1);//獲取鉤子X方向的速度
floatfSpeedX=dGetSpriteLinearVelocityX("GoldHook");
//獲取鉤子Y方向的速度
floatfSpeedY=dGetSpriteLinearVelocityY("GoldHook");
//當速度接近為0時,即可判定其已到達初始點
if(fSpeedX<0.00001f&&fSpeedX>-0.00001f&&
fSpeedY<0.00001f&&fSpeedY>-0.00001f)
{
//解除金塊與鉤子的錨定
dSpriteDismount(szGotGoldName);
//刪除獲取的金塊
dDeleteSprite(szGotGoldName);
//回拉結束,設定狀態為0
g_iGameState=0;
if(flagnum)
{g_iGoldCount--;
}
}
}
//播放挖金者的動作(恢復初始守候動作)
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation2",1);
if(g_iGoldCount==0)
{
g_iGameState=0;
Score=0;
dSetSpriteVisible("GameBegin",1);
g_iGoldCount=20;
flag=1;
}
};
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation2",1);
//關閉游戲引擎
dShutdownGameEngine();
return0;
}
//==========================================================================
//
//引擎捕捉滑鼠移動消息後,將調用到本函數
voiddOnMouseMove(constfloatfMouseX,constfloatfMouseY)
{
//可以在此添加游戲需要的響應函數
}
//==========================================================================
//
//引擎捕捉滑鼠點擊消息後,將調用到本函數
voiddOnMouseClick(constintiMouseType,constfloatfMouseX,constfloatfMouseY)
{
//可以在此添加游戲需要的響應函數
}
//==========================================================================
//
//引擎捕捉鍵盤按下消息後,將調用到本函數
//分別為判斷Shift,Alt,Ctrl當前是否也處於按下狀態。比如可以判斷Ctrl+E組合鍵
voiddOnKeyDown(constintiKey,constintiAltPress,constintiShiftPress,constintiCtrlPress)
{
//可以在此添加游戲需要的響應函數
if(iKey==KEY_SPACE)
{
g_iGameState=1;//初始化之後,將游戲狀態設置為進行中
dSetSpriteVisible("GameBegin",0);
//生成金子
intiLoop=0;//循環變數控制
intiSize=4,iPosX=0,iPosY=0;//iSize表示金塊大小的變數
if(flag)
{
for(iLoop=0;iLoop<g_iGoldCount;iLoop++)
{
if(iLoop<10)//生成10個小金塊,大小為4
{
iSize=4;
}
elseif(iLoop>=10&&iLoop<16)//生成6個中金塊,大小為6
{
iSize=6;
}
else//生成4個大金塊,大小為8
{
iSize=8;
}//初始化金子精靈實例
char*tmpName;
//生成金塊名字
tmpName=dMakeSpriteName("GoldBlock",iLoop);
dCloneSprite("goldTemplate",tmpName);
//設置金塊的寬度
dSetSpriteWidth(tmpName,(float)iSize);
//設置金塊的高度
dSetSpriteHeight(tmpName,(float)iSize);
//設置金子精靈位置
iPosX=dRandomRange(g_fGoldBornMinX,g_fGoldBornMaxX);
iPosY=dRandomRange(g_fGoldBornMinY,g_fGoldBornMaxY);
dSetSpritePosition(tmpName,(float)iPosX,(float)iPosY);
flag=0;
}
}
if(g_iGoldCount==0)
{
flag=1;
g_iGoldCount=20;
}
}
if(iKey==KEY_S&&g_iGameState==0)
{//按下↓並且游戲狀態為"0"
g_iGameState=2;//置游戲狀態為2,可用於控制鉤子是否擺動
//以當前朝向給鉤子一個向前的速度
dSetSpriteLinearVelocityPolar("GoldHook",g_fEmptyHookSpeed,g_fHookRotation);
//播放挖金者的動作(一個胳膊往下壓的動作)
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1",0);
//0表示播放一次,這里胳膊往下壓就是一次
}
}
//==========================================================================
//
//引擎捕捉鍵盤彈起消息後,將調用到本函數
voiddOnKeyUp(constintiKey)
{
//可以在此添加游戲需要的響應函數
}
//===========================================================================
//
//引擎捕捉到精靈與精靈碰撞之後,調用此函數
voiddOnSpriteColSprite(constchar*szSrcName,constchar*szTarName)
{
//發起者為GoldHook,接受者含有GoldBlock欄位
if(strcmp(szSrcName,"GoldHook")==1&&strstr(szTarName,"GoldBlock")!=NULL)
{
//將金塊錨定在鉤子上
dSpriteMountToSpriteLinkPoint(szTarName,"GoldHook",2);
//使鉤子向初始位置移動,即會拉
dSpriteMoveTo("GoldHook",g_fHookStartPosX,g_fHookStartPosY,g_fEmptyHookSpeed,1);
//復制並保存當前抓取到金塊的名稱
strcpy(szGotGoldName,szTarName);
//發起者為GoldHook,接受者含有GoldBlock欄位
//根據金子大小,計算鉤子的往回收的速度,越大的越慢。
//演算法:之前設置的金子大小為4,6,8,用10減去該大小再除以10,得到3個小數:0.6,0.4,0.2.該小數乘以空鉤子的速度即得到掛接不同金子後的實際速度
floatfWidth=dGetSpriteWidth(szTarName);
floatfSpeed=((10.f-fWidth)/10.f)*g_fEmptyHookSpeed;
Score+=fWidth;
//鉤子往初始位置移動
dSpriteMoveTo("goldhook",g_fHookStartPosX,g_fHookStartPosY,fSpeed,1);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1",0);
g_iGameState=1;
flagnum=1;
}
}
//===========================================================================
//
//引擎捕捉到精靈與世界邊界碰撞之後,調用此函數.
//iColSide:0左邊,1右邊,2上邊,3下邊
voiddOnSpriteColWorldLimit(constchar*szName,constintiColSide)
{
if(strcmp(szName,"GoldHook")!=0)
{
//碰到邊界的為鉤子時
//同樣設置為回拉,只是沒有碰到金子
dSpriteMoveTo(szName,g_fHookStartPosX,g_fHookStartPosY,g_fEmptyHookSpeed,1);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3",0);g_iGameState=1;
flagnum=0;
}
}
voidDrawHookLine()
{
//首先,從礦工精靈上獲取一個纜繩鏈接點作為繩子的起始點
floatfStartX=dGetSpriteLinkPointPosX("GoldMan",1);
floatfStartY=dGetSpriteLinkPointPosY("GoldMan",1);
//繩子終點在鉤子精靈上獲取
floatfEndX=dGetSpriteLinkPointPosX("GoldHook",1);
floatfEndY=dGetSpriteLinkPointPosY("GoldHook",1);
//在這兩點之間劃線.線的顏色紅綠藍值都為50,即灰色
dDrawLine(fStartX,fStartY,fEndX,fEndY,2.f,0,50,50,50,255);
}
❹ 有沒有高手能用C語言實現按鍵精靈的功能的
可以!我讀C語言的!得閑寫給你啦!網上都有按鍵精靈下載的!
❺ 怎麼編寫游戲按鍵精靈啊
如何使用按鍵精靈?(使用步驟)
使用步驟如下:
1. 製作腳本:按照個人需求從網上搜集腳本或者自己製作腳本。如果您的腳本是從別的地方收集的,請先把腳本文件拷貝到按鍵精靈文件夾下的script文件夾中,然後再運行按鍵精靈。
2.選擇有效的窗口:建議您選擇「對所有窗口有效」。如果您只需要腳本當某個窗口在前台時有效,請選擇窗口名稱,比如「龍族」
3.讓需要執行的腳本「有效」,只有「有效」一欄中勾中的腳本才會執行。
4.進入游戲(或者其他需要使用按鍵精靈的軟體) ,在需要使用腳本的時候按下腳本的「快捷鍵」,按鍵精靈就會忠實的為您工作了。
按鍵精靈主界面
圖:主界面及功能按鈕
主界面功能簡介:
增加:增加一個新的腳本。
修改:修改當前選中的腳本。
刪除:刪除當前選中的腳本,可以同時選中多個腳本進行刪除。
錄制:錄制新的腳本,新手製作腳本首選功能。
上傳:將當前腳本上傳至按鍵精靈網站,與他人進行交流。
全部有效/無效:讓所有腳本有效或者無效。
注冊:注冊按鍵精靈,使用正版軟體。
幫助:查看用戶幫助手冊。
圖:錄制功能
錄制功能簡介:
強烈推薦的功能!能夠忠實記錄您的動作,並在腳本執行時回放,新手也可隨心所欲製作腳本。按下ScrollLock鍵就可以開始錄制,再次按下就可停止錄制,最後保存即可。如果您需要按鍵精靈忠實的記錄滑鼠移動軌跡,在後面的「記錄滑鼠移動軌跡」前面打個勾就可以了。錄制過程中可以隨便移動錄制工具條,不會對您錄制的動作產生任何影響。
圖:上傳腳本
上傳腳本功能簡介:
在主界面選擇一個腳本,點擊「上傳」按鈕就可以進入上傳腳本界面。
您可以將自己比較得意的腳本上傳到我們的伺服器。在您的腳本上傳成功之後,我們將會進行人工審核。不錯的腳本都會被我們推薦給其他玩家共同學習。
上傳時按鍵精靈會自動填寫一些信息。請您在「腳本說明」里寫上腳本的用途、製作思路等你認為對其他人有幫助的信息。沒有說明或者說明不清楚的腳本將無法獲得推薦。:-)
腳本編輯器
圖:腳本編輯器界面
腳本編輯器使用說明:
在動作選擇區選擇動作,插入右邊的腳本內容區即可。腳本支持粘貼、復制、移動、刪除等操作。
腳本編寫完畢之後,在腳本設置區進行一些必要的設置,點擊「保存腳本」 ,就可保存當前製作的腳本,點擊右上角的X符號可以關閉編輯器返回主界面。
注意:我們默認的終止熱鍵是「F12」 ,目前所有的腳本使用同一個終止熱鍵,也就是按下一個終止熱鍵之後,所有的腳本就會停止運行。
圖:腳本調試功能
腳本調試功能簡介:
腳本調試功能允許您隨時觀察腳本的執行順序,也可以隨意暫停/繼續腳本的運行,方便查找腳本錯誤。當您點擊「執行」後,腳本將會開始執行,同時記錄下每一步執行了哪條動作(語句),您可以隨時按「暫停」熱鍵暫時中止腳本執行,然後點擊「語句編號」立刻查看,看完以後可以隨時讓腳本從中斷處恢復執行。
執行熱鍵: ScrollLock
暫停熱鍵:Pause
停止熱鍵:ScrollLock
圖: 抓點界面
抓點功能簡介:
用戶可以抓取20個坐標點以及相應坐標點的顏色。抓點熱鍵包括數字鍵0到9,以及數字鍵下方的10個字母鍵Q到P。按下熱鍵即可獲得滑鼠當前所在位置的坐標和顏色,以備製作腳本時使用。
偏移抓點:當使用偏移抓點時,實際抓到的是滑鼠附近的一點的坐標和顏色(具體抓到的點用一個「瞄準鏡」表示)。這樣可以解決在某些情況下,滑鼠圖標顏色會擋住真實坐標顏色的問題。
按鍵精靈動作介紹
按鍵精靈的所有動作都需要在「動作選擇區」中選定,然後插入「腳本內容區」。按鍵精靈的所有功能也都集中在動作選擇區中。
按鍵精靈提供了豐富的動作供大家選擇,這些動作分為四個大類。分別介紹如下
鍵盤動作:
按鍵動作:模擬鍵盤按下、彈起以及按鍵的動作。可以區分按下狀態和彈起狀態,也就是可以模擬按住一個鍵不放的動作
按鍵組合:模擬按下組合鍵的情況
滑鼠動作:
滑鼠點擊動作:共有7種點擊類型供你選擇,單擊或者雙擊,左鍵或者右鍵,等等。
抓點動作:點擊「抓點」出現抓點界面,內置20個抓點熱鍵可以抓取20個坐標點,足以滿足大部分人的需要
滑鼠移動動作:將滑鼠移動到屏幕上某個預定的坐標點
滑鼠相對移動:將滑鼠相對當前位置進行移動
保存/恢復滑鼠位置:保存當前滑鼠位置、恢復滑鼠位置到最後一次保存的位置
控制動作:
顏色控制動作:如果某一點的顏色符合條件,就執行後面的語句,顏色可以在「抓點」窗口中抓取
循環動作:將腳本反復執行
跳轉動作: 在腳本的某個位置先設置一個「標記」,然後就可以在這里選擇直接跳轉到「標記」處
子程序調用:製作腳本子程序,可以隨時調用
停止腳本運行:停止腳本運行功能
其它動作:
延時:可以讓腳本停頓一段時間再繼續執行
輸入文本:輸入一串文本,支持中文輸入
注釋/標記:你可以給自己的語句加以注釋,同時這些注釋也可以用來作為「跳轉語句」中的「標記」
彈出窗口:彈出窗口顯示窗口提示內容,可以暫停腳本的運行
按鍵精靈腳本編程語句
1.轉移語句:Goto
格式:Goto [標記]
解釋:跳轉到標記的位置
2.注釋或標記語句:Rem
格式:Rem [注釋或標記]
解釋:可以當作標記供跳轉語句使用,也可以當作腳本的注釋使用
3.條件語句:IfColor ... EndIf
條件正 格式:
IfColor x y color 0(x、y為桌面橫坐標和縱坐標,color為顏色RGB碼)
[語句塊]
EndIf
解釋:如果坐標點(x,y)的顏色等於color的數值,則執行語句塊中的內容
條件反 格式:
IfColor x y color 1
[語句塊]
EndIf
解釋:如果坐標點(x,y)的顏色不等於color的數值,則執行語句塊中的內容
4.循環語句:For ... EndFor
格式:
For [循環次數]
[語句塊]
EndFor
解釋:將語句塊反復執行數次,執行次數由「循環次數」控制
5.延時語句:Delay
格式:Delay [毫秒]
解釋:等待一些時間再執行下一句腳本。
6.游標移動語句:MoveTo、MoveR
格式:
絕對移動:MoveTo x y
解釋:移動滑鼠到(x,y)點
相對移動:MoveR dx dy(dx、dy為正時表示正方向移動,為負即為負方向移動)
解釋:相對當前坐標橫向移動滑鼠x,縱向移動滑鼠y
7.滑鼠控制語句:LeftClick、RightClick、LeftDoubleClick、LeftDown、LeftUp、RightDown、RightUp
格式:
左鍵單擊:LeftClick 1
右鍵單擊:RightClick 1
左鍵雙擊:LeftDoubleClick 1
左鍵按下:LeftDown 1
左鍵彈起:LeftUp 1
右鍵按下:RightDown 1
右鍵彈起:RightUp 1
8.鍵盤按鍵語句:KeyPress、KeyDown、KeyUp
格式:
按鍵:KeyPress code 1(code為鍵盤 ASCII碼)
按住:KeyDown code 1
彈起:KeyUp code 1
9.輸入字元串語句:SayString
格式:SayString [要輸入的字元串]
10.保存/恢復滑鼠位置
格式:
保存滑鼠位置:SaveMousePos
解釋:保存當前滑鼠位置
恢復滑鼠位置:RestoreMousePos
解釋:將滑鼠移動到上一次保存的滑鼠位置
這兩個語句常用於製作網路游戲練功腳本,腳本開始時保存滑鼠位置,腳本結束時恢復滑鼠位置。
11.子程序、子程序調用
格式:
Sub [子程序名]
[語句塊]
Retrun
解釋:將一些語句放在子程序中,可以被反復調用
Gosub [子程序名]
解釋:調用子程序中的語句塊
11.腳本停止運行
格式:EndScript
解釋:完全停止當前腳本的運行。可以用於調試腳本。
12.彈出窗口
格式:MessageBox [窗口顯示內容]
解釋:彈出一個窗口,顯示設置的內容,用戶點擊「確定」 方可繼續運行腳本,可以用於暫停腳本的運行
下載的話直接去BAIDU搜索就可以
❻ C語言怎麼實現按鍵精靈的功能
使用WindowsAPI設置鍵盤鉤子。
❼ 利用C語言能實現按鍵精靈的模擬按鍵功能嗎
使用這個Windows api:
BOOL PostMessage(
UINT message,
WPARAM wParam = 0,
LPARAM lParam = 0
) throw();
不過直接這么簡單寫的話,人家是驅動級防護,開始就hook全局api,個人直覺,估計還是給和諧。不信你拿記事本試試是可以用的,到了游戲裡面就死翹翹。
樓主要做什麼網游的?
第一個為要發送窗口的窗口句柄第二個為要發送的消息三四為要發送的內容,一個寫0就可以了
❽ C語言編寫按鍵精靈
在游戲里做模擬按鍵,普通方法是不行的。
要麼用Direct Input要麼用驅動
LZ可以去看看WINIO的資料,不過現在很多游戲都把WINIO屏蔽掉了。
GOOD LUCK