最近,一款名为“一只羊”的微信游戏轰动了整个网络。
简单的游戏和不寻常的关卡设置使三小游戏《羊了个羊》成为《合成大西瓜》 《召唤神龙》之后小微型游戏的新王毅。
“其实游戏很简单。收集3个相同的图案,就可以点击删除,3个整齐的图案先放在底部的7个选择字段,7个插槽都满了,游戏就失败了。”游戏的第一关其实是游戏教程,但当玩家到达第二关时,难度会急剧增加。据官方介绍,“一只羊”突破了非常困难的关卡,消除了小游戏,通关率不到0.1%。
当然,我们这次不是为了为“一只羊”开发游戏辅助之类的东西,我们作为学习编程的程序员,能用自己学到的知识开发《羊了个羊(仿制版)》吗?那就不要多说话了。反正我试过了。今天是节目源代码!(如果有大家伙,就不要怪他)
首先准备了几样东西。
编译器需要的插件:VS2022/2019、easyX图形库插件(推荐最新版本)注:VScode的朋友需要配置单独的环境。
需要准备的照片资料:
如果需要,可以在文章最后找到获取方法!
接下来我们来看源代码。
# includeea
# include
Const int WIDTH=400
Const int HEIGHT=760
Const int INTERVAL=48
IMAGE img _ bk
IMAGE img _ item[3];
Void loadImg()
{
Loadimage(img_bk,' image、宽度、高度);
Loadimage(img_item 0,' image,48,48);
Loadimage(img_item 1,' image、48、48);
Loadimage(img_item 2,' image、48、48);
}
Int main()
{
Initgraph(宽度、高度、ew _ show console);
罗德IMG();
int map[3][3]={ 0 };
//地图初始化
for(int r=0;r 3;r)
{
for(int c=0;c 3;c)
{
贴图[r][c]=r 1;//1 2 3
}
}
//打乱数组
for(int r=0;r 3;r)
{
for(int c=0;c 3;c)
{
int R1=rand()% 3;
int C1=rand()% 3;
Int t=贴图[R1][C1];
贴图[R1] [C1]=贴图[r][c];
贴图[r][c]=t;
}
}
int store[7]={ 0 };
Intoffsetx=(宽度-(2 *(48 interval)48))/2;
Intoffsety=(高度-(2 *(48 interval)48))/2;
While(真)
{
BeginBatchDraw();
//绘制地图
Putimage(0,0,img _ bk);
//导出图片
for(int r=0;r 3;r)
{
for(int c=0;c 3;c)
{
If(贴图[r] [c])
普蒂
mage(offsetX + c * (48 + INTERVAL), offsetY + r * (48 + INTERVAL), img_item + (map[r][c]-1)); } } //绘制下面 for (int i = 0; i < 7; i++) { if (store[i]) putimage((i * 50)+26, 620, img_item + (store[i]-1)); } EndBatchDraw(); ExMessage msg = { 0 }; if (peekmessage(&msg) && m == WM_LBUTTONDOWN) { //鼠标坐标判断 for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { int x = offsetX + c * (48 + INTERVAL); int y = offsetY + r * (48 + INTERVAL); //printf("pos(%d,%d)\n", x, y); //判断鼠标是否点击了图片 if > x && m < x + 48 && m;y && m < y + 48) { //求出点击的图片对应的数组下标 int col = - offsetX) / (48 + INTERVAL); int row = (m - offsetY) / (48 + INTERVAL); //printf("row:%d col:%d\n", row, col); //把点击的图片添加到下面 for (int i = 0; i < 7; i++) { if (store[i] == 0) { store[i] = map[row][col]; break; } } //如果下面有三个一样的就消除 int cnt = 0; for (int i = 0; i < 7; i++) { if (store[i] == map[row][col]) { cnt++; } } if (cnt == 3) { for (int i = 0; i < 7; i++) { if (store[i] == map[row][col]) { store[i] = 0; } } } //把点击的图片从map中删除 map[row][col] = 0; } } } } } while (1); return 0; }我可没有私藏哦,想要试试的小伙伴赶紧去拿着源码编译吧!如果遇到问题可以从下面来找我哦~
对啦对啦!另外的话为了帮助大家,轻松,高效学习C语言/C++,我给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!可以来我粉丝群领取哦~
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!