❶ 驱动精灵的玩游戏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