如何用C#做一个数独游戏有什么作用

我想用C#写游戏的辅助程序,请问
[问题点数:30分,结帖人wuweiawj1314]
我想用C#写游戏的辅助程序,请问
[问题点数:30分,结帖人wuweiawj1314]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|豆丁微信公众号
君,已阅读到文档的结尾了呢~~
九宫格 全民英雄九宫格 九宫格输入法 九宫格数独游戏 挑战九宫格 梅西九宫格 九宫格火锅 全民英雄九宫格宝藏 九宫格宝藏 ios7 九宫格
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
教你如何用C#开发九宫格游戏(完整版代码,图文互解,轻松就可学会)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口用C#编写游戏_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用C#编写游戏
&&这是一个用C#编写的打靶游戏
希望对你有帮助
你可能喜欢51CTO旗下网站
一个简单C#游戏程序制作
本文介绍了网上有很多C#游戏程序制作的教程,大多是讲针对大型网络游戏的,主要包含一些抓包、反汇编、C++的知识综合。事实也如此,常见的外挂都是使用VC++写的,从来没有过C#或者其他.NET语言编写的程序。
作者:dht8来源:| 09:11
在向大家详细介绍C#游戏程序制作之前,首先让大家了解下作为游戏程序来说,主要就是三个功能:模拟键盘操作、模拟鼠标操作、修改内存数据,然后全面介绍C#游戏程序制作。
网上有很多C#游戏程序制作的教程,大多是讲针对大型网络游戏的,主要包含一些抓包、反汇编、C++的知识综合。事实也如此,常见的外挂都是使用VC++写的,从来没有过C#或者其他.NET语言编写的程序。
作为微软.NET技术的忠实粉丝,这难免是一种遗憾。不过不要紧,下面流牛木马就教大家两招,包教包会,免收学费。 :)
其实作为游戏程序来说,主要就是三个功能:模拟键盘操作、模拟鼠标操作、修改内存数据。修改内存数据比较难,但模拟鼠标键盘的操作却很简单。很多流行游戏的外挂,都可以只通过模拟鼠标键盘来实现,例如:劲舞团、QQ音速、连连看、各类网页游戏,以及各类大型网游中的自动打怪、自动吃药等等。
Warcraft Ⅲ,学名魔兽争霸之冰封王座,俗称魔兽,简称war3,在最近六七年风靡全球。最近两年,war3在中国又掀起了玩DOTA的新高潮。
本文制作DOTA游戏中的显血、改键外挂为例,简单地介绍如何制作C#游戏程序。
本示例包含两个功能:显血;将Q键改为小键盘的7键。玩war3的同学都知道,这两个功能对于war3(尤其是DOTA)相当重要。
首先简单介绍一下,程序模拟键盘的原理。
程序与游戏程序是两个不同的进程。外挂程序使用Windows提供的API找到游戏程序的进程,并设置键盘钩子(什么叫做钩子?你不知道,但百度知道。)设置完钩子后,我们再监控游戏进程中用户的按键,并根据用户需求进行处理,完成某些模拟键盘动作。
了解了这个过程之后,我们就可以开始整理思路了。完成C#游戏程序一共需要以下四个步骤:
一、声明Windows API 中的函数和常量&&&&&&&&&&&&&&[StructLayout(LayoutKind.Sequential)] &&&&&&&&&public&class&KeyBoardHookStruct &&&&&&&&&{ &&&&&&&&&&&&&public&int&vkC &&&&&&&&&&&&&public&int&scanC &&&&&&&&&&&&&public&int& &&&&&&&&&&&&&public&int& &&&&&&&&&&&&&public&int&dwExtraI &&&&&&&&&} &&&&&&&&&#region&DllImport &&&&&&&&&&&&&&&&&&[DllImport("user32.dll",&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)] &&&&&&&&&public&static&extern&int&SetWindowsHookEx(int&idHook,&HookProc&lpfn,&IntPtr&hInstance,&int&threadId); &&&&&&&&&[DllImport("user32.dll",&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)] &&&&&&&&&&&&&&&&&&public&static&extern&bool&UnhookWindowsHookEx(int&idHook); &&&&&&&&&[DllImport("user32.dll",&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)] &&&&&&&&&&&&&&&&&&public&static&extern&int&CallNextHookEx(int&idHook,&int&nCode,&IntPtr&wParam,&IntPtr&lParam); &&&&&&&&&&&&&&&&&&[DllImport("kernel32.dll",&CharSet&=&CharSet.Auto,&CallingConvention&=&CallingConvention.StdCall)] &&&&&&&&&private&static&extern&IntPtr&GetModuleHandle(string&lpModuleName); &&&&&&&&&&&&&&&&&&&[DllImport("USER32.DLL")] &&&&&&&&&public&static&extern&IntPtr&FindWindow(string&lpClassName, &&&&&&&&&&&&&string&lpWindowName); &&&&&&&&&&&[DllImport("USER32.DLL")] &&&&&&&&&public&static&extern&bool&SetForegroundWindow(IntPtr&hWnd); &&&&&&&&&[DllImport("User32.dll")] &&&&&&&&&public&static&extern&void&keybd_event(Byte&bVk,&Byte&bScan,&Int32&dwFlags,&Int32&dwExtraInfo); &&&&&&private&const&int&KEYEVENTF_KEYUP&=2;&
本例所使用的函数比较少,它们都在系统的USER32.dll里,包括:设置和取消钩子、调用下一个钩子、导入进程、模拟键盘等等。我们依次导入它们。
这些函数的命名规范合理,几乎只根据函数名就能知道其功能。
如果读者对于其中的某些函数不熟悉,请自行搜索MSDN。
二、使用Windows API设置钩子&
有了以上windows API函数的声明,下一步就是设置钩子了。
寥寥两行代码,但包含了相当丰富的内容。&public&delegate&int&HookProc(int&nCode,&IntPtr&wParam,&IntPtr&lParam); && &&public&void&Hook_Start() &&&&&{ &&&&&&&&&&&&&&&&&&if&(hHook&==&0) &&&&&&&&&{ &&&&&&&&&&&&&KeyBoardHookProcedure&=&new&HookProc(KeyBoardHookProc); &&&&&&&&&&&&&&hHook&=&SetWindowsHookEx(WH_KEYBOARD_LL,&KeyBoardHookProcedure,&GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName),&0); &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&} &&&&&}&
先介绍一下设置钩子的明星函数:SetWindowsHookEx 。它的参数说明如下。◆SetWindowsHookEx(◆idHook: I&& {钩子类型}◆lpfn: TFNHookP {函数指针}◆hmod: HINST;&&&&&& {包含钩子函数的模块(EXE、DLL)句柄; 一般是 HI 如果是当前线程这里可以是 0}◆dwThreadId: DWORD {关联的线程; 可用 GetCurrentThreadId 获取当前线程; 0 表示是系统级钩子}◆HHOOK;&&&&&&&&&&& {返回钩子的句柄; 0 表示失败}
请注意lpfn这个参数。上面的解释是“函数指针”。在C#中,是不能直接使用指针的,更不要说函数指针了。我们可以采用C#中的委托(delegate)来实现函数指针的功能。
于是乎,在上面的代码中,我们定义了一个处理键盘消息函数的委托KeyBoardHookProcedure = new HookProc(KeyBoardHookProc),并将它作为参数传入SetWindowsHookEx 内。KeyBoardHookProc就是被委托的具体函数。
三、监控用户操作
设置好钩子后,我们可以在被委托的函数中写入监控用户操作与模拟键盘的代码。public&static&int&KeyBoardHookProc(int&nCode,&IntPtr&wParam,&IntPtr&lParam) &&&&&&&&&{ &&&&&&&&&KeyBoardHookStruct&input&=&(KeyBoardHookStruct)Marshal.PtrToStructure(lParam,&typeof(KeyBoardHookStruct)); &&&&&&&&&&&&&&&&&&&&&&&&&&&if&(input.vkCode&==&(int)Keys.Home) &&&&&&&&&&&&&{ &&&&&&&&&&&&&&&&} &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&return&CallNextHookEx(hHook,&nCode,&wParam,&lParam); &&&&&&&&&&}&
四、根据用户需要模拟键盘操作
显血功能:玩war3的都知道,war3自带的显血快捷键有3个。Alt键是显示所有单位生命,[ 键显示友方单位生命,] 键显示地方单位生命。外挂需要做的事情仅仅是模拟一直按着某个键不松手而已。由于Alt键与其他很多键构成组合键,故我们不能模拟长按Alt,否则会影响正常游戏。我们的解决方案应该是模拟长按 [ 键和 ] 键。代码如下:&&&IntPtr&wcHandle&=&FindWindow(null,&"Warcraft&III"); &&&&&&&if&(wcHandle&!=&IntPtr.Zero) &&&{ &&&&&&&&&&&&&&SetForegroundWindow(wcHandle); &&&byte&VK_NUM1&=&219;&&&&&&&&byte&VK_NUM2&=&221;&&&&&&&&keybd_event(VK_NUM1,&0,&0,&0);&&&&keybd_event(VK_NUM2,&0,&0,&0);&&&
改键:小键盘(Numpad)上的快捷键很不方便按,所以很多玩家喜欢把小键盘上的键改到左边的字母键盘。玩war3的同学都知道,没有任何英雄的技能使用"Q”这个快捷键。于是我们把小键盘上的7键改到Q上,也不会造成任何冲突。方法也很简单:如果监控到用户按"Q”键,则像游戏进程发送小键盘上的"7"键。代码如下:&&&&if&(input.vkCode&==&(int)Keys.Q) &&&&{ &&&&&&&&&&&&&&&&IntPtr&wcHandle&=&FindWindow(null,&"Warcraft&III"); &&&&&&&&&&&&&&&&&if&(wcHandle&!=&IntPtr.Zero) &&&&&&&&{ &&&&&&&&&&&&&&&&&&&&&&&&SetForegroundWindow(wcHandle); &&&&&&&&&&&&byte&VK_Q&=&(byte)Keys.NumPad7; &&&&&&&&&&&&keybd_event(VK_Q,&0,&0,&0);&&&&&&&&&&&&keybd_event(VK_Q,&0,&KEYEVENTF_KEYUP,&0);&&&&&&&&&} &&&&&&&&return&1; &&&&}&
好了,到这里就把模拟键盘的C#游戏程序介绍完了。模拟鼠标与之非常类似,请用户自行揣摩。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条热点头条关注热点
24H热文一周话题本月最赞
讲师:742305人学习过
讲师:172124人学习过
讲师:12217人学习过
精选博文论坛热帖下载排行
本书全面而详细地介绍了Linux操作系统。全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机;第二部分介绍Linu...
订阅51CTO邮刊数独辅助工具,c#编写。
数独辅助工具,c#编写。
1.软件下载地址和C#源码地址
https://pan.baidu.com/s/1geGAETP
2.相关环境
操作系统:win10 64位
开发环境:VS2017
必需环境:Net FrameWork2.0
3.大概功能
青青子美人之数独辅助工具,里面包含随机出题功能,人工出题功能,提示功能,自动解题功能。
自动解题功能采用的是回溯法,跟骑士问题差不多。这个回溯法,可不是普通的回溯法,每次找解的时候,都是从最少解开始找。不要小看从最少的解开始找,这可是提升效率的利器。骑士问题也是一样,也得从最少解开始找,这样效率才快。网上很多骑士算法效率很慢,那是因为找解的时候不是从最少解开始找。这映射了:人生选择不要太多,选择太多,失去越多。
另外,我在解题的时候,增加了随机性,当数独不止一个解的时候,结果是随机产生的,每次运行都会是不一样的结果。我测试过17个数唯一解数独,大概需要20秒的时间,勉强可以接受。
4.软件界面
这是出题功能,人工按钮是需要手动输入数字的,而随机按钮是自动出题的。
AI按钮是自动解题
提示按钮是提示能输入的数字
5.白币(XWC)投票送币活动
交易平台,币价又要翻倍!点击
https://www.kex.com/user/goVoting.html&
&这个链接进行投票白币(XWC)。 网站先设置成中文,注册后就可以投票了!
投票后, 联系这个QQ群的群主,会送10个白币,相当于4元钱。
这里是白币私钥:
WsBLkkXYyjXo4JsJULLQGS76py36yAJVhkNuBLu7Jy1622KNgrVW
免费赠送,先到先得。
如果觉得有用,就打赏点虚拟币给我,谢谢。
白币(XWC)打赏地址:WYkBw4qveiFGgkCJbKmz55SAK79qJwGrQv
比特币(BTC)打赏地址:1KckCJAiMnwbQLSSSWY7uJBfcgvrMsMJiZ
无限币(IFC)打赏地址:i66xPVPgZXWuAPPMbqh4q1fhJABUFwHi9q
狗狗币(DOGE)打赏地址:DJBF5UwQwuPJj72XsQi62cwDooyPLY1i2e
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 数独游戏在线玩 的文章

 

随机推荐