一些練習 C 語言的小游戲
—
1. 猜數字游戲
描述:程序隨機生成一個數字,玩家需要猜測這個數字,并根據提示(太高或太低)調整猜測,直到猜中為止。
功能點:
- 隨機數生成 (
rand()
函數)。 - 循環和條件判斷。
- 用戶輸入處理。
示例代碼框架:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {int number, guess, attempts = 0;srand(time(0)); // 初始化隨機數種子number = rand() % 100 + 1; // 生成 1 到 100 的隨機數printf("猜數字游戲!我已經選好了一個 1 到 100 的數字。\n");do {printf("請輸入你的猜測:");scanf("%d", &guess);attempts++;if (guess > number) {printf("太高了!\n");} else if (guess < number) {printf("太低了!\n");} else {printf("恭喜你,猜對了!你用了 %d 次。\n", attempts);}} while (guess != number);return 0;
}
2. 石頭剪刀布
描述:玩家與計算機進行石頭、剪刀、布的游戲,判斷勝負。
功能點:
- 隨機選擇(計算機的選擇)。
- 條件判斷(勝負邏輯)。
- 用戶輸入處理。
示例代碼框架:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {int player, computer;srand(time(0));printf("石頭剪刀布游戲!\n");printf("請選擇:1 - 石頭, 2 - 剪刀, 3 - 布\n");scanf("%d", &player);computer = rand() % 3 + 1; // 計算機隨機選擇 1-3printf("你選擇了:%d\n", player);printf("計算機選擇了:%d\n", computer);if (player == computer) {printf("平局!\n");} else if ((player == 1 && computer == 2) || (player == 2 && computer == 3) || (player == 3 && computer == 1)) {printf("你贏了!\n");} else {printf("你輸了!\n");}return 0;
}
3. 貪吃蛇(簡化版)
描述:實現一個簡單的貪吃蛇游戲,蛇在一個二維網格中移動,吃到食物后變長。
功能點:
- 二維數組表示游戲地圖。
- 鍵盤輸入控制方向。
- 游戲循環更新狀態。
提示:
- 使用
#
表示墻壁,*
表示蛇,@
表示食物。 - 可以使用
ncurses
庫(Linux)或conio.h
(Windows)處理鍵盤輸入。
4. 井字棋(Tic-Tac-Toe)
描述:實現一個兩人對戰的井字棋游戲,玩家輪流在 3x3 的棋盤上放置標記(X 或 O),先連成一條線的玩家獲勝。
功能點:
- 二維數組表示棋盤。
- 判斷勝負邏輯。
- 用戶輸入驗證。
示例代碼框架:
#include <stdio.h>char board[3][3];
void initBoard() {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {board[i][j] = ' ';}}
}void printBoard() {for (int i = 0; i < 3; i++) {printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);if (i < 2) printf("---+---+---\n");}
}int checkWin(char player) {// 檢查行、列和對角線for (int i = 0; i < 3; i++) {if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return 1;if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return 1;}if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return 1;if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return 1;return 0;
}int main() {initBoard();char currentPlayer = 'X';int x, y, moves = 0;while (1) {printBoard();printf("玩家 %c,請輸入坐標(x y):", currentPlayer);scanf("%d %d", &x, &y);if (board[x][y] != ' ') {printf("該位置已被占用,請重新輸入。\n");continue;}board[x][y] = currentPlayer;moves++;if (checkWin(currentPlayer)) {printBoard();printf("玩家 %c 獲勝!\n", currentPlayer);break;}if (moves == 9) {printBoard();printf("平局!\n");break;}currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';}return 0;
}
5. 掃雷游戲
描述:實現一個簡單的掃雷游戲,玩家需要揭開格子并避免觸雷。
功能點:
- 二維數組表示地雷分布。
- 地雷周圍的數字計算。
- 游戲邏輯(揭開格子、標記地雷等)。
6. 迷宮游戲
描述:生成一個迷宮,玩家需要通過鍵盤輸入控制角色走出迷宮。
功能點:
- 迷宮生成算法(如深度優先搜索)。
- 鍵盤輸入控制角色移動。
- 碰撞檢測。
總結
這些小游戲涵蓋了 C 語言的基本語法(如循環、條件判斷、數組等)以及一些進階技巧(如二維數組操作、隨機數生成、用戶輸入處理等)。