c語言 字元版 簡易2048

2022-01-15 07:01:14 字數 1646 閱讀 5954

花了兩個多小時,用最蠢的方法寫的……最簡陋版……

還不確定這麼寫邏輯對不對……

#include #include #include #include #include using namespace std;

int map[5][5];

int score;

int move(int& a, int& b, int& c, int& d) //move nonzero digit to front

++zero_num;

a = b;

b = c;

c = d;

d = 0;

if (++vis_num >= 4) return zero_num;

}while (1)

++zero_num;

b = c;

c = d;

d = 0;

if (++vis_num >= 4) return zero_num;

}while (1)

++zero_num;

c = d;

d = 0;

if (++vis_num >= 4) return zero_num;

}if (d == 0)

++zero_num;

return zero_num;

}void change(int& a, int& b, int& c, int& d)

return ;

}if (zero_num == 1) else if (c == b)

return ;

}if (a == b) else

} else if (b == c) else if (c == d)

}int rand_2_or_4()

void rand_pos()

while (map[x][y]);

map[x][y] = rand_2_or_4();

}void print()

printf("\n");

}printf("score:%d\n", score);

}bool is_full()

bool is_over_row(int a, int b, int c, int d)

bool is_over()

for (i = 0; i < 4; ++i)

return true;

}int main()

srand(unsigned(time(null)));

rand_pos();

rand_pos();

print();

while (!is_over())

} else if (dir == 's') else if (dir == 'a') else if (dir == 'd') else continue;

if (!is_full()) rand_pos();

system("cls");

print();

}printf("lose!");

return 0;

}

後來發現我的寫法有問題,因為如果不移動的話,就不會產生新的數字,而我的邏輯是只要有空位就有新的數字。之前沒有認真觀察過,懶得改了(其實是沒想到什麼好的方法……

C語言簡易版2048

二維陣列 int board 4 4 int if need rand 是否需要生成隨機數 int if game over 遊戲是否結束 介面 void showgame else if i 3 else void gameover 隨機位置生成隨機數2或4 void addrand else 初...

c語言實現簡易2048遊戲

我寫的2048每次只能隨機生成乙個新的2,不能生成4以及其他的數,沒有計分系統,只能記錄步數。由於是基於控制台的遊戲,所以操作起來比較麻煩。演算法思想 每次進行wsad操作的時候都先在各行各列檢查可以合併的項,並且合併之,合併完之後在進行緊湊處理。假如各行各列已經沒有可以合併的相鄰的項了,那麼遊戲就...

2048字元版C語言實現

include game.h intmain lcd.h ifndef lcd h define lcd h void show arry int p 4 int col endif lcd.c include lcd.h include void show arry int p 4 int row...