完成五子棋绘图部分
This commit is contained in:
parent
0b3b6af977
commit
cc2db4d0a7
131
User/APP_Gobang/APP_Gobang.c
Normal file
131
User/APP_Gobang/APP_Gobang.c
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
User/APP_Gobang/APP_Gobang.h
Normal file
8
User/APP_Gobang/APP_Gobang.h
Normal file
@ -0,0 +1,8 @@
|
||||
//五子棋应用
|
||||
|
||||
#ifndef __APP_GOBANG
|
||||
#define __APP_GOBANG
|
||||
|
||||
void APP_Gobang_Launcher(void);
|
||||
|
||||
#endif
|
||||
Loading…
x
Reference in New Issue
Block a user