精华内容
下载资源
问答
  • 关于“H5小游戏源代码如何转换微信小游戏发布” 基于 HTML5 的游戏引擎会通过以下方式去创建画布、音频,获取屏幕宽高 let canvas = document.createElement(‘canvas’) let audio = document.createElement(...

    关于“H5小游戏源代码如何转换微信小游戏发布”

    基于 HTML5 的游戏引擎会通过以下方式去创建画布、音频,获取屏幕宽高
    let canvas = document.createElement(‘canvas’)
    let audio = document.createElement(‘audio’)
    console.log(window.innerWidth)
    console.log(window.innerHeight)

    而微信小游戏的运行环境是一个不同于浏览器的宿主环境,没有提供 BOM 和 DOM API,提供的是 wx API。通过 wx API,开发者可以调用 Native 提供的绘制、音视频、网络、文件等能力。
    如果你想创建画布,你需要调用 wx.createCanvas()
    let canvas = wx.createCanvas()
    let context = canvas.getContext(‘2d’)
    如果你想创建一个音频对象,你需要调用 wx.createInnerAudioContext()
    let audio = wx.createInnerAudioContext()
    audio.src = ‘bgm.mp3’// src 地址仅作演示,并不真实存在
    audio.play()

    所以HTML5 的游戏引擎都不能直接迁移到小游戏中使用,因为引擎可能或多或少都用到了 BOM 和 DOM 这些浏览器环境特有的 API。只有对引擎进行改造,将对 BOM 和 DOM API 的调用改成 wx API 的调用,引擎才能运行在小游戏环境中。详情请查看微信小游戏开发文档。

    展开全文
  • Apress源代码 该存储库伴随着Kishan Takoordyal撰写的(Apress,2020年)。 使用绿色按钮将文件下载为zip格式,或使用Git将存储库克隆到您的计算机上。 发布 v1.0版对应于已出版书籍中的代码,没有更正或更新。 ...
  • 1.3 如何搭建android开发环境 4 1.3.1 sdk的安装及环境配置 5 1.3.2 eclipse集成开发环境的搭建 7 1.3.3 创建并启动模拟器 9 1.4 hello android应用程序的开发 11 1.4.1 第一个android应用程序 12 ...
  • Java吃豆子游戏源代码 6个目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中...
  • 10.5 【实例】IP封包截获工具IPPack源代码分析 392 10.5.1 主窗口界面 392 10.5.2 注入DLL 395 10.5.3 处理封包 399 第11章 内核模式程序设计与Windows防火墙开发 403 11.1 Windows操作系统的体系结构 ...
  • vc源代码合集(87个文件)1444.rar

    热门讨论 2012-06-14 15:17:51
    2012-06-14 13:48 2,154,118 android Agile Buddy游戏源代码分享.rar 2012-06-14 14:31 7,899,507 Apache Server源代码分析.pdf 2012-06-14 14:30 1,796,939 Apache源代码全景分析.pdf 2012-06-14 13:44 55,808 asp...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    该资料是《iPhone开发秘籍:第2版》的源代码 对应的书籍资料见: iPhone开发秘籍:第2版(iphone开发必备佳作,在第一版的基础上进行了全面修订和大量扩充) 基本信息 原书名: The iPhone Developer's Cookbook: ...
  • EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean...
  • 从之前的文章中,可以知道如何找到植物大战僵尸的游戏基址,以及其全部内存地址。。 下面将其实现出来。。 说明:通过游戏基址,再加上偏移量,修改游戏在内存中的值。实现无限阳光‘、无限金币、免CD、免暂停的...

    从之前的文章中,可以知道如何找到植物大战僵尸的游戏基址,以及其全部内存地址。。

    下面将其实现出来。。

    说明:通过游戏基址,再加上偏移量,修改游戏在内存中的值。实现无限阳光‘、无限金币、免CD、免暂停的功能。。。。,本例子的游戏是植物大战僵尸-----英文原版。

    注意:不同版本的游戏的游戏基址不一定相同。’

     

    思路:

    1.打开进程,并获取进程句柄。

      方式:1.可以遍历当前所有的进程。

        CreateToolhelp32Snapshot(),Process32First(),Process32Next(),OpenProcess()。

         2.直接利用VS的SPY++,得到进程的句柄。(或者得到进程的标题、类名,再通过标题得到窗口句柄,再得到进程ID,再得到进程句柄)

        FindWindow(),GetWindowThreadProcessId(),OpenProcess().

    2.根据游戏基址+偏移量,得到修改地址。将值修改成自定义值。(具体偏移多少次,看之前的文章----游戏内存地址)

     

    主要用到函数:

    ReadProcessMemory(),读取内存
    WriteProcessMemory(),修改内存

    修改内存权限后,在写入。。。。。
    VirtualProtectEx(g_hProcess, pCode, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect);
    WriteProcessMemory(g_hProcess, pCode, opCode, 4, NULL);
    VirtualProtectEx(g_hProcess, pCode, 4, dwOldProtect, NULL);
    
    
    // jsConsole.cpp : 定义控制台应用程序的入口点。
    
    #include "stdafx.h"
    #include <Windows.h>
    
    //游戏基址
    int g_nBaseAddr = 0x006A9EC0;
    //游戏句柄
    HANDLE g_hProcess;
    
    //根据基址计算出两次偏移后的地址
    int *get2Point(int g_nBaseAddr, int p1, int p2)
    {
        int iBase, iP1, *iP2;
    
        if (!ReadProcessMemory(g_hProcess, (LPVOID)g_nBaseAddr, &iBase, 4, NULL))
        {
            return NULL;
        }
    
        if (!ReadProcessMemory(g_hProcess, (LPVOID)(iBase + p1), &iP1, 4, NULL))
        {
            return NULL;
        }
    
        //返回最终地址
        iP2 = (int *)(iP1 + p2);
        return iP2;
    }
    
    //根据基址计算出三次偏移后的地址
    int *get3Point(int g_nBaseAddr, int p1, int p2, int p3)
    {
        int iBase, iP1, iP2, *iP3;
    
        if (!ReadProcessMemory(g_hProcess, (LPVOID)g_nBaseAddr, &iBase, 4, NULL))
        {
            return NULL;
        }
    
        if (!ReadProcessMemory(g_hProcess, (LPVOID)(iBase + p1), &iP1, 4, NULL))
        {
            return NULL;
        }
    
        if (!ReadProcessMemory(g_hProcess, (LPVOID)(iP1 + p2), &iP2, 4, NULL))
        {
            return NULL;
        }
        iP3 = (int *)(iP2 + p3);
        return iP3;
    }
    
    //改变阳光值
    void ModifySun()
    {
        //获取阳光所在地址
        int *pSun = get2Point(g_nBaseAddr, 0x768, 0x5560);
        //将阳光改为多少
        int nSunValue = 999999;
        //修改
        WriteProcessMemory(g_hProcess, pSun, &nSunValue, 4, NULL);
    }
    
    //修改关卡
    void ModifyGuanka()
    {
        int *pGuanka = get2Point(g_nBaseAddr, 0x82C, 0x24);
        int guankaValue = 58;
        WriteProcessMemory(g_hProcess, pGuanka, &guankaValue, 4, NULL);
    }
    
    //修改金币
    void ModifyMoney()
    {
        int *pMoney = get2Point(g_nBaseAddr, 0x82C, 0x28);
        int moneyValue = 999999;
        WriteProcessMemory(g_hProcess, pMoney, &moneyValue, 4, NULL);
    }
    
    //点击其他程序,游戏不会暂停。免暂停
    void ModifyPause()
    {
        unsigned char *pCode = (unsigned char *)0x4502C0;
    
        //修改内存读写权限
        DWORD dwOldProtect;
        VirtualProtectEx(g_hProcess, pCode, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect);
        unsigned char opCode[] = "\xC3\x04\x00";
        WriteProcessMemory(g_hProcess, pCode, opCode, 4, NULL);
    
        VirtualProtectEx(g_hProcess, pCode, 4, dwOldProtect, NULL);
    }
    
    //利用线程不断更新阳光和金币、免CD。实现无限金币
    DWORD WINAPI ModifyCDThread(
        LPVOID lpParameter   // thread data
        )
    {
        while (1)
        {
            //修改阳光
            ModifySun();
    
            //获取卡槽数目地址
            int *pCount = get3Point(g_nBaseAddr, 0x768, 0x144, 0x24);
            if (pCount == NULL)
                continue;
    
            //获取第一个卡槽地址
            int *pFirst = get3Point(g_nBaseAddr, 0x768, 0x144, 0x4C);
            if (pFirst == NULL)
                continue;
    
            //获取卡槽数目
            int nCount = 0;
            ReadProcessMemory(g_hProcess, pCount, &nCount, 4, NULL);
    
            //对每一个卡槽进行免CD
            for (int i = 0; i < nCount; i++)
            {
                //pFirst[0] = pFirst[1];//读和写
    
                int nRecoveryTime;
                ReadProcessMemory(g_hProcess, pFirst + 1, &nRecoveryTime, 4, NULL);
                WriteProcessMemory(g_hProcess, pFirst, &nRecoveryTime, 4, NULL);
                
                //卡槽间的偏移量为50
                pFirst = (int *)((int)pFirst + 0x50);
            }
            Sleep(100);
        }
    }
    
    
    void ModifyCD()
    {
        CreateThread(0, 0, ModifyCDThread, 0, 0, 0);
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        //获取游戏窗口所在进程的进程ID,也就是PID
        HWND hWnd = FindWindow(NULL, TEXT("植物大战僵尸中文版"));
        if (NULL == hWnd)
        {
            printf("查找窗口失败\n");
            return 0;
        }
        
        DWORD dwProcessId;
        GetWindowThreadProcessId(hWnd, &dwProcessId);
        printf("进程ID:%d\n", dwProcessId);
        
        //获取进程句柄
        g_hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
        if (NULL == g_hProcess)
        {
            printf("打开进程失败\n");
            return 0;
        }
    
        ModifySun();
        ModifyGuanka();
        ModifyMoney();
        ModifyPause();
    
        ModifyCDThread(0);
        getchar();
        return 0;
    }

     

    转载于:https://www.cnblogs.com/gd-luojialin/p/7789972.html

    展开全文
  • NGUI中如何获取当前点击的物体

    千次阅读 2014-05-05 15:29:55
    NGUI中如何获取当前点击的物体  2013-05-14 17:19:46| 分类: Unity|举报|字号 订阅 ...NGUI的UICamera中定义了一个内部类MouseOrTouch表示...//begin源代码// public class MouseOrTouch  {  public V

    NGUI中如何获取当前点击的物体  

    2013-05-14 17:19:46|  分类: Unity|举报|字号 订阅

    NGUI的UICamera中定义了一个内部类MouseOrTouch表示当前的输入设备:鼠标,Touch,或是游戏杆。

    //begin源代码//

    public class MouseOrTouch
     {
      public Vector2 pos;    // Current position of the mouse or touch event
      public Vector2 delta;   // Delta since last update
      public Vector2 totalDelta;  // Delta since the event started being tracked

      public Camera pressedCam;  // Camera that the OnPress(true) was fired with

      public GameObject current;  // The current game object under the touch or mouse
      public GameObject pressed;  // The last game object to receive OnPress

      public float clickTime = 0f; // The last time a click event was sent out

      public ClickNotification clickNotification = ClickNotification.Always;
      public bool touchBegan = true;
      public bool pressStarted = false;
      public bool dragStarted = false;
     }

    //end源代码//

    在MouseOrTouch中定义了当前点击的物体:current

    当我们点击某个物体时,只需要调用UICamera.currentTouch.current即可获取具体点击的是哪个物体。

    这个方法是为了在不同的按钮使用同一点击事件时非常有效。

     

    例如:在滚动列表子项中的所有按钮的响应事件都为OnUpgradeBtnClick。在OnUpgradeBtnClick中调用 UICamera.currentTouch.current即可获取我点击的具体按钮。从而知道他的数据:UIData uiData = curObject.transform.parent.GetComponent<UIData>();

    for (int i = 0; i < list.Count; i++) {
       SerEquip equip = list [i];
       GameObject upgradeItem = NGUITools.AddChild (upGradeTable.gameObject, PrefabMgr.Instance ().GetPrefab ("GUI/Main/Equipment/Item/UpgradeItem"));

       UIData uiData = upgradeItem.AddComponent<UIData> ();
       uiData.Data = equip;

             //UpgradePanel下的upgrade按钮的响应函数//
       GameTools.EventClick (upgradeItem, "upGradeBtn", wndObject, "OnUpgradeBtnClick");

    }

     

    //升级面板  下upgrade按钮响应函数//
     public void OnUpgradeBtnClick() 
     {
      GameObject curObject = UICamera.currentTouch.current;  
      UIData uiData = curObject.transform.parent.GetComponent<UIData>();
      WndMgr.Instance().ToggleWnd((int)UIType.Equip);
      UpgradeWnd upgradeWnd = (UpgradeWnd)WndMgr.Instance().ShowWnd((int)UIType.Upgrade);
      upgradeWnd.SetEquip((SerEquip)uiData.Data);
     }

    展开全文
  • 也不要难过接下咱们来讲讲怎么爬取LOL官网本次案例使用到的模块import requestsimport reimport json安装模块:pip install requests#re、json都是自带的不需要安装01获取JS源代码 获取英雄的ID首先让咱们找到每个...

    你没有看错,没错今天小编带你爬取LOL官网全英雄皮肤的图片

    663a68922247204ac30c3f9e8681678a.png

    不要失望,也不要难过

    接下咱们来讲讲怎么爬取LOL官网

    530fcc71dd3875d122cf546221f40d0a.png

    本次案例使用到的模块

    import requests

    import re

    import json

    安装模块:

    pip install requests

    #re、json都是自带的不需要安装

    01

    获取JS源代码 获取英雄的ID

    首先让咱们找到每个英雄皮肤的地址,F12打开开发者工具页面选择器,选中图片自动找寻到图片的地址

    981015fd813e0faae686afb7c17db29d.png

    龙的传人 李青的图片地址:

    http://ossweb-img.qq.com/images/lol/web201310/skin/big64003.jpg

    神僧 李青图片地址:

    http://ossweb-img.qq.com/images/lol/web201310/skin/big64011.jpg

    不难发现其中的规律:

    big64003.jpg

    big64011.jpg

    很明显 64是英雄的ID地址 003是皮肤顺序

    c4df1678e334618d359166a667bd6670.png

    43fca2ccb1f2e866fb9a9fbd27ff6648.png

    找到JS源代码,你会发现英雄的ID地址并不是按照顺序排列下来的!

    1 def getLOLImages():

    2 url_js = 'http://lol.qq.com/biz/hero/champion.js'

    3 #获取JS源代码 str bytrs字节

    4 res_js = requests.get(url_js).content

    5 #转码

    6 html_js = res_js.decode()

    7 #正则表达

    8 req = '"keys":(.*?),"data"'

    9 list_js = re.findall(req,html_js)

    10 # str → dict

    11 dict_js = json.loads(list_js[0])

    12 print(dict_js)

    fd2d987153907915edfcbb99f27ab329.png

    很多不明白这个正则表达式怎么写,这里简单的说明一下:

    ae6066f3c649eacdc964641974e36d53.png

    前面是 “keys”:后面是,“data” 然后我们需要提取的是中间的部分,那么不管它们是啥,我们就是.?* 通配符全部匹配出来。

    后面就不详细讲解了,本篇文章最后,小编会带上详细的视频讲解

    02

    拼接URL地址、获取下载图片的地址

    pic_list = []

    for key in dict_js:

    #print(key)

    for i in range(20):

    num = str(i)

    if len(num) == 1:

    hreo_num = "00"+num

    elif len(num) == 2:

    hreo_num = "0"+num

    numstr = key+hreo_num

    url = "http://ossweb-img.qq.com/images/lol/web201310/skin/big"+numstr+".jpg"

    print(url)

    pic_list.append(url)

    list_filepath = []

    path = "图片保存地址"

    #print(dict_js.values())

    for name in dict_js.values():

    for i in range(20):

    file_path = path + name + str(i) + '.jpg'

    list_filepath.append(file_path)

    #print(list_filepath)

    03

    下载图片

    n = 0

    for picurl in pic_list:

    res = requests.get(picurl)

    n+=1

    if res.status_code ==200:

    print("正在下载%s"%list_filepath[n])

    with open(list_filepath[n],'wb') as f:

    f.write(res.content)

    详细视频学习地址

    d20ea4e1aba998734190420929363b1d.gif

    链接:https://pan.baidu.com/s/1TbPuMUsKvuk9bqh3hm6wNQ

    密码:ewyk

    3aa40a6b052e0c008fd7281d58deb883.gif

    展开全文
  • python海龟画图碰撞动画演示"""获取鼠标指针测试item之间的碰撞这份源代码展示了如何实时获取鼠标指针坐标,如何进行碰撞检测,这样用海龟画图模块制作游戏方便多了."""import timefrom turtle import Turtle,...
  • Open Match是一个开放源代码游戏配对框架,可简化构建可扩展和可扩展的Matchmaker... 《详细说明了如何获取源代码,进行更改,测试以及向公开比赛提交拉取请求。 支持 ( ) 行为守则 参与该项目受《 执照 阿帕奇2.0
  • 拥有自己的源代码的股票软件,并不是难事, 就像设计自己的穿越火线网络游戏一样,有兴趣就搞搞,没兴趣就算了。免得浪费自己的时间。 内幕消息才是关键的,比如这一次毛衣战就很大影响股票走势。庄家提前布局,...
  • windows phone 游戏

    2013-03-06 14:39:00
    本文汇集了一些Windows Phone 7游戏开发相关的教程、源代码和书籍,以帮助开发者在Windows Phone 7平台上创建自己的游戏。一、教程1. Windows Phone 7 快速入门:在Windows Phone 7平台创建游戏本教程使用...
  • 若干程序资料12.rar

    热门讨论 2012-06-11 22:11:26
    2012-06-11 21:13 1,001,214 坦克游戏源代码.zip 2012-06-11 21:17 183,973 基于ATmega8 的ucos-II应用.rar 2012-06-11 21:01 12,345,799 基于FGPA的PCM编译码模块设计.zip 2012-06-11 21:06 3,769,694 基于LABVIEW...
  • SphericalCow-UnityRpgData RPG数据系统是一个使用Unity引擎帮助制作RPG游戏的系统。 具体来说,它负责管理... 这段代码最初是为编写的,但是对源代码的版权归还给了我。 请阅读以获取更多信息。 根据MIT许可证发布。
  • 有关如何源代码构建游戏的说明,请参阅 。 更多信息 有关游戏各个方面的详细文档,请参见韦诺之战官方网站。 可以在doc / manual / manual。*。html或在线找到有关如何游戏的(翻译)描述: 官方的韦诺之战...
  • 本文汇集了一些 Windows Phone 7 游戏开发相关的教程、源代码和书籍,以帮助开发者在 Windows Phone 7 平台上创建自己的游戏。   一、教程  1. Windows Phone 7 快速入门:在 Windows Phone 7 平台创建游戏  ...
  • 源代码和图形资产可用于学习目的。 但是,您可以随意派生此存储库,扩展游戏或发布基于该存储库的任何内容。 如何进行混战 获取 获取HARFANG 3D 从下载它,然后按照 或者,在命令行中使用PIP键入“ pip install ...
  • 文章目录 1. pygame库的简介2....那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:961562169 私信小编01即可获取Python学习资料 1. pygame库的.
  • 教你如何反编译微信小程序

    万次阅读 2018-03-26 11:38:02
    前言众所周知,“跳一跳”在前几个月很火,并且...当时我在对其他微信小程序应用进行尝试的时候发现,他们不同于小游戏,解包后的文件并不能通过简单增改就直接在微信开发者工具中运行,于是对小程序源代码=&gt;...
  • 跟我一步一步用Docker...关键步骤为:构建Beimi服务端依赖的开发环境获取 源代码编译运行和与前端调试简介Beimi (贝密) 是一款开源的棋牌软件,它的技术线路是:前端cocos creator,后端 java, spirng boot,数据库...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

如何获取游戏源代码