| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1880 人关注过本帖
标题:[求助]VC6.0调试五子棋游戏时出现的错误!请帮忙看看!
只看楼主 加入收藏
yuyongquan
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-2-18
收藏
 问题点数:0 回复次数:7 
[求助]VC6.0调试五子棋游戏时出现的错误!请帮忙看看!

在调试时出现这样的错误!请帮忙看看是什么原因? --------------------Configuration: 五子棋游戏 - Win32 Debug-------------------- Compiling... 五子棋游戏.c d:\documents and settings\yuyongquan\my documents\五子棋游戏.c(11) : fatal error C1083: Cannot open include file: 'bios.h': No such file or directory 执行 cl.exe 时出错.

五子棋游戏.obj - 1 error(s), 0 warning(s)

搜索更多相关主题的帖子: 五子棋 游戏 调试 documents 
2005-02-18 22:12
husan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-2-17
收藏
得分:0 
给源码看看,不是提示无法打开'bios.h'头文件吗!是名字错了还是你自己写的?我也是菜鸟,排除法找找看……
2005-02-18 23:38
yuyongquan
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-2-18
收藏
得分:0 

程序源代码是我下的~~~别人经过调试~~应该不会有问题~~你试试~~ /* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */

#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

/*定义1号玩家的操作键键码*/ #define PLAY1UP 0x1157/*上移--'W'*/ #define PLAY1DOWN 0x1f53/*下移--'S'*/ #define PLAY1LEFT 0x1e41/*左移--'A'*/ #define PLAY1RIGHT 0x2044/*右移--'D'*/ #define PLAY1DO 0x3920/*落子--空格键*/

/*定义2号玩家的操作键键码*/ #define PLAY2UP 0x4800/*上移--方向键up*/ #define PLAY2DOWN 0x5000/*下移--方向键down*/ #define PLAY2LEFT 0x4b00/*左移--方向键left*/ #define PLAY2RIGHT 0x4d00/*右移--方向键right*/ #define PLAY2DO 0x1c0d/*落子--回车键Enter*/

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

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

/*定义按键类别*/ #define KEYEXIT 0/*退出键*/ #define KEYFALLCHESS 1/*落子键*/ #define KEYMOVECURSOR 2/*光标移动键*/ #define KEYINVALID 3/*无效键*/

/*定义符号常量: 真, 假 --- 真为1, 假为0 */ #define TRUE 1 #define FALSE 0

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

/*棋盘交叉点坐标的数据结构*/ struct point { int x,y; };

/**********************************************************/ /*自定义函数原型说明 */ void Init(void); int GetKey(void); int CheckKey(int press); int ChangeOrder(void); int ChessGo(int Order,struct point Cursor); void DoError(void); void DoOK(void); void DoWin(int Order); void MoveCursor(int Order,int press); void DrawCross(int x,int y); void DrawMap(void); int JudgeWin(int Order,struct point Cursor); int JudgeWinLine(int Order,struct point Cursor,int direction); void ShowOrderMsg(int Order); void EndGame(void); /**********************************************************/

/**********************************************************/ /* 定义全局变量 */ int gPlayOrder; /*指示当前行棋方 */ struct point gCursor; /*光标在棋盘上的位置 */ char gChessBoard[19][19];/*用于记录棋盘上各点的状态*/ /**********************************************************/

/**********************************************************/ /*主函数*/ void main() { int press; int bOutWhile=FALSE;/*退出循环标志*/

Init();/*初始化图象,数据*/

while(1) { press=GetKey();/*获取用户的按键值*/ switch(CheckKey(press))/*判断按键类别*/ { /*是退出键*/ case KEYEXIT: clrscr();/*清屏*/ bOutWhile = TRUE; break;

/*是落子键*/ case KEYFALLCHESS: if(ChessGo(gPlayOrder,gCursor)==FALSE)/*走棋*/ DoError();/*落子错误*/ else { DoOK();/*落子正确*/

/*如果当前行棋方赢棋*/ if(JudgeWin(gPlayOrder,gCursor)==TRUE) { DoWin(gPlayOrder); bOutWhile = TRUE;/*退出循环标志置为真*/ } /*否则*/ else /*交换行棋方*/ ChangeOrder(); } break;

/*是光标移动键*/ case KEYMOVECURSOR: MoveCursor(gPlayOrder,press); break;

/*是无效键*/ case KEYINVALID: break; }

if(bOutWhile==TRUE) break; }

/*游戏结束*/ EndGame(); } /**********************************************************/

/*界面初始化,数据初始化*/ void Init(void) { int i,j; char *Msg[]= { "Player1 key:", " UP----w", " DOWN--s", " LEFT--a", " RIGHT-d", " DO----space", "", "Player2 key:", " UP----up", " DOWN--down", " LEFT--left", " RIGHT-right", " DO----ENTER", "", "exit game:", " ESC", NULL, };

/*先手方为1号玩家*/ gPlayOrder = CHESS1; /*棋盘数据清零, 即棋盘上各点开始的时候都没有棋子*/ for(i=0;i<19;i++) for(j=0;j<19;j++) gChessBoard[i][j]=CHESSNULL; /*光标初始位置*/ gCursor.x=gCursor.y=0;

/*画棋盘*/ textmode(C40); DrawMap();

/*显示操作键说明*/ i=0; textcolor(BROWN); while(Msg[i]!=NULL) { gotoxy(25,3+i); cputs(Msg[i]); i++; }

/*显示当前行棋方*/ ShowOrderMsg(gPlayOrder); /*光标移至棋盘的左上角点处*/ gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT); }

/*画棋盘*/ 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); }

/*交换行棋方*/ int ChangeOrder(void) { if(gPlayOrder==CHESS1) gPlayOrder=CHESS2; else gPlayOrder=CHESS1;

return(gPlayOrder); }

/*获取按键值*/ int GetKey(void) { char lowbyte; int press;

while (bioskey(1) == 0) ;/*如果用户没有按键,空循环*/

press=bioskey(0); lowbyte=press&0xff; press=press&0xff00 + toupper(lowbyte); return(press); }

/*落子错误处理*/ void DoError(void) { sound(1200); delay(50); nosound(); }

/*赢棋处理*/ void DoWin(int Order) { sound(1500);delay(100); sound(0); delay(50); sound(800); delay(100); sound(0); delay(50); sound(1500);delay(100); sound(0); delay(50); sound(800); delay(100); sound(0); delay(50); nosound();

textcolor(RED+BLINK); gotoxy(25,20); if(Order==CHESS1) cputs("PLAYER1 WIN!"); else cputs("PLAYER2 WIN!"); gotoxy(25,21); cputs(" /">\\<^+^>/"); getch(); }

/*走棋*/ int ChessGo(int Order,struct point Cursor) { /*判断交叉点上有无棋子*/ if(gChessBoard[Cursor.x][Cursor.y]==CHESSNULL) { /*若没有棋子, 则可以落子*/ gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT); textcolor(LIGHTBLUE); putch(Order); gotoxy(Cursor.x+MAPXOFT,Cursor.y+MAPYOFT); gChessBoard[Cursor.x][Cursor.y]=Order; return TRUE; } else return FALSE; }

/*判断当前行棋方落子后是否赢棋*/ int JudgeWin(int Order,struct point Cursor) { int i; for(i=0;i<4;i++) /*判断在指定方向上是否有连续5个行棋方的棋子*/ if(JudgeWinLine(Order,Cursor,i)) return TRUE; return FALSE; }

/*判断在指定方向上是否有连续5个行棋方的棋子*/ int JudgeWinLine(int Order,struct point Cursor,int direction) { int i; struct point pos,dpos; const int testnum = 5; int count;

switch(direction) { case 0:/*在水平方向*/ pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y; dpos.x=1; dpos.y=0; break; case 1:/*在垂直方向*/ pos.x=Cursor.x; pos.y=Cursor.y-(testnum-1); dpos.x=0; dpos.y=1; break; case 2:/*在左下至右上的斜方向*/ pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y+(testnum-1); dpos.x=1; dpos.y=-1; break; case 3:/*在左上至右下的斜方向*/ pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y-(testnum-1); dpos.x=1; dpos.y=1; break; }

count=0; for(i=0;i<testnum*2+1;i++) { if(pos.x>=0&&pos.x<=18&&pos.y>=0&&pos.y<=18) { if(gChessBoard[pos.x][pos.y]==Order) { count++; if(count>=testnum) return TRUE; } else count=0; } pos.x+=dpos.x; pos.y+=dpos.y; }

return FALSE; }

/*移动光标*/ void MoveCursor(int Order,int press) { switch(press) { case PLAY1UP: if(Order==CHESS1&&gCursor.y>0) gCursor.y--; break; case PLAY1DOWN: if(Order==CHESS1&&gCursor.y<18) gCursor.y++; break; case PLAY1LEFT: if(Order==CHESS1&&gCursor.x>0) gCursor.x--; break; case PLAY1RIGHT: if(Order==CHESS1&&gCursor.x<18) gCursor.x++; break;

case PLAY2UP: if(Order==CHESS2&&gCursor.y>0) gCursor.y--; break; case PLAY2DOWN: if(Order==CHESS2&&gCursor.y<18) gCursor.y++; break; case PLAY2LEFT: if(Order==CHESS2&&gCursor.x>0) gCursor.x--; break; case PLAY2RIGHT: if(Order==CHESS2&&gCursor.x<18) gCursor.x++; break; }

gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT); }

/*游戏结束处理*/ void EndGame(void) { textmode(C80); }

/*显示当前行棋方*/ void ShowOrderMsg(int Order) { gotoxy(6,MAPYOFT+20); textcolor(LIGHTRED); if(Order==CHESS1) cputs("Player1 go!"); else cputs("Player2 go!");

gotoxy(gCursor.x+MAPXOFT,gCursor.y+MAPYOFT); }

/*落子正确处理*/ void DoOK(void) { sound(500); delay(70); sound(600); delay(50); sound(1000); delay(100); nosound(); }

/*检查用户的按键类别*/ int CheckKey(int press) { if(press==ESCAPE) return KEYEXIT;/*是退出键*/

else if ( ( press==PLAY1DO && gPlayOrder==CHESS1) || ( press==PLAY2DO && gPlayOrder==CHESS2) ) return KEYFALLCHESS;/*是落子键*/

else if ( press==PLAY1UP || press==PLAY1DOWN || press==PLAY1LEFT || press==PLAY1RIGHT || press==PLAY2UP || press==PLAY2DOWN || press==PLAY2LEFT || press==PLAY2RIGHT ) return KEYMOVECURSOR;/*是光标移动键*/

else return KEYINVALID;/*按键无效*/ }

2005-02-19 09:24
zff_ff
Rank: 1
等 级:新手上路
帖 子:147
专家分:0
注 册:2004-5-12
收藏
得分:0 
这个程序要用Tc来编译,vc不支持&lt;doc.h&gt;

偶是一只想要飞却忘了咋飞的菜鸟
2005-03-02 19:39
chentong
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-3-10
收藏
得分:0 
新建类的头文件  一定要在 .Cpp文件中声明
2005-03-12 15:35
时空之蕊
Rank: 2
等 级:新手上路
威 望:3
帖 子:691
专家分:0
注 册:2004-10-31
收藏
得分:0 
恩,这个市c程序不是vc要用tc

我渴望掌控时空的核心——用最先进的技术,打造无比美丽的世界!
2005-03-15 11:29
黑客
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2005-3-18
收藏
得分:0 
什么啊??
VC++6,0也支持C语言啊
有什么不可的!!!!!!!!!!!!!

教父,已成为过去;谁来续写这段传说?-----我!
2005-03-18 23:28
哈马拟
Rank: 1
等 级:新手上路
帖 子:270
专家分:0
注 册:2004-7-15
收藏
得分:0 
在我的系统里,VC6.0目录下,确实找不到bios.h这个头文件

代码中涉及的其他头文件都有

2005-03-23 15:48
快速回复:[求助]VC6.0调试五子棋游戏时出现的错误!请帮忙看看!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019681 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved