五子棋 第一次用C编写的小游戏

本文深入探讨了Unity3D引擎与C#编程语言的结合应用,通过实战案例展示了如何使用这些工具进行游戏开发。重点介绍了场景搭建、脚本编写、物理引擎使用以及资源管理等方面的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define K 24
#define N 18 
#define up 0x4800
#define down 0x5000
#define left 0x4b00
#define right 0x4d00
#define esc 0x011b
#define enter 0x1c0d
#define A 0x1e61
#define S 0x1f73
#define D 0x2064
#define W 0x1177
#define space 0x3920
#define Y 0x1579
#define n 0x316e
struct chess
{
     int x;
     int y;         /*x,y表示当前光标的位置*/
     int yes[N][N]; /* 0表示无棋子,1表示白色棋子,2表示黑色棋子*/
     int kao;       /* 1表示白棋准备落子,2表示黑棋落子*/
     int ok;        /*1表示白棋胜出,2表示黑棋胜出*/
}chess;
int key,t;
char hong64H[]={
/* 以下是 '红' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x1E,0x00,0x00,0x03,0xE0,0x00,
  0x00,0x00,0x1C,0x18,0x00,0x1F,0xE0,0x00,
  0x00,0x00,0x3C,0x38,0x7F,0xFF,0xE0,0x00,
  0x00,0x00,0x78,0x70,0xFF,0xFF,0xE0,0x00,
  0x00,0x00,0xFF,0xE0,0xFF,0xFF,0xE0,0x00,
  0x00,0x01,0xFF,0xE0,0x7F,0xFF,0x80,0x00,
  0x00,0x07,0xFF,0xC0,0x7F,0xFF,0x00,0x00,
  0x00,0x1F,0xFF,0x80,0x7F,0xFC,0x00,0x00,
  0x00,0x0F,0xFF,0x00,0x7F,0xF8,0x00,0x00,
  0x00,0x0F,0xFE,0x00,0x01,0xF8,0x00,0x00,
  0x00,0x0F,0xFE,0x00,0x01,0xF8,0x00,0x00,
  0x00,0x07,0x1C,0x20,0x01,0xF0,0x00,0x00,
  0x00,0x04,0x1F,0xE0,0x01,0xF0,0x00,0x00,
  0x00,0x00,0x3F,0xE0,0x01,0xF0,0x00,0x00,
  0x00,0x00,0x7F,0xE0,0x01,0xF0,0x00,0x00,
  0x00,0x00,0x7F,0xC0,0x01,0xF0,0x00,0x00,
  0x00,0x00,0xFF,0x80,0x01,0xF0,0x00,0x00,
  0x00,0x01,0xFE,0x00,0x01,0xF0,0x00,0x00,
  0x00,0x07,0xF8,0x00,0x01,0xF0,0x00,0x00,
  0x00,0x03,0xE0,0x00,0x01,0xF0,0x00,0x00,
  0x00,0x03,0xC0,0x60,0x03,0xE0,0x00,0x00,
  0x00,0x01,0x80,0xE0,0x03,0xF0,0x00,0x00,
  0x00,0x00,0x03,0xE0,0x03,0xFF,0xFE,0x00,
  0x00,0x00,0x07,0x80,0x07,0xFF,0xFF,0x80,
  0x00,0x00,0x1F,0x00,0x3F,0xFF,0xFF,0x80,
  0x00,0x00,0x7E,0x01,0xFF,0xFF,0xFF,0xC0,
  0x00,0x00,0xF8,0x0F,0xFF,0xFF,0xFF,0xC0,
  0x00,0x03,0xF0,0x7F,0xF0,0x00,0x03,0xC0,
  0x00,0x0F,0xE0,0xFE,0x00,0x00,0x00,0x00,
  0x00,0x0F,0xC0,0x70,0x00,0x00,0x00,0x00,
  0x00,0x0F,0x80,0x40,0x00,0x00,0x00,0x00,
  0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char fang64H[]={
/* 以下是 '方' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,
  0x00,0x00,0x00,0x00,0x03,0xFF,0xFC,0x00,
  0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,0x00,
  0x00,0x00,0x00,0x01,0xFF,0xFF,0xFE,0x00,
  0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFE,0x00,
  0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFE,0x00,
  0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFE,0x00,
  0x00,0x00,0x7F,0xFF,0xF8,0x00,0x1E,0x00,
  0x00,0x0F,0xFF,0xFF,0xF8,0x00,0x00,0x00,
  0x00,0xFF,0xFF,0x00,0xF8,0x00,0x00,0x00,
  0x00,0x7F,0xE0,0x01,0xFC,0x00,0x00,0x00,
  0x00,0x7F,0x00,0x01,0xE6,0x00,0x00,0x00,
  0x00,0x60,0x00,0x03,0xC3,0x80,0x00,0x00,
  0x00,0x00,0x00,0x07,0x81,0xC0,0x00,0x00,
  0x00,0x00,0x00,0x07,0x00,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x0F,0x00,0xF8,0x00,0x00,
  0x00,0x00,0x00,0x1E,0x00,0xFC,0x00,0x00,
  0x00,0x00,0x00,0x3C,0x00,0xFC,0x00,0x00,
  0x00,0x00,0x00,0x78,0x00,0xF8,0x00,0x00,
  0x00,0x00,0x01,0xF0,0x01,0xF0,0x00,0x00,
  0x00,0x00,0x03,0xE0,0x01,0xE0,0x00,0x00,
  0x00,0x00,0x07,0xC0,0x03,0xE0,0x00,0x00,
  0x00,0x00,0x1F,0x80,0x03,0xC0,0x00,0x00,
  0x00,0x00,0x7F,0x00,0x07,0xC0,0x00,0x00,
  0x00,0x01,0xFF,0x00,0x0F,0x80,0x00,0x00,
  0x00,0x07,0xFF,0x00,0x0F,0x80,0x00,0x00,
  0x00,0x1F,0xF8,0x00,0x1F,0x00,0x00,0x00,
  0x00,0x3F,0xC0,0x10,0x3E,0x00,0x00,0x00,
  0x00,0x00,0x00,0x0F,0xFE,0x00,0x00,0x00,
  0x00,0x00,0x00,0x0F,0xFC,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,
  0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char huo64H[]={
/* 以下是 '获' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,
  0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x03,0xC0,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x03,0xC0,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x03,0x80,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x07,0x81,0xC0,0x00,
  0x00,0x00,0x00,0xF0,0x07,0xFF,0xC0,0x00,
  0x00,0x00,0x00,0xF0,0x0F,0xFF,0xC0,0x00,
  0x00,0x00,0x00,0x7F,0xFF,0xFF,0x00,0x00,
  0x00,0x00,0x01,0xFF,0xFF,0xE0,0x00,0x00,
  0x00,0x00,0x3F,0xFC,0x1F,0x00,0x00,0x00,
  0x00,0x00,0x7F,0xF8,0x1C,0x00,0x00,0x00,
  0x00,0x00,0x7F,0x38,0x18,0x00,0x00,0x00,
  0x00,0x00,0x3C,0x10,0x30,0x00,0x00,0x00,
  0x00,0x00,0x10,0x00,0x30,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x0E,0x00,0x80,0x00,
  0x00,0x00,0x00,0x20,0x04,0x00,0xE0,0x00,
  0x00,0x00,0x30,0x70,0x04,0x00,0xF0,0x00,
  0x00,0x00,0x1F,0xF0,0x04,0x00,0xF8,0x00,
  0x00,0x00,0x0F,0xF0,0x0C,0x00,0x78,0x00,
  0x00,0x00,0x07,0xE0,0x0C,0x00,0x00,0x00,
  0x00,0x00,0x07,0xC0,0x0F,0xF8,0x00,0x00,
  0x00,0x00,0x0F,0xC0,0x0F,0xF8,0x00,0x00,
  0x00,0x00,0x1F,0xE0,0x1F,0xF8,0x00,0x00,
  0x00,0x00,0x1F,0xF0,0xFF,0xF0,0x00,0x00,
  0x00,0x00,0x39,0xFF,0xFF,0xC0,0x00,0x00,
  0x00,0x00,0x61,0xFF,0xFF,0x00,0x00,0x00,
  0x00,0x00,0xC1,0xC3,0xFE,0x00,0x00,0x00,
  0x00,0x01,0x83,0xC1,0xFC,0x00,0x00,0x00,
  0x00,0x0F,0x03,0xC1,0x9C,0x00,0x00,0x00,
  0x00,0x0C,0x07,0xC0,0x1E,0x00,0x00,0x00,
  0x00,0x0C,0x0C,0xC0,0x1F,0x00,0x00,0x00,
  0x00,0x00,0x10,0xC0,0x1F,0x80,0x00,0x00,
  0x00,0x00,0x20,0xC0,0x3F,0xC0,0x00,0x00,
  0x00,0x00,0x60,0xC0,0x3F,0xE0,0x00,0x00,
  0x00,0x00,0xC0,0xC0,0x3F,0xF0,0x00,0x00,
  0x00,0x03,0x80,0xC0,0x60,0x38,0x00,0x00,
  0x00,0x07,0x80,0x80,0xE0,0x0E,0x00,0x00,
  0x00,0x0F,0x00,0x81,0xC0,0x07,0x00,0x00,
  0x00,0x3C,0x00,0x87,0xC0,0x07,0xC0,0x00,
  0x00,0x00,0x01,0xFF,0x80,0x03,0xF0,0x00,
  0x00,0x00,0x01,0xFF,0x00,0x03,0xFE,0x00,
  0x00,0x00,0x01,0xFC,0x00,0x01,0xFF,0xC0,
  0x00,0x00,0x01,0xE0,0x00,0x00,0xFF,0xF0,
  0x00,0x00,0xFF,0x80,0x00,0x00,0x7F,0xF8,
  0x00,0x00,0x7F,0x80,0x00,0x00,0x1F,0xF8,
  0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char sheng64H[]={
/* 以下是 '胜' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,
  0x00,0x00,0x00,0xE0,0x00,0x0F,0x00,0x00,
  0x00,0x00,0x07,0xFC,0x00,0x1F,0x00,0x00,
  0x00,0x00,0x7F,0xFC,0x00,0x1E,0x00,0x00,
  0x00,0x00,0xF0,0x7C,0x00,0x1E,0x00,0x00,
  0x00,0x00,0xC0,0x78,0x00,0x1E,0x00,0x00,
  0x00,0x00,0xC0,0x78,0x00,0x1E,0x00,0x00,
  0x00,0x01,0xC0,0x38,0x00,0x1E,0x00,0x00,
  0x00,0x01,0x80,0x38,0x00,0x1E,0x00,0x00,
  0x00,0x01,0x80,0x30,0x00,0x1E,0x00,0x00,
  0x00,0x01,0x80,0x30,0x00,0x1E,0x00,0x00,
  0x00,0x01,0xCC,0x70,0x00,0x1E,0x00,0x00,
  0x00,0x01,0xFE,0x70,0x10,0x1E,0x30,0x00,
  0x00,0x01,0xFC,0x70,0x38,0x1F,0xF0,0x00,
  0x00,0x01,0xFC,0x70,0x3F,0xFF,0xF0,0x00,
  0x00,0x01,0xF8,0x70,0x3F,0xFF,0xF0,0x00,
  0x00,0x01,0xE0,0x70,0x7F,0xFF,0xE0,0x00,
  0x00,0x01,0xC0,0x70,0x7F,0xFF,0xC0,0x00,
  0x00,0x01,0x80,0x70,0xFF,0xFF,0x00,0x00,
  0x00,0x03,0x00,0x71,0xF1,0xFC,0x00,0x00,
  0x00,0x03,0x0C,0x71,0xC0,0x7C,0x00,0x00,
  0x00,0x03,0xFC,0x73,0x80,0x3C,0x00,0x00,
  0x00,0x03,0xFC,0x7F,0x00,0x3C,0x00,0x00,
  0x00,0x03,0xFC,0x7E,0x00,0x3C,0x00,0x00,
  0x00,0x03,0xF8,0x7C,0x00,0x3F,0xF0,0x00,
  0x00,0x07,0xF0,0x70,0x00,0x7F,0xF0,0x00,
  0x00,0x07,0xC0,0x30,0x1F,0xFF,0xF0,0x00,
  0x00,0x07,0x00,0x30,0x1F,0xFF,0xF0,0x00,
  0x00,0x0E,0x00,0x30,0x0F,0xFF,0xE0,0x00,
  0x00,0x08,0x00,0x30,0x0F,0xFF,0x80,0x00,
  0x00,0x08,0x00,0x30,0x0F,0xFC,0x00,0x00,
  0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x00,
  0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x00,
  0x00,0x38,0x00,0x30,0x00,0x38,0x00,0x00,
  0x00,0x78,0x00,0x30,0x00,0x3C,0x00,0x00,
  0x00,0x78,0x00,0x70,0x00,0x3C,0x00,0x00,
  0x00,0xF0,0x00,0x60,0x00,0x3E,0x03,0x00,
  0x01,0xF0,0x00,0x60,0x00,0x7F,0xFF,0x80,
  0x03,0xE0,0x00,0x60,0x03,0xFF,0xFF,0xC0,
  0x03,0xC0,0x00,0xE0,0x3F,0xFF,0xFF,0xC0,
  0x07,0x80,0x7F,0xF1,0xFF,0xFF,0xFF,0xC0,
  0x0F,0x00,0x3F,0xF1,0xFF,0xF8,0x07,0xC0,
  0x1C,0x00,0x1F,0xF0,0xF0,0x00,0x00,0x00,
  0x10,0x00,0x0F,0xF0,0x80,0x00,0x00,0x00,
  0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char bai64H[]={
/* 以下是 '白' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,
  0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
  0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x70,0x00,0x0F,0xF0,0x00,0x00,
  0x00,0x00,0x60,0x01,0xFF,0xFE,0x00,0x00,
  0x00,0x00,0xE0,0x0F,0xFF,0xFF,0xC0,0x00,
  0x00,0x01,0xE0,0x7F,0xF0,0x3F,0xF0,0x00,
  0x00,0x03,0xE3,0xFF,0x80,0x0F,0xF0,0x00,
  0x00,0x07,0xFF,0xFC,0x00,0x0F,0xE0,0x00,
  0x00,0x0F,0xFF,0xF0,0x00,0x0F,0xE0,0x00,
  0x00,0x1F,0xFF,0xC0,0x00,0x0F,0xC0,0x00,
  0x00,0x3F,0xFF,0x00,0x00,0x0F,0xC0,0x00,
  0x00,0x7F,0xFE,0x00,0xF8,0x0F,0xC0,0x00,
  0x00,0x7C,0x7C,0x0F,0xF8,0x0F,0x80,0x00,
  0x00,0x70,0x3C,0x1F,0xF0,0x0F,0x80,0x00,
  0x00,0x40,0x3C,0x1F,0xF0,0x1F,0x80,0x00,
  0x00,0x00,0x3C,0x1F,0xC0,0x1F,0x00,0x00,
  0x00,0x00,0x3C,0x0F,0x00,0x1F,0x00,0x00,
  0x00,0x00,0x1E,0x06,0x00,0x1F,0x00,0x00,
  0x00,0x00,0x1E,0x00,0x00,0x3E,0x00,0x00,
  0x00,0x00,0x0E,0x00,0x00,0x3E,0x00,0x00,
  0x00,0x00,0x0E,0x00,0x00,0x3E,0x00,0x00,
  0x00,0x00,0x0F,0x00,0xE0,0x7C,0x00,0x00,
  0x00,0x00,0x07,0x03,0xF0,0x7C,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xF8,0xFC,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xFF,0xF8,0x00,0x00,
  0x00,0x00,0x01,0xFF,0x87,0xF8,0x00,0x00,
  0x00,0x00,0x01,0xF0,0x03,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x80,0x00,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

char wu64H[]={
/* 以下是 '五' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
  0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
  0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,
  0x00,0x00,0x00,0x03,0xFF,0xF8,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xFF,0xC0,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xFF,0x80,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,
  0x00,0x00,0x01,0xFF,0xFC,0x00,0x00,0x00,
  0x00,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,
  0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xFF,0xC0,0x00,0x00,
  0x00,0x00,0x00,0x07,0xFF,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0x00,
  0x00,0x00,0x00,0x3F,0xFF,0xFC,0x00,0x00,
  0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x00,0x00,
  0x00,0x00,0x1F,0xFF,0x83,0xF0,0x00,0x00,
  0x00,0x00,0x3F,0xFF,0x03,0xF0,0x00,0x00,
  0x00,0x00,0x18,0x1F,0x03,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x1E,0x03,0xE0,0x00,0x00,
  0x00,0x00,0x00,0x1C,0x03,0xE0,0x00,0x00,
  0x00,0x00,0x00,0x3C,0x03,0xE0,0x00,0x00,
  0x00,0x00,0x00,0x38,0x03,0xC0,0x00,0x00,
  0x00,0x00,0x00,0x78,0x07,0xC0,0x00,0x00,
  0x00,0x00,0x00,0x78,0x07,0x80,0x00,0x00,
  0x00,0x00,0x00,0x70,0x07,0x80,0x00,0x00,
  0x00,0x00,0x00,0xF0,0x0F,0x80,0x00,0x00,
  0x00,0x00,0x00,0xF0,0xFF,0x80,0x00,0x00,
  0x00,0x00,0x01,0xFF,0xFF,0xFF,0xF8,0x00,
  0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFC,0x00,
  0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFE,0x00,
  0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,
  0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
  0x00,0xFF,0xFF,0xC0,0x00,0x01,0xFF,0x00,
  0x00,0xFF,0xE0,0x00,0x00,0x00,0x1F,0x00,
  0x00,0xFE,0x00,0x00,0x00,0x00,0x07,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char zi64H[]={
/* 以下是 '子' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xFF,0x00,0x00,0x00,
  0x00,0x00,0x00,0x1F,0xFF,0xC0,0x00,0x00,
  0x00,0x00,0x00,0x7F,0xFF,0xE0,0x00,0x00,
  0x00,0x00,0x01,0xFE,0x0F,0xE0,0x00,0x00,
  0x00,0x00,0x07,0xF8,0x0F,0xC0,0x00,0x00,
  0x00,0x00,0x1F,0xE0,0x0F,0x80,0x00,0x00,
  0x00,0x00,0x7F,0xC0,0x0F,0x00,0x00,0x00,
  0x00,0x00,0x7F,0x00,0x1E,0x00,0x00,0x00,
  0x00,0x00,0x3C,0x00,0x1C,0x00,0x00,0x00,
  0x00,0x00,0x18,0x00,0x38,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0xFF,0xFF,0xE0,0x00,
  0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,
  0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x00,
  0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF8,0x00,
  0x00,0x00,0x01,0xFF,0xFF,0xFF,0xF8,0x00,
  0x00,0x00,0x0F,0xFF,0xFC,0x00,0x3C,0x00,
  0x00,0x00,0x7F,0xFF,0xF8,0x00,0x04,0x00,
  0x00,0x07,0xFF,0xF8,0x78,0x00,0x00,0x00,
  0x00,0x7F,0xFF,0x80,0x78,0x00,0x00,0x00,
  0x00,0x7F,0xE0,0x00,0x78,0x00,0x00,0x00,
  0x00,0x7E,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x30,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x20,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
  0x00,0x00,0x06,0x00,0xF0,0x00,0x00,0x00,
  0x00,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char qi64H[]={
/* 以下是 '棋' 的 64点阵华文新魏 字模,512 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0x80,0x00,0x04,0x00,0x00,
  0x00,0x00,0x03,0x00,0x00,0x07,0x00,0x00,
  0x00,0x00,0x03,0x00,0x00,0x0F,0x00,0x00,
  0x00,0x00,0x03,0x00,0x00,0x0F,0x00,0x00,
  0x00,0x00,0x03,0x00,0x00,0x0E,0x00,0x00,
  0x00,0x00,0x02,0x00,0x00,0x0E,0x00,0x00,
  0x00,0x00,0x02,0x00,0x30,0x0E,0x00,0x00,
  0x00,0x00,0x02,0x00,0x30,0x0E,0x00,0x00,
  0x00,0x00,0x02,0x00,0x30,0x0E,0x00,0x00,
  0x00,0x00,0x02,0x00,0x30,0x0E,0x00,0x00,
  0x00,0x00,0x06,0x00,0x30,0x0F,0x80,0x00,
  0x00,0x00,0x06,0x00,0x30,0x3F,0xE0,0x00,
  0x00,0x00,0x07,0x00,0x3F,0xFF,0xE0,0x00,
  0x00,0x00,0x07,0xE0,0x7F,0xFF,0xE0,0x00,
  0x00,0x00,0x3F,0xE3,0xFF,0xFF,0x80,0x00,
  0x00,0x01,0xFF,0xE3,0xFF,0xFE,0x00,0x00,
  0x00,0x3F,0xFF,0xC1,0xFF,0x9E,0x00,0x00,
  0x00,0x3F,0xFF,0x81,0xF0,0x1E,0x00,0x00,
  0x00,0x3F,0xFF,0x00,0x70,0x1E,0x00,0x00,
  0x00,0x3F,0xFE,0x00,0x7F,0x1C,0x00,0x00,
  0x00,0x1F,0x3E,0x00,0x7F,0x1C,0x00,0x00,
  0x00,0x18,0x1E,0x00,0x7F,0x1C,0x00,0x00,
  0x00,0x00,0x1F,0x00,0x78,0x1C,0x00,0x00,
  0x00,0x00,0x3F,0x80,0x70,0x1C,0x00,0x00,
  0x00,0x00,0x3F,0xC0,0x70,0x1C,0x00,0x00,
  0x00,0x00,0x7F,0xC0,0x7F,0x1C,0x00,0x00,
  0x00,0x00,0xFF,0xC0,0x7E,0x1C,0x00,0x00,
  0x00,0x01,0xFC,0x00,0x7E,0x1C,0x00,0x00,
  0x00,0x03,0xFC,0x00,0x78,0x1C,0x00,0x00,
  0x00,0x03,0xCC,0x00,0x70,0x1C,0x02,0x00,
  0x00,0x07,0x0C,0x00,0x60,0x1F,0xFF,0x00,
  0x00,0x0E,0x0C,0x00,0x60,0xFF,0xFF,0x00,
  0x00,0x1C,0x0C,0x00,0x7F,0xFF,0xFF,0x80,
  0x00,0x38,0x0C,0x07,0xFF,0xFF,0xFF,0x80,
  0x00,0xF0,0x0F,0xFF,0xFF,0xE0,0x00,0x80,
  0x01,0xE0,0x0F,0xFF,0x00,0x00,0x00,0x00,
  0x01,0x80,0x0F,0x80,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0C,0x00,0x00,0x08,0x00,0x00,
  0x00,0x00,0x0C,0x00,0x40,0x07,0xC0,0x00,
  0x00,0x00,0x0C,0x01,0xC0,0x03,0xF0,0x00,
  0x00,0x00,0x0C,0x07,0x80,0x01,0xF8,0x00,
  0x00,0x00,0x0C,0x1F,0x00,0x01,0xF8,0x00,
  0x00,0x00,0x0C,0x1F,0x00,0x00,0xF8,0x00,
  0x00,0x00,0x0C,0x0E,0x00,0x00,0x38,0x00,
  0x00,0x00,0x0C,0x04,0x00,0x00,0x18,0x00,
  0x00,0x00,0x1C,0x00,0x00,0x00,0x08,0x00,
  0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

char zuo16H[]={
/* 以下是 '作' 的 16点阵黑体 字模,32 byte */
  0x18,0xC0,0x18,0xC0,0x19,0x80,0x31,0xFE,
  0x33,0xFE,0x76,0xC0,0xF0,0xFC,0xB0,0xFC,
  0x30,0xC0,0x30,0xC0,0x30,0xFE,0x30,0xFE,
  0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,
};
char zhe16H[]={
/* 以下是 '者' 的 16点阵黑体 字模,32 byte */
  0x03,0x00,0x03,0x0C,0x1F,0xCC,0x1F,0xD8,
  0x03,0x30,0xFF,0xFE,0xFF,0xFE,0x03,0x00,
  0x0F,0xF8,0x3F,0xF8,0xEC,0x18,0xCF,0xF8,
  0x0C,0x18,0x0F,0xF8,0x0F,0xF8,0x00,0x00,
};
char mh16H[]={

0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  
0x00,0x00,  0x00,0x00,  0x00,0x00,  0x00,0x00,  
0x30,0x00,  0x30,0x00,  0x00,0x00,  0x00,0x00,  
0x30,0x00,  0x30,0x00,  0x00,0x00,  0x00,0x00
};

char zhao16H[]={

0x0C,0x00,  0x0C,0x0C,  0x7F,0x8C,  0x7F,0xCC,  
0x0C,0x6C,  0x0C,0x38,  0xFF,0x98,  0xFF,0xB8,  
0x0C,0x38,  0x6F,0x6C,  0x6F,0xCC,  0x7C,0x84,  
0x7C,0x00,  0xCF,0xFE,  0x87,0xFE,  0x00,0x00
};
char peng16H[]={

0x00,0x30,  0x77,0x7C,  0x77,0x7C,  0x55,0x64,  
0x55,0x7C,  0x77,0x64,  0x55,0x6C,  0x55,0x60,  
0x77,0x7E,  0x77,0x7E,  0x55,0x06,  0x55,0x76,  
0x55,0x06,  0xD5,0x1E,  0xAB,0x0C,  0x00,0x00
};

void init(void)
{
    int gdriver = DETECT, gmode, errorcode;
	int i,j;
	registerbgidriver(0);
    initgraph(&gdriver, &gmode,"c:\\turboc2");
    errorcode = graphresult();
    if (errorcode != grOk)
    {
        printf("Graphics error: %s",grapherrormsg(errorcode));
        printf("Press any key to halt:");
        getch();
        exit(1);
    }
	chess.x=10*K;
	chess.y=10*K;
	chess.kao=1;
	chess.ok=0;
	for(i=0;i<N;i++)
	  for(j=0;j<N;j++)
	    chess.yes[i][j]=0;
}

void draw_mat(char *mat,int matsize,int x,int y,int color)
{
     int i,j,k,m;
     m=(matsize-1)/8+1;
     for(j=0;j<matsize;j++)
     for(i=0;i<m;i++)
          for(k=0;k<8;k++)
               if(mat[j*m+i]&(0x80>>k))
                    putpixel(x+i*8+k,y+j,color);
}

void player_clew(void)  /*input message*/
{
     setcolor(15);
     settextstyle(0,0,1);
     outtextxy(24,10,"1P: Up Down Left Right Enter         2P: W S A D Space ");
	 setcolor(10);
	 outtextxy(570,10,"QUIT:ESC");
} 

void draw_chessboard(void)
{
	int i;		
	setcolor(1);
	rectangle((N+2)*K,K,(N+9)*K,(N+1)*K);
	setfillstyle(1,3);
	floodfill((N+2)*K+1,K+2,1);
  	for(i=0;i<=N;i++)
	{
	  line(K,K*i+K,K*N+K,K*i+K);
	  line(K*i+K,K,K*i+K,K*N+K);
	}
	for(i=0;i<5;i++)
	{
		circle(5*K,5*K,i);
		circle(15*K,5*K,i);
		circle(5*K,15*K,i);
		circle(15*K,15*K,i);
		circle(10*K,10*K,i);
	}
}

void show_character(void)/*input word*/
{
     draw_mat(wu64H,64,479,21,0);
     draw_mat(zi64H,64,529,21,0);
     draw_mat(qi64H,64,579,21,0);

     draw_mat(wu64H,64,480,22,1);
     draw_mat(zi64H,64,530,22,1);
     draw_mat(qi64H,64,580,22,1);
	 
     draw_mat(zuo16H,16,480,460,15);
     draw_mat(zhe16H,16,498,460,15);
	 draw_mat(mh16H,16,516,460,15);
	 
	 draw_mat(zhao16H,16,530,460,15);
     draw_mat(peng16H,16,552,460,15);
}

void cursor_position(int x,int y,int color)
{
        setcolor(color);
	 line(x-K/2,y-K/2,x-K/2+5,y-K/2);
	 line(x-K/2,y-K/2,x-K/2,y-K/2+5);
	 line(x+K/2,y-K/2,x+K/2-5,y-K/2);
	 line(x+K/2,y-K/2,x+K/2,y-K/2+5);
	 line(x-K/2,y+K/2,x-K/2+5,y+K/2);
	 line(x-K/2,y+K/2,x-K/2,y+K/2-5);
	 line(x+K/2,y+K/2,x+K/2-5,y+K/2);
	 line(x+K/2,y+K/2,x+K/2,y+K/2-5);	 
	 
	 if(color==4)
	    setcolor(15);
}

void draw_chessman(int x,int y,int color)
{
  int i;
  setcolor(color);
  for(i=0;i<10;i++)
    circle(x,y,i);
}

 void x_and_y(void)/*显示光标的横纵坐标*/
{
     char str1[10],str2[10];
     setfillstyle(1,7);
     bar(24,460,192,480);
     setcolor(14);
     settextstyle(0,0,2);
     sprintf(str1,"X:%d",(chess.x-K)/K);
     sprintf(str2,"Y:%d",(chess.y-K)/K);
     outtextxy(70,470,str1);
     outtextxy(145,470,str2);
     setcolor(15);
}

void win_(void)/*判断是否胜出*/
{
     int i,j;
     for(i=0;i<=N;i++)
     {
          for(j=0;j<=N;j++)
          {
               if(((j+4)<=N&&chess.yes[i][j]!=0&&
                    chess.yes[i][j]==chess.yes[i][j+1]&&
                    chess.yes[i][j+1]==chess.yes[i][j+2]&&
                    chess.yes[i][j+2]==chess.yes[i][j+3]&&
                    chess.yes[i][j+3]==chess.yes[i][j+4])||

                    ((i+4)<=N&&chess.yes[i][j]!=0&&
                    chess.yes[i][j]==chess.yes[i+1][j]&&
                    chess.yes[i+1][j]==chess.yes[i+2][j]&&
                    chess.yes[i+2][j]==chess.yes[i+3][j]&&
                    chess.yes[i+3][j]==chess.yes[i+4][j])||

                    ((i+4)<=N&&(j+4)<=N&&chess.yes[i][j]!=0&&
                    chess.yes[i][j]==chess.yes[i+1][j+1]&&
                    chess.yes[i+1][j+1]==chess.yes[i+2][j+2]&&
                    chess.yes[i+2][j+2]==chess.yes[i+3][j+3]&&
                    chess.yes[i+3][j+3]==chess.yes[i+4][j+4])||

                    ((i+4)<=N&&j>=4&&chess.yes[i][j]!=0&&
                    chess.yes[i][j]==chess.yes[i+1][j-1]&&
                    chess.yes[i+1][j-1]==chess.yes[i+2][j-2]&&
                    chess.yes[i+2][j-2]==chess.yes[i+3][j-3]&&
                    chess.yes[i+3][j-3]==chess.yes[i+4][j-4]))
               {
                    if(chess.yes[i][j]==1)
                         chess.ok=1;
                    else
                         chess.ok=2;
                         break;
               }
          }
          if(chess.ok!=0)
               break;
     }
} 

void game_over(void)
{
     if(chess.ok==1)
     {
          draw_mat(bai64H,64,528,99,0);
          draw_mat(bai64H,64,530,100,15);
     }
     else
     {
          draw_mat(hong64H,64,528,99,0);
          draw_mat(hong64H,64,530,100,4);
     }

     draw_mat(fang64H,64,529,189,0);
     draw_mat(huo64H,64,529,259,0);
     draw_mat(sheng64H,64,529,329,0);

     draw_mat(fang64H,64,530,190,0);
     draw_mat(huo64H,64,530,260,0);
     draw_mat(sheng64H,64,530,330,0);
}

void exit_(int x)
{
   while(1)
   {
	  key=bioskey(0);
	  if(key==Y||key==n)
		break;
   }
   if(x==key)
	   exit(1);
}

void game_play(void)
{
	int q=0;
	setcolor(15);
	settextstyle(1,0,2);
	settextjustify(CENTER_TEXT, CENTER_TEXT);
	while(1)
	{ 
	  x_and_y();
	  key=bioskey(0);
	  switch(key)
	  {
	      case right:
		  if(chess.kao==1&&chess.x<19*K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.x+=K;
			  cursor_position(chess.x,chess.y,15);			  
		  }
		  break;
		case left:
		  if(chess.kao==1&&chess.x>K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.x-=K;
			  cursor_position(chess.x,chess.y,15);			  
		  }
		  break;
		case up:
		  if(chess.kao==1&&chess.y>K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.y-=K;
			  cursor_position(chess.x,chess.y,15);			  
		  }
		  break;
		case down:
		  if(chess.kao==1&&chess.y<19*K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.y+=K;
			  cursor_position(chess.x,chess.y,15);			  
		  }
		  break;
		case enter:
		  if(chess.kao==1&&chess.yes[chess.x/K-1][chess.y/K-1]==0)
		  {
		       int k;
			chess.yes[chess.x/K-1][chess.y/K-1]=1;
			win_();
			if(chess.ok==1)
			{
			  q=1;
			  game_over();
			  outtextxy(14*K,19*K+12,"CONTINUE ?(Y/N)");
			  exit_(n);
			}
			else
			{
			  cursor_position(chess.x,chess.y,4);
			  chess.kao=2;
			  draw_chessman(chess.x,chess.y,15);
			}
		  }
		  break;
		case A:
		  if(chess.kao==2&&chess.x>K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.x-=K;
			  cursor_position(chess.x,chess.y,4);			  
		  }
		  break;
		case D:
		  if(chess.kao==2&&chess.x<19*K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.x+=K;
			  cursor_position(chess.x,chess.y,4);			  
		  }
		  break;
		case W:
		  if(chess.kao==2&&chess.y>K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.y-=K;
			  cursor_position(chess.x,chess.y,4);			  
		  }
		  break;
		case S:
		  if(chess.kao==2&&chess.y<19*K)
		  {
			  cursor_position(chess.x,chess.y,0);
			  chess.y+=K;
			  cursor_position(chess.x,chess.y,4);			  
		  }
		  break;
		case space:
		  if(chess.kao==2&&chess.yes[chess.x/K-1][chess.y/K-1]==0)
		  {
		       int k;
			chess.yes[chess.x/K-1][chess.y/K-1]=2;
			win_();
			if(chess.ok==2)
			{
			  q=1;
			  game_over();
			  setcolor(15);
			  outtextxy(14*K,19*K+12,"CONTINUE ?(Y/N)");
			  exit_(n);
			}
		    else
		    {			  
			  cursor_position(chess.x,chess.y,15);
			  chess.kao=1;
			  draw_chessman(chess.x,chess.y,4);
			  setcolor(15);
		    }
		  }
		  break;
		 case esc:
		   outtextxy(14*K,19*K+12,"QUIT ?(Y/N)");
		   exit_(Y);
		   setcolor(0);
		   outtextxy(14*K,19*K+12,"QUIT ?(Y/N)");
		   setcolor(15);
		   break;
	  }
	  if(q==1)
		 break;
	}
}

void main(void)
{
    while(1)
	{
		init();
		player_clew();
		draw_chessboard();
		show_character();
		cursor_position(10*K,10*K,15);
		game_play();
	}
    closegraph();
}


 

五子棋的核心算法 一、相关的数据结构 关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。 CList StepList; 其中Step结构的表示为: struct Step { int m; //m,n表示两个坐标值 int n; char side; //side表示下子方 }; 以数组形式保存当前盘面的情况, 目的是为了在显示当前盘面情况时使用: char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; 其中FIVE_MAX_LINE表示盘面最大的行数。 同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量CountList来表示当前搜索中可以选择的所有的盘面情况对象的集合: CList CountList; 其中类CBoardSituiton为: class CBoardSituation { CList StepList; //每一步的列表 char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE]; struct Step machineStep; //机器所下的那一步 double value; //该种盘面状态所得到的分数 } 二、评分规则 对于下子的重要性评分,需要从六个位置来考虑当前棋局的情况,分别为:-,¦,/,\,//,\\ 实际上需要考虑在这六个位置上某一方所形成的子的布局的情况,对于在还没有子的地方落子以后的当前局面的评分,主要是为了说明在这个地方下子的重要性程度,设定了一个简单的规则来表示当前棋面对机器方的分数。 基本的规则如下: 判断是否能成5, 如果是机器方的话给予100000分,如果是人方的话给予-100000 分; 判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分; 判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分; 判断是否成死3活3,如果是机器方的话给予1000分,如果是人方的话给予-1000 分; 判断是否能成死4,如果是机器方的话给予500分,如果是人方的话给予-500分; 判断是否能成单活3,如果是机器方的话给予200分,如果是人方的话给予-200分; 判断是否已成双活2,如果是机器方的话给予100分,如果是人方的话给予-100分; 判断是否能成死3,如果是机器方的话给予50分,如果是人方的话给予-50分; 判断是否能成双活2,如果是机器方的话给予10分,如果是人方的话给予-10分; 判断是否能成活2,如果是机器方的话给予5分,如果是人方的话给予-5分; 判断是否能成死2,如果是机器方的话给予3分,如果是人方的话给予-3分。 实际上对当前的局面按照上面的规则的顺序进行比较,如果满足某一条规则的话,就给该局面打分并保存,然后退出规则的匹配。注意这里的规则是根据一般的下棋规律的一个总结,在实际运行的时候,用户可以添加规则和对评分机制加以修正。 三、胜负判断 实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。具体见下面的图示: 四、搜索算法实现描述 注意下面的核心的算法中的变量currentBoardSituation,表示当前机器最的盘面情况, CountList表示第一层子节点可以选择的较好的盘面的集合。核心的算法如下: void MainDealFunction() { value=-MAXINT; //对初始根节点的value赋值 CalSeveralGoodPlace(currentBoardSituation,CountList); //该函数是根据当前的盘面情况来比较得到比较好的可以考虑的几个盘面的情况,可以根据实际的得分情况选取分数比较高的几个盘面,也就是说在第一层节点选择的时候采用贪婪算法,直接找出相对分数比较高的几个形成第一层节点,目的是为了提高搜索速度和防止堆栈溢出。 pos=CountList.GetHeadPosition(); CBoardSituation* pBoard; for(i=0;ivalue=Search(pBoard,min,value,0); Value=Select(value,pBoard->value,max); //取value和pBoard->value中大的赋给根节点 } for(i=0;ivalue) //找出那一个得到最高分的盘面 { currentBoardSituation=pBoard; PlayerMode=min; //当前下子方改为人 Break; } } 其中对于Search函数的表示如下:实际上核心的算法是一个剪枝过程,其中在这个搜索过程中相关的四个参数为:(1)当前棋局情况;(2)当前的下子方,可以是机器(max)或者是人(min);(3)父节点的值oldValue;(4)当前的搜索深度depth。 double Search(CBoardSituation& board,int mode,double oldvalue,int depth) { CList m_DeepList; if(deptholdvalue))== TRUE) { if(mode==max) value=select(value,search(successor Board,min,value,depth+1),max); else value=select(value,search(successor Board,max,value,depth+1),min); } return value; } else { if ( goal(board)<>0) //这里goal(board)<>0表示已经可以分出胜负 return goal(board); else return evlation(board); } } 注意这里的goal(board)函数是用来判断当前盘面是否可以分出胜负,而evlation(board)是对当前的盘面从机器的角度进行打分。 下面是Select函数的介绍,这个函数的主要目的是根据 PlayerMode情况,即是机器还是用户来返回节点的应有的值。 double Select(double a,double b,int mode) { if(a>b && mode==max)¦¦ (a< b && mode==min) return a; else return b; }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值