近日,一款名為“羊了個羊”微信小遊戲火爆全網。
憑借簡單玩法和不走尋常路的關卡設置,三消小遊戲《羊了個羊》,成為《合成大西瓜》《召喚神龍》後的小微遊戲新王者。
“其實遊戲很簡單,就是湊齊三個一樣的圖案就能點擊消除,湊不齊三個的圖案先放在底部的七個待選欄位裡,如果七個槽位都占滿了,遊戲就失敗了。”遊戲第一關其實是玩法教程,但當玩家來到第二關時,難度直線上升。根據官方介紹,“羊了個羊”是一款超難的闖關消除小遊戲,通關率不到0.1%。
當然,我們這次可不是為了針對“羊了個羊”的玩法開發出遊戲輔助這類的東西,而是說,我們作為學編程的程序員,能不能自己用自己所學知識來開發一個《羊了個羊(仿制版)》呢?那麼話不多說,我反正已經試出來了,今天就是來秀秀源碼的!(如果有大佬勿怪)
首先我準備了一些東西:
編譯器 需要的插件:VS2022/2019,easyX圖形庫插件(建議安裝最新的版本)注:VScode的朋友需要另外配置好環境。
需要準備的圖片素材:
如果有需要可以在文章最後找到獲取方式!
接下來就來看看我們的源碼:
#include<easyx.h>
#include<stdio.h>
const int WIDTH = 400;
const int HEIGHT = 760;
const int INTERVAL = 48;
IMAGE img_bk;
IMAGE img_item[3];
void loadImg()
{
loadimage(&img_bk, "images/bk.jpg", WIDTH, HEIGHT);
loadimage(img_item 0, "images/cao.png",48,48);
loadimage(img_item 1, "images/lingdang.png", 48, 48);
loadimage(img_item 2, "images/shu.png", 48, 48);
}
int main()
{
initgraph(WIDTH, HEIGHT,EW_SHOWCONSOLE);
loadImg();
int map[3][3] = {0};
//初始化地圖
for (int r = 0; r < 3; r )
{
for (int c = 0; c < 3; c )
{
map[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 = map[r1][c1];
map[r1][c1] = map[r][c];
map[r][c] = t;
}
}
int store[7] = { 0 };
int offsetX = (WIDTH - (2 * (48 INTERVAL) 48)) / 2;
int offsetY = (HEIGHT - (2 * (48 INTERVAL) 48)) / 2;
while (true)
{
BeginBatchDraw();
//繪制地圖
putimage(0, 0, &img_bk);
//輸出圖片
for (int r = 0; r < 3; r )
{
for (int c = 0; c < 3; c )
{
if(map[r][c])
putimage(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) && msg.message == 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 (msg.x > x && msg.x < x 48 && msg.y>y && msg.y < y 48)
{
//求出點擊的圖片對應的數組下标
int col = (msg.x - offsetX) / (48 INTERVAL);
int row = (msg.y - 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 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!