一.題目分析
簡單三子棋是指棋盤為3*3,玩家與電腦之間對決的遊戲。其中『0』代表電腦落子,『x』:玩家落子。
基本思路:
1.列印地圖(列印乙個「#」字狀的棋盤)
2.電腦落子(隨機落子)
3.玩家落子(通過輸入座標的方式)
4判斷遊戲結果
二.程式**
game.**件
#ifndef _game_h__
#define _game_h__
#include#include#include#include#define row 3
#define col 3
void play_game();
void init(char map[row][col], int row, int col); //地圖3*3的矩陣;
void display(char map[row][col], int row, int col); //輸出地圖
void player_move(char map[row][col], int row, int col); //玩家移動函式
void computer_move(char map[row][col], int row, int col);//電腦移動函式
char is_full(char map[row][col], int row, int col);//棋盤是否已滿
char is_win(char map[row][col], int row, int col);//判斷遊戲結果
#endif
game.c檔案
#include"game.h"
//初始化地圖,用9個空格
void init(char map[row][col], int row, int col)
//顯示函式,向螢幕列印地圖
void display(char map[row][col], int row, int col)
printf("\n");
if (i < row - 1)
printf("\n");
} }}//玩家落子,通過座標的形式
void player_move(char map[row][col], int row, int col)
else
printf("該座標已被占用,請重新輸入:");
} else
printf("輸入有誤,請重新輸入;");
}}void computer_move(char map[row][col], int row, int col)
else if (map[x][y] == ' ')//判斷是否為空格,如果是直接落子,否則重新生成隨機座標座標
}}char is_full(char map[row][col], int row, int col)
} if (count == 0)
return '1';
}char is_win(char map[row][col], int row, int col)
//判斷每一列的col個是否相等
for (j = 0; j < col; j++)
//判斷主對角線
if (map[0][0] == map[1][1] && map[1][1] == map[2][2] && map[2][2] != ' ')
return map[1][1];
//判斷次對角線
if (map[0][2] == map[1][1] && map[1][1] == map[2][0] && map[1][1] != ' ')
return map[1][1];
//判斷平局
if (ret =='1')
}
test.c檔案
#define _crt_secure_no_warnings 2
#include"game.h"
void menu() //設計乙個選單介面,使遊戲更富有可視性
void play_game()
; init(map, row, col);
//display(map, row, col);
while (1)
else if (ret == '0')
else if (ret == 'p')
else
;player_move(map, row, col);
system("cls");
display(map, row, col);
ret=is_win(map, row, col);
//printf("%c\n", ret);
if (ret == 'x')
if (ret == '0')
if (ret == 'p')
}}int main()
; int input = 0;
srand((unsigned)time(null));
do //遊戲至少要玩一局,因此在開始使用乙個do…while迴圈顯得更加合理
} while (input);
system("pause");
return 0;
}
遊戲思路:
遊戲結果總共有三種情況,輸,贏,平局,輸和贏判斷乙個就夠了,玩家或電腦每次落子後我們遍歷整個陣列,看橫三或豎三或斜三是不是同一種字元,如果是則根據字元給出相應的遊戲結果,否則遊戲繼續!
前面我們判斷了棋盤滿的情況,當棋盤滿了且雙方都沒有贏就說明遊戲平局。遊戲結束!
三.總結感悟
通過多次梳理遊戲的思路,讓我在解決三子棋遊戲的規則和考慮問題的方式更為全面,通過編寫程式的過程讓我逐漸有了一些編寫這種稍長**的完整性和邏輯性思考問題的訣竅。尤其是程式中判斷遊戲的幾種可能出現的情況,讓我又有了新的收穫。
簡單三子棋
c8 簡單三子棋 使用二維陣列 建立乙個棋盤,每乙個元素都是乙個char x 表示玩家落子 o 表示電腦落子 表示未落子 define crt secure no warnings include include include int menu define max row 3 define ma...
三子棋程式
標頭檔案game.h ifndef game h define game h include include include exit or srand include memset or include define row 3 define col 3 void game endif 原始檔ga...
簡單三子棋遊戲
通過二維陣列實現簡單的三子棋。玩家通過輸入棋盤座標進行下棋,電腦隨機生成自己的棋子。通過do while迴圈和switch case實現遊戲選單。int main while input return 0 將二維陣列全部致為空格,玩家下的棋子用x表示,電腦的棋子用o表示,即將二維陣列中的值改變為相應...