tft每日頭條

 > 生活

 > c語言五子棋心得

c語言五子棋心得

生活 更新时间:2024-09-28 12:10:39

一天時間開發出老師說需要一星期的C語言遊戲:五子棋項目!給大家分享一下~

為了進一步了解C語言編程,熟悉優秀的編碼風格,提升編碼能力,豐富項目經驗。所以在編程初期選擇了控制台小遊戲《單機五子棋》作為項目進行編碼。

c語言五子棋心得(一天時間寫出五子棋項目)1

本項目定位:

控制台小程序,作為熟悉一個完整的項目流程存在。

遊戲功能:

首先實現能夠讓雙人進行對戰,最後得出勝負(結果)。然後加入人機對戰元素,也就是傳統意義上一個人玩的單機遊戲。

編碼風格:

C語言面向過程編程,變量名與函數名全部使用駝峰命名法。

代碼:

#include <stdio.h> // 标準庫 #include <conio.h> // 按鍵 #include <Windows.h> // 屏幕刷新 #include <stdlib.h> // 随機數 static const int wArr = 15; static const int hArr = 15; int temp = 0; int allRound = 0; int iMap[wArr][hArr] = {}; void initMap(); void showMap(); void getUserInput(); void userInput(int width, int height); void whoIsWin(); void aiInput(int w, int h); bool notherUser = true; // 區分用戶 int myChess = 0; int whiteChess = 22; int blackChess = 33; int main() { int InputW = 0; int InputH = 0; initMap(); while (1) { showMap(); getUserInput(); system("CLS"); whoIsWin(); if (20000 == allRound) break; } showMap(); if (notherUser) { printf("User2, Win\n"); } else { printf("User1, Win\n"); } return 0; } void initMap() { for (int i = 0; i < wArr; i) { for (int j = 0; j < hArr; j) { iMap[i][j] = NULL; } } for (int i = 0; i < wArr; i) { iMap[i][0] = temp ; } temp = 0; for (int i = 0; i < wArr; i) { iMap[0][i] = temp ; } temp = 0; } void showMap() { for (int i = 0; i < wArr; i) { for (int j = 0; j < hArr; j) { printf("%3.0d", iMap[i][j]); } printf("\n"); } } void getUserInput() { int w, h; if (notherUser) { printf("User1:\n"); myChess = whiteChess; // ============ 用戶輸入 scanf_s("%d %d", &w, &h); userInput(w, h); } else { printf("User2:\n"); myChess = blackChess; // 下面是 AI 部分 aiInput(rand()%wArr, rand()%hArr); } } void userInput(int w, int h) { if (w >= wArr || w <= 0 || h >= hArr || h <= 0) { return; } else if (iMap[w][h] == whiteChess || iMap[w][h] == blackChess) { return; } iMap[w][h] = myChess; notherUser = !notherUser; } void aiInput(int w, int h) { if (w >= wArr || w <= 0 || h >= hArr || h <= 0) { return; } else if (iMap[w][h] == whiteChess || iMap[w][h] == blackChess) { return; } iMap[w][h] = myChess; notherUser = !notherUser; } void whoIsWin() { for (int i = 0; i < wArr; i) { for (int j = 0; j < hArr; j) { if(iMap[i][j] > 0) // 豎排五個 if (iMap[i 0][j] == iMap[i 1][j] && iMap[i 1][j] == iMap[i 2][j] && iMap[i 2][j] == iMap[i 3][j] && iMap[i 3][j] == iMap[i 4][j] //&& iMap[i 4][j] == iMap[i 5][j] ) { allRound = 20000; } // 右斜五個 else if (iMap[i 0][j 0] == iMap[i 1][j 1] && iMap[i 1][j 1] == iMap[i 2][j 2] && iMap[i 2][j 2] == iMap[i 3][j 3] && iMap[i 3][j 3] == iMap[i 4][j 4] //&& iMap[i 4][j 4] == iMap[i 5][j 5] ) { allRound = 20000; } // 左斜五個 else if (iMap[i 0][j 0] == iMap[i - 1][j 1] && iMap[i - 1][j 1] == iMap[i - 2][j 2] && iMap[i - 2][j 2] == iMap[i - 3][j 3] && iMap[i - 3][j 3] == iMap[i - 4][j 4] //&& iMap[i - 4][j 4] == iMap[i - 5][j 5] ) { allRound = 20000; } // 橫排五個 else if (iMap[i][j 0] == iMap[i][j 1] && iMap[i][j 1] == iMap[i][j 2] && iMap[i][j 2] == iMap[i][j 3] && iMap[i][j 3] == iMap[i][j 4] //&& iMap[i][j 4] == iMap[i][j 5] ) { allRound = 20000; } } } }

本次分享就到這裡了,一起努力吧!

對于準備學習編程的小夥伴,如果你想更好的提升你的編程核心能力(内功)不妨從現在開始!

編程學習書籍分享:

c語言五子棋心得(一天時間寫出五子棋項目)2

編程學習視頻分享:

c語言五子棋心得(一天時間寫出五子棋項目)3

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved