五子棋入门图解,五子棋入门步骤图走法

首页 > 生活 > 作者:YD1662022-12-29 08:15:23

8.优化项目架构1.封装画棋子的代码
  1. 在ChessData.h中添加棋子类型

typedef enum { CHESS_WHITE = -1, CHESS_BLACK = 1 } chess_kind_t;

  1. 在main.cpp封装“落子”代码

void chessDown(int row, int col, chess_kind_t kind) { mciSendString("play res/down7.WAV", 0, 0, 0); int x = margin_x col * BLOCK_SIZE - 0.5 * BLOCK_SIZE; int y = margin_y row * BLOCK_SIZE - 0.5 * BLOCK_SIZE; if (kind == CHESS_WHITE) { drawPNG(&chessWhiteImg, x, y); } else { drawPNG(&chessBlackImg, x, y); } }

  1. 落子

int main(void) { init(); while (1) { MOUSEMSG msg = GetMouseMsg(); if (msg.uMsg == WM_LBUTTONDOWN && clickBoard(msg)) { chessDown(clickPosRow, clickPosCol, CHESS_BLACK); } } system("pause"); return 0; }2.优化项目架构

bool checkOver() { // 检查游戏是否结束 return false; } void AI_GO() { //AI走棋 } void manGo() { // 玩家走棋 chessDown(clickPosRow, clickPosCol, CHESS_BLACK); } int main(void) { init(); while (1) { MOUSEMSG msg = GetMouseMsg(); if (msg.uMsg == WM_LBUTTONDOWN) { manGo(); if (checkOver()) { init(); continue; } AI_GO(); if (checkOver()) { init(); continue; } } } closegraph(); return 0; }9.更新游戏数据

人(黑方)落子后,还没有修改底层的游戏数据。

在ChessDatat.h添加接口:

void updateGameMap(ChessData* data, int row, int col);

在ChessData.cpp中添加实现。

void updateGameMap(ChessData* data, int row, int col) { if (!data)return; if (data->playerFlag) data->chessMap[row][col] = 1; else data->chessMap[row][col] = -1; data->playerFlag = !data->playerFlag; // 换手 }

应用更新:

void manGo() { // 玩家走棋 chessDown(clickPosRow, clickPosCol, CHESS_BLACK); updateGameMap(&game, clickPosRow, clickPosCol); }10.实现AI走棋五子棋入门

连2

五子棋入门图解,五子棋入门步骤图走法(9)

五子棋入门图解,五子棋入门步骤图走法(10)

活3

五子棋入门图解,五子棋入门步骤图走法(11)

五子棋入门图解,五子棋入门步骤图走法(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.