草庐IT

效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码 微信小程序开源了

谢玄. 2023-07-30 原文

⭐零、教程概述

效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码,有数据库和关卡。
我写的程序是指 卡牌堆叠游戏 ,效果与羊了个羊一致。本教程有已有两个版本。

本来是想着Fork多一点的时候再开源的,没有想到一个Fork都没有。

现在是 微信小程序 版本。
我就不在这里吐槽微信小程序的 Canvas 效率低了。
懂得都懂。
这个版本使用

WX 使用 Javascript + PHP + MySql实现。

其他版本请转链接:
效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码:https://blog.csdn.net/apple_53792700/article/details/127255790
旧的使用:
PHP 使用 PHP + H5 + CSS + JS + MySql 实现。
H5 使用 H5 + CSS + JS 实现 。

♾️各版本的区别

PHPWX 都是调用接口获取 地图 与 地区排名。而 H5 是写死的文件。
WX 是实时刷新的动态界面 ,刷新频率约为 60次 每秒,也就是 60fps ,而 PHPH5 均为需要动的时候才动,比如点击卡牌时,并无固定刷新频率。
WX 是依赖与 PHP 的,也就是说 如果你需要搭建 WX版本的你就得先搭建好 PHP版本的。
PS:除非你调用我的接口,也就是说你WX的源码动都不动一下。

⭐零·壹、代码获取

CandyMieGame_WX(注意获取V0.0.0版本的代码):
 Github: https://github.com/MR-XieXuan/CandyMieGame_WX

目录

一 、⭐逻辑的实现

♾️1.1 JavaScript 语言的内核实现

逻辑实现是在 PHP 版本里面原封不动的搬过来的,仅改了一下兼容性。

方法 与 变量命名均一致。

二、⭐配置CandyMieGame_WX并运行代码

♾️2.1 PHP 后端

配置 PHP后端 部分可以查看下面这篇文章的配置PHP代码部分:
效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码:https://blog.csdn.net/apple_53792700/article/details/127255790#211_CandyMieGame_PHP_122

♾️2.1 微信小游戏

使用微信开发者工具导入,导入后需要
修改 js/Servo/servo.js 文件 内的 url: "https://game.mrxie.xyz/" , 把值修改成你配置的 PHP 服务的地址。
配置 域名信息,把合法域名改成你的域名。

大体配置完成。

三、⭐JS 游戏的逻辑实现

♾️3.1 对象 的 分类

这里面的对象大致分为四类

  1. 场景器
  2. 控制器
  3. 主控制器

♾️3.1 主控制器 - Main

主控制器只有一个 Main
整个程序都是由 主控制器 指导运行的。
主控制器会对场景器与控制器进行管理。

创建 主控制器时 会发生:
创建游戏画布并创建 背景音乐控制器*Audio (如果背景音乐已经在缓存中的话会尝试播放背景音乐)。
然后 初始化场景为 LoadPage 场景器 这个场景器会绘制加载的场景。
检查现在缓存中有的资源 把缺少的资源整理成列表。
初始化 下载控制器DownLoad 并且根据列表下载需要资源。
定时调用绘制画布函数 show 刷新频率在 60fps setInterval(this.show.bind(this), 1000 / 60);

主控制器有函数:
用来更新数据的函数 updata();
用来调用场景器绘制画布的函数 show();

调用 show() 函数前会调用一次 updata(); 更新数据。

♾️3.1 场景器

场景器 主要用于控制 画布的场景绘制,同一时间有且只有一个场景器在运行。
场景器 内一定有函数 :
用来更新数据的函数 updata()
用来刷新画布的函数 show()
这些函数都只能由 主控制器调用。

每个场景器都有唯一的编号,这个编号由 主控制器 决定 。
有些需要请求资源的场景器那么就需要先跳转到 0号场景 (加载场景)。
并且会有一个成员 pageQuest 用来告诉主控制器跳转另一个场景时需要发送的请求与请求完后真正要跳转的场景。

❄️updata() 函数
这个函数用来获取事件并更新游戏数据。一定有一个返回值,返回值是他想要跳转的场景编号。
如果需要跳转的场景需要请求数据,就跳转到 场景 0 ,并且把请求数据与最终要跳转到场景的编号放入 pageQuest 里 。

❄️ show() 函数
这个函数用来根据数据绘在画布上制出界面场景。

现有的场景器有 3 个 :

  1. 0号 LoadPage 加载场景
  2. 1号 InterPage 大厅场景
  3. 2号 GamePage 游戏场景

游戏场景内又拥有 3 个 控制器用于游戏控制。

♾️3.1 控制器

控制器主要用于调用API, 下载资源,游戏控制等。
控制器根据其功能撰写,没有特殊固有的函数。

现有的控制器共有 6 个 :

  1. Servo POST API 控制器
  2. *DownLoad 下载资源控制器 - 唯一
  3. *Audio 背景音乐控制器 - 唯一
  4. CanvasCommunicatGame 游戏卡牌映射控制器
  5. MieGameCan 游戏消除区控制器
  6. MieGamePoker 游戏卡牌区控制器

其中这两个是游戏逻辑控制器 :

  1. MieGameCan 游戏消除区控制器
  2. MieGamePoker 游戏卡牌区控制器

名称前有*星号的均为 唯一控制器,也就是说整个游戏这个控制器只能被创建一次,哪怕后面你再创建,获取到的控制器也是之前创建出来的。

⭐地图文件格式与其他内容均与 CandyMieGame_PHP 一致

其他内容均可以在 CandyMieGame_PHP 的教程中找到。
如有其他不了解的地方,均可以私信我或者通过文末提供的方式联系到我。

⭐友情链接

效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码:https://blog.csdn.net/apple_53792700/article/details/127255790

CandyMieGame_WX(注意获取V0.0.0版本的代码):
 Github: https://github.com/MR-XieXuan/CandyMieGame_WX
MieGame_C_Core 代码链接:
Github:https://github.com/MR-XieXuan/MieGame_C_Core
CandyMieGame_PHP(注意获取V0.0.0版本的代码):
 Github: https://github.com/MR-XieXuan/CandyMieGame_PHP
CandyMieGame_H5(注意获取V0.0.0版本的代码):
 Github: https://github.com/MR-XieXuan/CandyMieGame_H5

必须了解的数据结构 BitMap 基础 应用 与 C语言实现:https://blog.csdn.net/apple_53792700/article/details/127592565?spm=1001.2014.3001.5502

👋联系作者

✍️本文作者为 > 【谢玄.】 Mr-XieXuan < 于 2022/10/11/3:00 发布于 CSDN 。

📧E-mail: [ Mr_Xie_@outlook.com ]
⌨️GitHub: [ https://github.com/MR-XieXuan }
🔍个人私站: [ https://main.mrxie.xyz/ ]

有关效果最接近《羊了个羊》(卡牌堆叠游戏)的开源代码 微信小程序开源了的更多相关文章

  1. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  2. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  3. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  4. c - Ruby - 源代码 - 编码风格 - 2

    查看Ruby代码,它具有以下proc_arity:staticVALUEproc_arity(VALUEself){intarity=rb_proc_arity(self);returnINT2FIX(arity);}更多的是C编码风格问题,但为什么staticVALUE在单独的一行而不是像这样的:staticVALUEproc_arity(VALUEself) 最佳答案 它来自UNIX世界,因为它有助于轻松grep函数的定义:$grep-n'^proc_arity'*.c或使用vim:/^proc_arity

  5. ruby-on-rails - 如何在 vim 编辑器中使用 bundler 打开 gem 源代码 - 2

    尝试使用bundleopen命令打开gem源代码,accordingtoofficialdocumentationandinstruction.因此,我在.profile中导出编辑器:exportBUNDLER_EDITOR=viexportEDITOR=vi并尝试打开例如rails使用控制台的源代码:bundleopenrails出现错误CouldnotlocaleGemfile[ruby-2.1.1][~/]$:rails-vRails4.0.3[ruby-2.1.1][~/]$:bundle-vBundlerversion1.5.3[ruby-2.1.1][~/]$:bundle

  6. ruby - 在不同的文件中设置断点没有效果 - 2

    ruby调试器不会在我在与执行开始时不同的文件中设置的断点处停止。例如,考虑这两个文件,foo.rb:#foo.rbclassFoodefbarputs"baz"endend和main.rb:#main.rbrequire'./foo'Foo.new.bar我使用ruby-rdebug.\main.rb开始调试。现在,当我尝试使用b./foo.rb:4在另一个文件的特定行上设置断点时,我收到消息Setbreakpoint1atfoo.rb:4,但是当我cont时,程序执行到最后,调试器永远不会停止。但是,如果我在main.rb中的一行上打断,例如b./main.rb:3,或者一个方法,

  7. python - 开源 Twitter 克隆(在 Ruby/Python 中) - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion是否有任何用Ruby或Python编写的生产就绪的开源Twitter克隆?我对功能丰富的实现更感兴趣,而不仅仅是简单的Twitter消息(例如:API、FBconnect、通知等)谢谢!

  8. ruby-on-rails - Ruby表达式 '-'后留空格的效果 - 2

    今天我在我的Rails控制台中尝试了一些东西,这发生了,2.0.0p247:009>Date.today-29.days=>Fri,07Feb20142.0.0p247:010>Date.today-29.days=>Thu,09Jan2014我很困惑。我可以看到我缺少一些基本的东西。但这让我印象深刻!谁能解释为什么会这样? 最佳答案 实际发生的是这样的:Date.today(-29.days)#=>Fri,07Feb2014today有一个名为start的可选参数,默认为Date::ITALY。Anoptionalargument

  9. ruby - 我可以让 ruby​​ 打印动态方法的源代码吗? - 2

    我调查了gettingthesourcecodeofamethod如果它作为文件存在,但没有此文件引用,是否可以动态打印方法的源代码?看来我可以使用self.methods和每个方法的.arity访问类中的方法签名。我相信ri_forgem指的是原始源文件。提出这个问题的更好方法是:如果一个类在运行时被扩展,它的源代码是否安全,不会被调查?或者调查的能力是否仅限于方法签名和实例变量的名称,也许是类变量?编辑:我使用的解决方案:http://seattlerb.rubyforge.org/svn/ruby2ruby/1.2.1/lib/ruby2ruby.rbclassRuby2Ruby

  10. Unity 血条及“掉血”缓冲效果 - 2

     视频教程:https://www.bilibili.com/video/BV1WJ411778C/?spm_id_from=333.999.0.0&vd_source=4a4c35da6aef7094d5990c213c39aa09使用素材(推荐使用GitZipforgithub下载):https://github.com/zheyuanzhou/Youtube-Unity-Tutorial/tree/master/EP45_Health%20Bar/Sprites效果如下图所示:首先在场景中创建一个新的Canvas,并命名为HeathBar,并创建三个Image作为前者的子物体,分别命名为

随机推荐