五子棋的棋盘初始化程序,高手能不能给找找错误,TC2.0下编译不能通过,谢谢!

hisenser 2004-12-09 10:05:32
/**********************************************************/

五子棋的棋盘初始化程序,高手能不能给找找错误,TC2.0下编译不能通过,谢谢!

/**********************************************************/
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>

/**********************************************************/
/* 定义符号常量 */

/*定义画棋盘所需的制表符*/
#define CROSSRU 0xbf /*右上角点*/
#define CROSSLU 0xda /*左上角点*/
#define CROSSLD 0xc0 /*左下角点*/
#define CROSSRD 0xd9 /*右下角点*/
#define CROSSL 0xc3 /*左边*/
#define CROSSR 0xb4 /*右边*/
#define CROSSU 0xc2 /*上边*/
#define CROSSD 0xc1 /*下边*/
#define CROSS 0xc5 /*十字交叉点*/

/*定义棋盘左上角点在屏幕上的位置*/
#define MAPXOFT 5
#define MAPYOFT 2

/*若想在游戏中途退出, 可按 Esc 键*/
#define ESCAPE 0x11b

/*定义棋盘上交叉点的状态, 即该点有无棋子 */
/*若有棋子, 还应能指出是哪个玩家的棋子 */
#define CHESSNULL 0 //没有棋子
#define CHESS1 'O'//一号玩家的棋子
#define CHESS2 'X'//二号玩家的棋子
/**********************************************************/

/**********************************************************/
/* 定义数据结构 */

/*棋盘交叉点坐标的数据结构*/
struct point
{
int x,y;
};
/**********************************************************/
/**********************************************************/
/* 定义全局变量 */
int gPlayOrder; /*指示当前行棋方 */
struct point gCursor; /*光标在棋盘上的位置 */
char gChessBoard[19][19];/*用于记录棋盘上各点的状态*/
/**********************************************************/


/*主函数*/
int main(int argc, char *argv[])
{
int i,j;
/*画棋盘*/
textmode(C40);
DrawMap();

return 0;
}
/*画棋盘(函数定义)*/
void DrawMap(void)
{
int i,j;

clrscr();

for(i=0;i<19;i++)
for(j=0;j<19;j++)
DrawCross(i,j);

}

/*画棋盘上的交叉点(函数定义)*/
void DrawCross(int x,int y)
{
gotoxy(x+MAPXOFT,y+MAPYOFT);
/*交叉点上是一号玩家的棋子*/
if(gChessBoard[x][y]==CHESS1)
{
textcolor(LIGHTBLUE);
putch(CHESS1);
return;
}
/*交叉点上是二号玩家的棋子*/
if(gChessBoard[x][y]==CHESS2)
{
textcolor(LIGHTBLUE);
putch(CHESS2);
return;
}

textcolor(GREEN);

/*左上角交叉点*/
if(x==0&&y==0)
{
putch(CROSSLU);
return;
}

/*左下角交叉点*/
if(x==0&&y==18)
{
putch(CROSSLD);
return;
}

/*右上角交叉点*/
if(x==18&&y==0)
{
putch(CROSSRU);
return;
}

/*右下角交叉点*/
if(x==18&&y==18)
{
putch(CROSSRD);
return;
}

/*左边界交叉点*/
if(x==0)
{
putch(CROSSL);
return;
}

/*右边界交叉点*/
if(x==18)
{
putch(CROSSR);
return;
}

/*上边界交叉点*/
if(y==0)
{
putch(CROSSU);
return;
}

/*下边界交叉点*/
if(y==18)
{
putch(CROSSD);
return;
}

/*棋盘中间的交叉点*/
putch(CROSS);
}
...全文
217 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveCSForEver 2004-12-10
  • 打赏
  • 举报
回复
/**********************************************************/

五子棋的棋盘初始化程序,高手能不能给找找错误,TC2.0下编译不能通过,谢谢!

/**********************************************************/

这个注释有问题

另外函数使用前先申明一下,如果你都写在MAIN()后面的话

其他没问题了
xtaaiyve 2004-12-10
  • 打赏
  • 举报
回复
toliu_jun_(军武) :你自己写有c编译器?真的假的?
牛b呀!
liluvu 2004-12-10
  • 打赏
  • 举报
回复
bios.h头文件在dev c++中没有,请问该怎么修该编译通过。
yangfasheng 2004-12-10
  • 打赏
  • 举报
回复

void DrawMap(void);//函数声明
void DrawCross(int x,int y);//函数声明

/*主函数*/
int main()
{
int i,j;
/*画棋盘*/
textmode(C40);
DrawMap();

return 0;
}
能写出这么好的程序真是不简单,
看得舒服.也乐意为你调试一下.
一般如果有自定义的功能函数,最好是在使用之前声明一下.
hj5182001 2004-12-10
  • 打赏
  • 举报
回复
慢慢看
先关注
hisenser 2004-12-09
  • 打赏
  • 举报
回复
恩,找到错误之处了,谢谢两位!(这个程序不是我写的,希望大家能互相交流)
还有几个问题想请教一下:
1.是怎么找到那个注释的错误的(授之以渔,谢谢)?
2.为什么“w”“a”“s”“d”的扫描码都用大写字母的?
3.关于函数的嵌套,一定要按照从子到主的顺序吗?
liu_jun_ 2004-12-09
  • 打赏
  • 举报
回复
你的程序习惯不错,有写注释的好习惯,不过还要细心些。
不写注释,也就只能写写小程序,根本无法和别人合作。
而且就算自己单独写个大点复杂点的程序,不写注释,调试遇到问题,
搞得你死。
liu_jun_ 2004-12-09
  • 打赏
  • 举报
回复

改好了。你的程序不错,可以编译器,的纠错到极限。
下次,我的C编译器写好了,希望你能多多提供测试材料。
/**********************************************************/
/**********************************************************/
#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>

/**********************************************************/
/* 定义符号常量 */

/*定义画棋盘所需的制表符*/
#define CROSSRU 0xbf /*右上角点*/
#define CROSSLU 0xda /*左上角点*/
#define CROSSLD 0xc0 /*左下角点*/
#define CROSSRD 0xd9 /*右下角点*/
#define CROSSL 0xc3 /*左边*/
#define CROSSR 0xb4 /*右边*/
#define CROSSU 0xc2 /*上边*/
#define CROSSD 0xc1 /*下边*/
#define CROSS 0xc5 /*十字交叉点*/

/*定义棋盘左上角点在屏幕上的位置*/
#define MAPXOFT 5
#define MAPYOFT 2

/*若想在游戏中途退出, 可按 Esc 键*/
#define ESCAPE 0x11b

/*定义棋盘上交叉点的状态, 即该点有无棋子 */
/*若有棋子, 还应能指出是哪个玩家的棋子 */
#define CHESSNULL 0 /*没有棋子*/
#define CHESS1 'O'/*一号玩家的棋子*/
#define CHESS2 'X'/*二号玩家的棋子*/
/**********************************************************/

/**********************************************************/
/* 定义数据结构 */

/*棋盘交叉点坐标的数据结构*/
struct point
{
int x,y;
};
/**********************************************************/
/**********************************************************/
/* 定义全局变量 */
int gPlayOrder; /*指示当前行棋方 */
struct point gCursor; /*光标在棋盘上的位置 */
char gChessBoard[19][19];/*用于记录棋盘上各点的状态*/
/**********************************************************/


/*画棋盘上的交叉点(函数定义)*/
void DrawCross(int x,int y)
{
gotoxy(x+MAPXOFT,y+MAPYOFT);
/*交叉点上是一号玩家的棋子*/
if(gChessBoard[x][y]==CHESS1)
{
textcolor(LIGHTBLUE);
putch(CHESS1);
return;
}
/*交叉点上是二号玩家的棋子*/
if(gChessBoard[x][y]==CHESS2)
{
textcolor(LIGHTBLUE);
putch(CHESS2);
return;
}

textcolor(GREEN);

/*左上角交叉点*/
if(x==0&&y==0)
{
putch(CROSSLU);
return;
}

/*左下角交叉点*/
if(x==0&&y==18)
{
putch(CROSSLD);
return;
}

/*右上角交叉点*/
if(x==18&&y==0)
{
putch(CROSSRU);
return;
}

/*右下角交叉点*/
if(x==18&&y==18)
{
putch(CROSSRD);
return;
}

/*左边界交叉点*/
if(x==0)
{
putch(CROSSL);
return;
}

/*右边界交叉点*/
if(x==18)
{
putch(CROSSR);
return;
}

/*上边界交叉点*/
if(y==0)
{
putch(CROSSU);
return;
}

/*下边界交叉点*/
if(y==18)
{
putch(CROSSD);
return;
}

/*棋盘中间的交叉点*/
putch(CROSS);
}


/*画棋盘(函数定义)*/
void DrawMap(void)
{
int i,j;

clrscr();

for(i=0;i<19;i++)
for(j=0;j<19;j++)
DrawCross(i,j);

}


/*主函数*/
int main(int argc, char *argv[])
{
int i,j;
/*画棋盘*/
textmode(C40);
DrawMap();
return 0;
}
xtaaiyve 2004-12-09
  • 打赏
  • 举报
回复
记得谢我呀!
哈哈!

其实你的水品很高,比我高多了,努力呀!
xtaaiyve 2004-12-09
  • 打赏
  • 举报
回复
我给你调通了,以后别写这么多错的注释,你的问题在此。注释很重要,但应该为正确的注视!


#include <stdio.h>
#include <bios.h>
#include <ctype.h>
#include <conio.h>
#include <dos.h>


#define CROSSRU 0xbf
#define CROSSLU 0xda
#define CROSSLD 0xc0
#define CROSSRD 0xd9
#define CROSSL 0xc3
#define CROSSR 0xb4
#define CROSSU 0xc2
#define CROSSD 0xc1
#define CROSS 0xc5

#define MAPXOFT 5
#define MAPYOFT 2


#define ESCAPE 0x11b


#define CHESSNULL 0
#define CHESS1 'O'
#define CHESS2 'X'

struct point
{
int x,y;
};

int gPlayOrder;
struct point gCursor;
char gChessBoard[19][19];




int main(int argc, char *argv[])
{
int i,j;

textmode(C40);
DrawMap();

return 0;
}

DrawMap(void)
{
int i,j;

clrscr();

for(i=0;i<19;i++)
for(j=0;j<19;j++)
DrawCross(i,j);

}


DrawCross(int x,int y)
{
gotoxy(x+MAPXOFT,y+MAPYOFT);

if(gChessBoard[x][y]==CHESS1)
{
textcolor(LIGHTBLUE);
putch(CHESS1);
return;
}

if(gChessBoard[x][y]==CHESS2)
{
textcolor(LIGHTBLUE);
putch(CHESS2);
return;
}

textcolor(GREEN);


if(x==0&&y==0)
{
putch(CROSSLU);
return;
}


if(x==0&&y==18)
{
putch(CROSSLD);
return;
}


if(x==18&&y==0)
{
putch(CROSSRU);
return;
}


if(x==18&&y==18)
{
putch(CROSSRD);
return;
}


if(x==0)
{
putch(CROSSL);
return;
}


if(x==18)
{
putch(CROSSR);
return;
}


if(y==0)
{
putch(CROSSU);
return;
}


if(y==18)
{
putch(CROSSD);
return;
}


putch(CROSS);
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧