From cc2db4d0a720e16dc58b3b376ac48e30b9156a85 Mon Sep 17 00:00:00 2001 From: "3190104610@zju.edu.cn" <3190104610@zju.edu.cn> Date: Wed, 6 Oct 2021 20:31:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=94=E5=AD=90=E6=A3=8B?= =?UTF-8?q?=E7=BB=98=E5=9B=BE=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/APP_Gobang/APP_Gobang.c | 131 +++++++++++++++++++++++++++++++++++ User/APP_Gobang/APP_Gobang.h | 8 +++ 2 files changed, 139 insertions(+) create mode 100644 User/APP_Gobang/APP_Gobang.c create mode 100644 User/APP_Gobang/APP_Gobang.h diff --git a/User/APP_Gobang/APP_Gobang.c b/User/APP_Gobang/APP_Gobang.c new file mode 100644 index 0000000..6b97f38 --- /dev/null +++ b/User/APP_Gobang/APP_Gobang.c @@ -0,0 +1,131 @@ +//五子棋应用 + +#include "stdio.h" + +#include "sys.h" +#include "systick.h" + +#include "key.h" +#include "lcd.h" +#include "hc12.h" + +#include "GameEngine.h" + +#include "APP_Gobang.h" + +/**************************************** 私有定义 ****************************************/ + +#define BROADWIDTH 15 +#define WIDTH (BROADWIDTH + 1) + +#define BLACK_TURN 0 +#define WHITE_TURN 1 + +#define NO_CHESS 0 +#define BLACK_CHESS 1 +#define WHITE_CHESS 2 + +#define NONE_WIN 0 +#define BLACK_WIN 1 +#define WHITE_WIN 2 + +#define CHECK_X 0 +#define CHECK_Y 1 +#define CHECK_DIAG_LEFT 2 +#define CHECK_DIAG_RIGHT 3 + +#define CHESS_RADIUS 5 + +typedef struct +{ + uint8_t x; + uint8_t y; +} Chess; + +/*****************************************************************************************/ + +/**************************************** 全局变量 ****************************************/ + +Chess put_chess = {0, 0}; +Chess move_chess = {0, 0}; + +//棋盘交点阵 +int map[WIDTH][WIDTH] = {{0, 0}}; + +//记录执子方 +int turn = BLACK_TURN; + +//棋子类型 +int chess_kind = BLACK_CHESS; + +uint8_t interval = 240 / WIDTH; +uint16_t x_start, x_end, y_start, y_end; + +/*****************************************************************************************/ + +/**************************************** 私有函数 ****************************************/ + +void APP_Gobang_DispGobang(void); + +void APP_Gobang_DispMap(void); + +void APP_Gobang_DispChess(void); + +/*****************************************************************************************/ + +/** + * @brief 启动五子棋 + */ +void APP_Gobang_Launcher(void) +{ + x_start = (320 - 240) / 2 + interval / 2; + x_end = x_start + (WIDTH - 1) * interval; + y_start = interval / 2; + y_end = y_start + (WIDTH - 1) * interval; + + uint8_t byte; + uint8_t list[4]; + + APP_Gobang_DispGobang(); + + while (1) + { + } +} + +void APP_Gobang_DispGobang(void) +{ + GE_Draw_ClrAll(WHITE); + APP_Gobang_DispMap(); + APP_Gobang_DispChess(); + GE_Draw_Disp(); +} + +void APP_Gobang_DispMap(void) +{ + uint8_t i = 0; + for (i = 0; i < WIDTH; i++) + { + GE_Draw_Line(x_start, y_start + i * interval, x_end, y_start + i * interval, BLACK); + GE_Draw_Line(x_start + i * interval, y_start, x_start + i * interval, y_end, BLACK); + } +} + +void APP_Gobang_DispChess(void) +{ + uint8_t i, j; + for (i = 0; i < WIDTH; i++) + { + for (j = 0; j < WIDTH; j++) + { + if (map[i][j] == BLACK_CHESS) + { + GE_Draw_FillCircle(x_start + j * interval, y_start + i * interval, CHESS_RADIUS, RED); + } + else if (map[i][j] == WHITE_CHESS) + { + GE_Draw_FillCircle(x_start + j * interval, y_start + i * interval, CHESS_RADIUS, BLUE); + } + } + } +} diff --git a/User/APP_Gobang/APP_Gobang.h b/User/APP_Gobang/APP_Gobang.h new file mode 100644 index 0000000..070e339 --- /dev/null +++ b/User/APP_Gobang/APP_Gobang.h @@ -0,0 +1,8 @@ +//五子棋应用 + +#ifndef __APP_GOBANG +#define __APP_GOBANG + +void APP_Gobang_Launcher(void); + +#endif