金枪哥喷剂官网
9958874
9958874
不是,这种游戏能火起来,我就觉得很匪夷所思。
做一个这种游戏,比做一个俄罗斯方块还简单,我花了晚上两个钟,自己写了一个咖波了个咖波(咖波作者原谅我,咖波太可爱了,侵删)
这种游戏逻辑写起来不要太简单好么
而且官方还否认了,羊了个羊不是抄袭(不能说很像,只能说完全一致)
3tile
嘿嘿,既然如此我也不客气了,我这就把咖波了个咖波开个源,大家可以在assets中自己替换成自己喜欢的贴图哈
比如可以狗了个狗
奥特曼了个奥特曼
蛇了个蛇
另外敲黑板,划重点了哈,游戏特色:
1.我没有做游戏胜利界面哈,因为大概率不需要过不了关哈,只有0.001%的人能通关哈
2.游戏失败界面当然是做了的
3.我摊牌哈,牌子全是随机生成的,不保证能全消哈
害,居然忘记做了游戏最重要的功能,看广告,死罪死罪
PS:另外说一句广告要看99999秒哈,毕竟看广告才是这个游戏的玩法
我编译成了webassembly,激情游戏,在线试玩
https://www.painterengine.com/main/instances/instance2022092001/index.html
www.painterengine.com/main/instances/instance2022092001/index.html
备用链接
https://www.painterengine.cn/main/instances/instance2022092001/index.html
www.painterengine.cn/main/instances/instance2022092001/index.html
源码下载:
https://www.painterengine.com/example.html
www.painterengine.com/example.html
备用链接:
https://www.painterengine.cn/example.html
www.painterengine.cn/example.html
依赖引擎库
PainterEngine 一个由C语言编写的完整开源的跨平台图形应用框架
www.painterengine.com/index.html
备用链接:
PainterEngine 一个由C语言编写的完整开源的跨平台图形应用框架
www.painterengine.cn/index.html
PPS:有人问我广告打开了,不想看完消格子了,要怎么退出啊,这个问题问的好!!来都来了你还想跑?
PPPS:我怕真有人把99999s的广告看完了,提前预告一下,广告时间有负数的哈
下面的内容是写给DIY玩家看的
==============================================
本来只是随便写的用来嘲讽一下羊了个羊这个韭菜游戏的回答,没想到大家那么热情,居然想真的上手还要通关.
我坦白,我连胜利过关界面都没做,前面的意思呢,是0.001%的人能(用非正常手段)通关,但事情沦落到这个地部,不得不开放一下教程,把通关庆祝做了,顺便让有些真正想玩这游戏的上手DIY一下.
关于换皮肤这一点,仍然是打开assets文件夹,替换对应png文件哈
注意一下,png图片的大小一定是48*48的png彩色图片,尺寸不一样不能成功,另外png decoder也是我自己搓的轮子,所以一些灰度之类的非常见png也无法加载,大部分时候应该是没有问题的,那个广告ad2.png也可以换,不过图片大小没有额外要求.
之后是生成布局,因为大多数人不会编译,所以捏,我使用了PainterEngine内部集成的编译型脚本引擎PainterScript,不要慌,很简单的,请用记事本或者Visual studio code之类的文本编辑器打开script.c,就是下面这个
里面的默认的无法通关的搞笑代码如下:
name "main"
//创建标签函数,x,y表示其左上角坐标,每个标签必定是48x48大小的,z表示深度,越大则放置的越底下,在标签被上层遮盖时将不能被点击
//id就是你png文件对应的数字,最大支持31个标签,id的范围是1-31,如果没有对应png图片,会创建失败,png图片格式必定是(1.png,2.png,3.png.....31.png)
host void CreateNote(float x,float y,float z,int id);
//取随机数,min为最小值,max为最大值
host int rand(int min,int max);
//在这个函数里创建标签,surface_width为画布宽度,surface_height为画布高度,note_type_count为标签类型个数(和你放了几个png文件有关)
export int main(int surface_width,int surface_height,int note_type_count)
{
int x,y,z;//x,y索引,z表示层数,值越大则放在越底下,
for (z = 0;z < 5; z++ )//一共5层
{
for (y = 0; y < 8-z; y++)//最上层8*8,逐层递减
{
for (x = 0; x < 8-z; x++)
{
float objx = surface_width / 2 - 48 * 4 + 24 * z;//计算标签左上角x坐标
float objy = 32+24*z;//计算左上角y坐标
CreateNote(objx + 48 * x, objy + 48 * y, z+1, rand(1,note_type_count));//随机创建一个标签
}
}
}
}
在main函数里呢,生成的就是对应的布局,上面呢我把注释都打好了,默认布局代码如上,你可能会说,好复杂我不会编程看不懂啊,咋办,小问题:
我们重点关注
host void CreateNote(float x,float y,float z,int id);
这个函数是创建标签用的,x,y表示要创建标签左上角坐标,每个标签必定是48x48大小的,z表示深度,越大则放置的越底下,在标签被上层遮盖时将不能被点击,id就是你png文件对应的数字,最大支持31个标签,id的范围是1-31,如果没有对应png图片,会创建失败,png图片格式必定是(1.png,2.png,3.png.....),当然你放的png越多,这个游戏就越难.
我举个例子,首先窗口左上角为原点坐标,y轴向下,x轴向右,我现在创建3个标签
name "main"
host void CreateNote(float x,float y,float z,int id);
host int rand(int min,int max);
export int main(int surface_width,int surface_height,int note_type_count)
{
CreateNote(200,200,1,2);
CreateNote(300,200,1,2);
CreateNote(400,200,1,2);
}
那么,运行结果就是这样的
或者代码如果是这样的:
name "main"
host void CreateNote(float x,float y,float z,int id);
host int rand(int min,int max);
export int main(int surface_width,int surface_height,int note_type_count)
{
int i;
for (i = 1; i < 24; i++)
{
CreateNote(200+i*12,200,i,rand(1,8));
}
}
那运行结果就是这样
当然,你也可以学习默认的代码,用代码手段去生成布局,PainterScript是我自己做自己用的一门语言,但用法和C基本很像,大家自行揣摩哈.
打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!