完成五子棋绘图部分

This commit is contained in:
3190104610@zju.edu.cn 2021-10-06 20:31:17 +08:00
parent 0b3b6af977
commit cc2db4d0a7
2 changed files with 139 additions and 0 deletions

View File

@ -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);
}
}
}
}

View File

@ -0,0 +1,8 @@
//五子棋应用
#ifndef __APP_GOBANG
#define __APP_GOBANG
void APP_Gobang_Launcher(void);
#endif