0成本开发一个外卖返利领劵小程序

饿了么、美团优惠开发(外卖cps,三级裂变源码)

源码或搭建

http://y.mybei.cn/

截图


功能列表

  • 特价电影票

  • 饿了么外卖(3个红包)

  • 美团外卖

  • 美团优选(1分钱买菜)

  • 购物返利(淘宝,拼多多,京东)

  • 话费优惠充值(92折,慢充)

  • 火车票优惠

  • 滴滴打车优惠

  • 小程序广告收益(流量主)

  • 公众号绑定

  • 更多功能…

作者联系方式

  • 交流交流感情也好呀~

  • 代搭建,源码都可以出,好谈~

  • 转介绍,代理,都行,作者不会亏待你~

步骤

  • 下载以上源代码到本地

http://y.mybei.cn/

没用的代码, 请忽略

以游戏中的建筑举例,假如我的游戏可以建造很多建筑,建筑公有的数据结构如下:

public class BuildingSaveData {
public string strID;
public int nBuildingId;
public int nBuildingLevel;

}

那么这样的一个建筑列表就应该是: public List _buildingList;
那如何保存这个建筑列表里的建筑信息呢,如果用JsonWriter一个数据一个数据的保存,那数据量小还好,数据多就太复杂了,程序员不是干体力劳动的工种。这时候就让JsonMapper来解决吧。

1、这里我们用LitJson库里的Json,所以首先需要加载LitJson库,没有的百度上下载一个,然后放到你的工程下,我放在了Assets/Plugins下,然后别忘了在文件头引用LitJson:

using LitJson;

2、写一个建筑列表的类。

public class BuildingList {
public List _buildingList = new List();
}

3、保存建筑信息。
先创建BuildingList的对象:BuildingList _ownBuildingList = null; 然后就可以保存数据了,代码如下:

public void SaveBuildingData(BuildingSaveData data) {
string filePath = Application.dataPath + @"/Resources/Settings/JsonBuilding.txt";
if (!File.Exists(filePath)) {
_ownBuildingList = new BuildingList();
_ownBuildingList._buildingList.Add(data);
} else {
bool bFind = false;
for (int i = 0; i < _ownBuildingList._buildingList.Count; ++i) {
BuildingSaveData saveData = _ownBuildingList._buildingList[i];
if (data.strID == saveData.strID) {
saveData.nBuildingLevel = data.nBuildingLevel;

bFind = true;
break;
}
}
if (!bFind)
_ownBuildingList._buildingList.Add(data);
}

FileInfo file = new FileInfo(filePath);
StreamWriter sw = file.CreateText();
string json = JsonMapper.ToJson(_ownBuildingList);
sw.WriteLine(json);
sw.Close();
sw.Dispose();

#if UNITY_EDITOR
AssetDatabase.Refresh();
#endif
}

以上代码很简单,要保持的数据通过 BuildingSaveData参数传进来,我的数据都保存在了Assets/Resources/Settings/下,所以先判断该路径下是否有这个文件,如果没有,直接构造函数,并且直接把这个data加到数据列表中去。如果有这个文件,那先判断你的建筑列表中是否已经有了该条建筑信息,你只是想更新一下数据,比如建筑升级,如果没有该建筑信息,直接把这个data加到数据列表中去。下面是重点,用FileInfo的CreateText打开文件,这个函数会判断是否有文件,有则打开,没有则创建后打开,然后就是JsonMapper上场了,直接用它的ToJson接口将你的列表类传进去,然后自动转化成string数据,最后把这个string数据写到文件中就OK了。这里用到了文件处理类,所以别忘了加上其引用:

using System.IO;
using System.Text;

因为这里用了AssetDatabase,所以也别忘了加上其引用:

#if UNITY_EDITOR
using UnityEditor;
#endif

4、读取建筑信息

一般在游戏刚加载的就需要将文件里存储的数据读取出来,利用JsonMapper读取数据相当简单。

public void LoadBuildingData() {
TextAsset s = Resources.Load(“Settings/JsonBuilding”) as TextAsset;
if (!s)
return;

string strData = s.text;
_ownBuildingList = JsonMapper.ToObject<BuildingList>(strData);

}

上面代码很简单,不多解释,就是用了JsonMapper的ToObject接口将文本信息直接转化成类信息并传给 BuildingList类,里面的列表数据都不用你操心,自动生成了,相当简便。直接使用即可。

最后你只要在适合的地方保存你的数据,适合的时候读取数据就可以了,相似的数据保存读取方式可以照上面套用。最后看一下我这里的JsonBuilding.txt文件保存的数据:

{"_buildingList":[{“strID”:“01/23/2014 17:31:22”,“nBuildingId”:1,“nBuildingLevel”:2},{“strID”:“01/23/2014 17:48:10”,“nBuildingId”:2,“nBuildingLevel”:1},{“strID”:“01/23/2014 17:53:09”,“nBuildingId”:3,“nBuildingLevel”:1}]}

保存、读取的方法
在Unity中新建一个C#代码,将以下代码复制进去并且挂载到一个空物体上。

下面的代码分为SaveGame(保存数据)、LodeGame(读取数据)两个方法,可以在游戏中创建两个Button,并且分别创建点击事件。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;//必须要导入的包

public class GameSaveManager : MonoBehaviour
{
public Inventory myInventory;//需要保存的数据
public Item HpMedicine;//需要保存的数据

public void SaveGame() //保存游戏方法
{Debug.Log(Application.persistentDataPath);if (!Directory.Exists(Application.persistentDataPath + "/game_SaveGame")){Directory.CreateDirectory(Application.persistentDataPath + "/game_SaveGame");}BinaryFormatter formatter = new BinaryFormatter();//二进制转换FileStream file = File.Create(Application.persistentDataPath + "/game_SaveGame/Inventory.txt");var json0 = JsonUtility.ToJson(myInventory);//需要保存的数据Json转换var json1 = JsonUtility.ToJson(HpMedicine);//需要保存的数据Json转换var json2 = JsonUtility.ToJson(MpMedicine);//需要保存的数据Json转换formatter.Serialize(file, json0);//保存的数据formatter.Serialize(file, json1);//保存的数据formatter.Serialize(file, json2);//保存的数据file.Close();
}public void LoadGame()//读取游戏方法
{BinaryFormatter bf = new BinaryFormatter();if (File.Exists(Application.persistentDataPath + "/game_SaveGame/Inventory.txt")){FileStream file = File.Open(Application.persistentDataPath + "/game_SaveGame/Inventory.txt", FileMode.Open);JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), myInventory);//保存的数据JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), HpMedicine);//保存的数据JsonUtility.FromJsonOverwrite((string)bf.Deserialize(file), MpMedicine);//保存的数据file.Close();}

rm方法
100毫秒刷新
private void timer1_Tick(object sender, EventArgs e)
{
DrawSnake();
DrawFood();
}
1
2
3
4
5
秒刷新(蛇的移动速度由此决定)
private void timer2_Tick(object sender, EventArgs e)
{
Snake.SnakeMove(Snake.wasd);
EatFood();
TobeOrNotTobe();
label2.Text = score.ToString();
}
1
2
3
4
5
6
7
画蛇
public void DrawSnake()
{
RectangleF[] rectangles = new RectangleF[Snake.realsnake.Count];

        int num;for (num = 0; num < Snake.realsnake.Count; num++){rectangles[num] = new RectangleF(Snake.realsnake[num].Location_x,Snake.realsnake[num].Location_y, Snake.width, Snake.height);}this.Refresh();Graphics g = this.CreateGraphics();SolidBrush myBrush = new SolidBrush(Color.Black);g.FillRectangles(myBrush, rectangles);}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
创建食物
public void newfood()
{
Food food = new Food();
foodx = food.Location_x;
foody = food.Location_y;
}
1
2
3
4
5
6
画食物
public void DrawFood()
{

        Graphics f = this.CreateGraphics();SolidBrush mybrush = new SolidBrush(Color.Red);f.FillRectangle(mybrush, foodx, foody, 10, 10);}

1
2
3
4
5
6
7
8
吃掉食物
public void EatFood()
{
if (Snake.realsnake[Snake.realsnake.Count - 1].Location_x == foodx
&& Snake.realsnake[Snake.realsnake.Count - 1].Location_y == foody)
{
newfood();
Snake.EatLong();
score += 1;
}
}
1
2
3
4
5
6
7
8
9
10
生存还是毁灭
public void TobeOrNotTobe()
{
int x = Snake.realsnake[Snake.realsnake.Count - 1].Location_x;
int y = Snake.realsnake[Snake.realsnake.Count - 1].Location_y;
if (!(x <= 500 && x >= 0 && y <= 500 && y >= 0))
{
GameOver();
timer2.Enabled = false;
}
}
1
2
3
4
5
6
7
8
9
10
游戏结束
public void GameOver()
{
label3.Visible = true;
label4.Visible = true;
label5.Text = score.ToString();
label5.Visible = true;
button1.Text = “重新开始”;
button1.Visible = true;
}
1
2
3
4
5
6
7
8
9
button点击事件链
private void button1_Click(object sender, EventArgs e)
{

        Snake.Snakestart();newfood();score = 0;timer1.Enabled = true;timer2.Enabled = true;button1.Visible = false;label3.Visible = false;label4.Visible = false;label5.Visible = false;}

1
2
3
4
5
6
7
8
9
10
11
12
13
其他静态变量
static int score;
static int foodx, foody;
1
2
游戏主体类
点击开始游戏,开始游玩。


using System.Collections.Generic;

namespace 贪吃蛇form
{
public class Snake
{
public int Location_x;//0为x,1为y
public int Location_y;
public static int width = 10, height = 10;
public static List realsnake = new List();

    //当前方向public static int wasd;public Snake(){Location_x = 250;Location_y = 250;}public static void Snakestart(){wasd = 4;realsnake.Clear();Snake s0 = new Snake();Snake s1 = new Snake();Snake s2 = new Snake();Snake s3 = new Snake();realsnake.Add(s0);s1.Location_x = s0.Location_x - 10;realsnake.Add(s1);s2.Location_x = s1.Location_x - 10;realsnake.Add(s2);s3.Location_x = s2.Location_x - 10;realsnake.Add(s3);//添加四个长度,横向添加list 初始化小蛇蛇完成}public static void SnakeMove(int x)//8426{int i = realsnake.Count - 1;if (x == 8){//对list蛇身进行处理Snakelist();realsnake[i].Location_y -= 10;}else if (x == 4){Snakelist();realsnake[i].Location_x -= 10;}else if (x == 2){Snakelist();realsnake[i].Location_y += 10;}else if (x == 6){Snakelist();realsnake[i].Location_x += 10;}}public static void Snakelist(){int j = 0;int x, y;int i = realsnake.Count - 1;for (j = 0; j < i; j++){x = realsnake[j + 1].Location_x;y = realsnake[j + 1].Location_y;realsnake[j].Location_y = y;realsnake[j].Location_x = x;}}public static void EatLong(){Snake S_eat = new Snake();int xx = realsnake[realsnake.Count - 1].Location_x;int yy = realsnake[realsnake.Count - 1].Location_y;if (wasd == 8){S_eat.Location_y = yy - 10;S_eat.Location_x = xx;realsnake.Add(S_eat);}else if (wasd == 4){S_eat.Location_x = xx - 10;S_eat.Location_y = yy;realsnake.Add(S_eat);}else if (wasd == 2){S_eat.Location_y = yy + 10;S_eat.Location_x = xx;realsnake.Add(S_eat);}else if (wasd == 6){S_eat.Location_y = yy;S_eat.Location_x = xx + 10;realsnake.Add(S_eat);}}
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
食物
using System;

namespace 贪吃蛇form
{
public class Food
{
public int Location_x;
public int Location_y;
public Food()
{
Random x = new Random();
Random y = new Random();
Location_x = x.Next(0, 49) * 10;
Location_y = y.Next(0, 49) * 10;
}
}
}

0成本开发一个外卖返利领劵小程序|外卖返利系统相关推荐

  1. 0成本开发一个外卖领劵小程序,支持分销裂变(附源码及搭建教程)

    前序准备 注册美团联盟和淘宝联盟 美团联盟个人无法注册,可以挂靠在企业帐号下. 淘宝联盟:https://pub.alimama.com/ (opens new window) 外卖CPS红包小程序源 ...

  2. 0成本开发一个外卖领劵小程序

    小程序,被封了哈哈,欢迎关注公众号支持作者 前序准备 注册美团联盟和淘宝联盟 美团联盟个人无法注册,可以挂靠在企业帐号下. 淘宝联盟:https://pub.alimama.com/ (opens n ...

  3. 外卖领劵小程序搭建带分销

    源码地址 进入外卖模块后台,点击"参数设置--美团API设置",将上面复制的秘钥内容粘贴到订单侠apikey里面,保存,其他参数暂时不用理会. 二.饿了么接口申请 淘宝联盟申请开通 ...

  4. 实战|轻松用 Python 开发一个简单有趣的聊天小程序

    前言 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol). UDP 为应用程序提供了一种无需建立连接就可以发送封装的 I ...

  5. 用ChatGPT通过WebSocket开发一个交互性的五子棋微信小程序(二)

    文章目录 1 前言 1.1 实现的原理 1.2 如何与微信小程序联系 2 五子棋项目 2.1 申请OpenAI的API 2.2 调用API代码 2.3 界面代码 3 同步五子棋到前端小程序 3.1 W ...

  6. 【小程序】拼多多领劵小程序修复版分享

    最近折腾上了小程序,所以修复了几个网上找的开源的小程序,既然修复了,本着人人为我,我为人人的原则,就分享给大家一起用吧. 先来张修复版本的预览图 小程序首页预览图 该小程序使用微信原生+云函数开发. ...

  7. 从0开始编写一个应用(android端+小程序端+服务器端)第二步 项目经理完成逻辑图。(下:产品细节思考后的实现逻辑图)

    上一篇说到产品经理思考完成大概逻辑图: 用户发布拼团信息可以选择金额发布,非金钱发布.并且可以分享.然后,其他用户点击获得奖励,或者分享获得奖励. 奖励的有钱,有发布机会.这个就是项目的主要流程,但是 ...

  8. 外卖返利系统,外卖返利系统小程序,外卖系统,返利系统

    咕咕驴外卖返利系统,外卖返利系统小程序,外卖系统.包含淘客公众号+淘客小程序+淘客返利机器人+淘客共享APP+外卖返利小程序. 外卖返利系统|外卖返利系统小程序,外卖系统,返利系统 外卖CPS系统之小 ...

  9. 微信公众号小程序外卖返利分销系统美团饿了么外卖cps软件源码

    饿了么美团外卖返利程序对接公众号发单机器人分销系统返利源码 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码 源代码地址 http://y.mybei.cn 成品展示 截图 步骤 下载以上源代码 ...

  10. 外卖返利系统/美团/饿了么外卖CPS联盟返利公众号小程序核心源码

    我们都知道,目前两家巨头饿了么和美团点外卖都可以获得返现,其中饿了么是返利6%,美团是返利3-5%,具体要根据活动来. 也就是说按正常一个人用户点餐,你可以获得每笔外卖的CPS返利佣金,而且外卖的用户 ...

最新文章

  1. oracle数据库常用的99条查询语句
  2. Centos 7 安装Mysql5.7
  3. 20w7珠led驱动电源电路图_三种常用的LED驱动电源电路图详解!
  4. SAP Leonardo图片处理相关的机器学习服务在SAP智能服务场景中的应用
  5. python类中没有属性_如何在python语言中在类中删除属性和添加属性
  6. 中兴中心管理服务器fxh3120,中兴多媒体业务中心ZXMS80
  7. vscode代码运行时间工具_代码编辑器横评:为什么 VS Code 能拔得头筹
  8. python 作用域从大到小排序_Python 内置函数、作用域、闭包、递归
  9. 大数据-数据抽取(数据降维)算法
  10. 在CentOS6.7搭建Qt5.6.2环境
  11. Second copy 的增量备份
  12. Linux系统安装sentaurus,Synopsys Sentaurus_vA_2008.09-SP1安装详解.pdf
  13. 服务器自建云存储,如何搭建私有云?私有云储存服务器NAS搭建方法(轻松搞定)...
  14. 软考信息系统项目管理师考试论文写作技巧
  15. 虾神段子小剧场:人人都该学点数据分析(1):达五十万的电竞人才缺口?
  16. 火了很多年,月利润3W+的暴利项目
  17. 某些年自己做的毕业设计代码和分析过程记录
  18. 时空召唤的服务器维护,时空召唤3月2日更新维护内容分享
  19. AES加密:PHP与Java互通问题
  20. Apple下载Xcode安装包

热门文章

  1. HDDREG(硬盘坏道修复工具)v1.31绿色版
  2. IntelliJ IDEA团队开始在中国招人了
  3. 解密微软Longhorn和Office 12发布时间表
  4. python画父子关系图_python elasticsearch-dsl父子关系
  5. 爆火GitHub 的十大最火 Python 项目,三天收藏突破10w+
  6. html自定义属性jquery怎么拿到,jquery 获取自定义属性(attr和prop)的实现代码
  7. android取消输入法联想,输入法联想功能,怎么清除输入法联想
  8. P3717 [AHOI2017初中组]cover
  9. 【阿里云】云解析DNS
  10. A股主要指数的市盈率(PE)估值高度