我寫的2048每次只能隨機生成乙個新的2,不能生成4以及其他的數,沒有計分系統,只能記錄步數。由於是基於控制台的遊戲,所以操作起來比較麻煩。
演算法思想:每次進行wsad操作的時候都先在各行各列檢查可以合併的項,並且合併之,合併完之後在進行緊湊處理。
假如各行各列已經沒有可以合併的相鄰的項了,那麼遊戲就結束了。
#include "stdafx.h"
#include#include#include#include//列印函式,列印出遊戲介面
//如果是0的話就為空,否則列印出數值
void print(int a[4][4],int count)
printf("\n");
for (int i = 0; i < 4; i++)
if (a[i][j] == 0)
else
} printf("\n");
for (int h = 0; h < 4; h++)
printf("\n");
} printf("請使用wsad進行遊戲\n");
printf("當前得分為:%d\n", count);
}//為一開始生成隨機的兩個座標
void start(int a[4][4])
//printf("x=%d,y=%d\n", x, y);
a[x][y] = 2;
return;
}//每一回合過後都隨機生成乙個新的2
void fresh(int a[4][4])
//printf("x=%d,y=%d\n", x, y);
a[x][y] = 2;
return;
}//判斷是否遊戲結束
//遊戲結束的標誌就是無論從那個方向都沒有可以合成的格仔了
//演算法就是先從行判斷,然後從列判斷
//如果遊戲結束了就返回0,否則返回1
int is_die(int a[4][4])
if (a[j][i] == a[j + 1][i])
} }//走到這一步就說明遊戲結束了
return 0;
}int can(int a[4][4])
//主函式,通過輸入來進行移動
//進行操作的時候分四種情況
//演算法為:先檢查有沒有可以合併的格仔,如果有就合併,然後再緊湊
void run(int a[4][4])
else }}
}}} //這裡要進行緊湊操作,逐行掃瞄
for (int j = 0; j < 4; j++) }}
}} break;
case 's':
//下移操作,與上移操作行檢查順序相反,其他都一樣
for (int j = 0; j < 4; j++)
else }}
}}} //進行緊湊處理
for (int j = 0; j < 4; j++) }}
}} break;
case 'a':
//左移操作
for (int i = 0; i < 4; i++)
else }}
}}} //進行緊湊處理
for (int i = 0; i < 4; i++) }}
}} break;
case 'd':
//右移操作
for (int i = 0; i < 4; i++)
else }}
}}} //進行緊湊處理
for (int i = 0; i < 4; i++) }}
}} default:
break; }}
int main()
; int count=0;//記錄遊戲步數
start(a);
print(a,count);
run(a);
count++;
system("cls");
fresh(a);
print(a, count);
sleep(50);
while (1)
else
} return 0;
}
執行結果:
c語言小遊戲 精簡 C語言實現簡易2048小遊戲
一直很喜歡玩這個小遊戲,簡單的遊戲中包含運氣與思考與策略,喜歡這種簡約又不失內涵的遊戲風格。於是萌生了用c語言實現一下的想法。博主分析的都很到位,很多演算法技巧都值得借鑑,c語言實現2048的主要思想已經在那個部落格中詳細的分析了,但是我覺得在博主的 中還是有很多很好的思想是值得我借鑑學習的。比如這...
C語言實現2048小遊戲
參考 100 行 擼了乙個 2048 的小遊戲 規則就是 2084 遊戲的規則 j 左 k 下 l 右 i 上 相同數字移動過程中會合併 這裡我把按鍵修改成了方向鍵,並加了些注釋幫助理解 include include include define game size 4 static void l...
C語言實現的2048小遊戲
給大一新生寫的乙個小遊戲。缺點 函式名稱和功能略微不對應,函式功能寫得比較亂,時間記錄有誤差,可擴充套件性弱。優點 通過幾個配置陣列,將單位方塊移動的函式縮短到30行以內。include include include include include 座標常量 const int squaresiz...