为什么函数调用不了
#include <stdio.h>#include <Windows.h>
//清屏
void cls_screen(char a) //定义函数这里是清除屏幕上面的字
{
COORD xy={0,0};//显示目前坐标 COORD
long byw;
//STD_INPUT_HANDLE 输入句柄 STD_OUTPUT_HANDLE 输出句柄STD_ERROR_HANDLE 错误句柄
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); //GetStdHandle 获取输入输出句柄
FillConsoleOutputCharacter(hout,a,2000,xy,&byw);//FillConsoleOutputCharacter填充字符
return;
}
// 列 行
void gotoxy(int x,int y) //定义函数 移动光标位置
{
COORD xy={0,0};//显示目前坐标 COORD
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); //输出 HANDLE 手把句柄
xy.X=x;
xy.Y=y;
SetConsoleCursorPosition(hout,xy);//SetConsoleCursorPosition移动光标位置(设置 坐标)
return;
}
//绘制方框
#define X 22
#define Y 6
void drawM(void) //定义函数
{
int i;
//到达x,y
gotoxy(X,Y);
//上边--------------------
printf("┏");
for (i=0;i<=12;i++)
{
printf("━");
}
printf("┓");
//左边
for (i=0;i<15;i++)
{
gotoxy(X,Y+1+i);//Y+行+i(循环)
printf("┃");
}
//右边
for (i=0;i<15;i++)
{
gotoxy(X+28,Y+1+i);//X(列)+28,Y(行)+1(循环一次加一行)+i(循环)
printf("┃");
}
//下边
gotoxy(X,Y+16);
//上边--------------------
printf("┗");
for (i=0;i<=12;i++)
{
printf("━");
}
printf("┛");
return;
}
void drawmenu(void)
{
gotoxy(X+3,Y+3);
printf("1->菜单选择一");
gotoxy(X+3,Y+3+2);
printf(" 菜单选择二");
gotoxy(X+3,Y+3+2+2);
printf(" 退出");
gotoxy(0,0);
}
int selmenu_Num = 0;
int selMenu(void)
{
int ch = 0;
while(1)
{
ch = getch();
//gotoxy(0,0);
if(ch == 13)
{
return selmenu_Num;
}
switch(ch)
{
case 72: //上光标
selmenu_Num--;
if(selmenu_Num < 0)
{
selmenu_Num = 2;
}
break;
case 80: //下光标
selmenu_Num++;
if(selmenu_Num > 2)
{
selmenu_Num = 0;
}
break;
}
gotoxy(0,0);
switch(selmenu_Num)
{
case 0:
gotoxy(X+3,Y+3);
printf("1->");
gotoxy(X+3,Y+3+2);
printf(" ");
gotoxy(X+3,Y+3+2+2);
printf(" ");
gotoxy(0,0);
break;
case 1:
gotoxy(X+3,Y+3);
printf(" ");
gotoxy(X+3,Y+3+2);
printf("2->");
gotoxy(X+3,Y+3+2+2);
printf(" ");
gotoxy(0,0);
break;
case 2:
gotoxy(X+3,Y+3);
printf(" ");
gotoxy(X+3,Y+3+2);
printf(" ");
gotoxy(X+3,Y+3+2+2);
printf("3->");
gotoxy(0,0);
break;
}
}
return selmenu_Num;
}
int main(void)
{
system("title qq");
system("color 0a");
//system("dir");
cls_screen(' ');
//cls_screen(' ');
//gotoxy(3,2);//调用函数移动光标位置
//绘制方框
//drawM(); //调用函数绘制方框
//drawmenu(); //上下选择健
//selMenu();//动态菜单
//SetWindowPos(GetConsoleWindow(),HWND_NOTOPMOST,133,133,800,600,SWP_SHOWWINDOW);错误框的高度
checkerboard(); //棋盘
playeane();
getchar();
return 0;
}
-------------函数调用
#define CHESS_X 28//列
#define CHESS_Y 6 //行
#define CHESS_WIDTH 12*2//宽
#define CHESS_HIGHT 18//高
extern void gotoxy(int,int);
void checkerboard(void)//checkerboard 画棋盘
{
int i;
gotoxy(CHESS_X,CHESS_Y); //给函数赋实值
for(i = 0; i < CHESS_HIGHT; i++) //左
{
gotoxy(CHESS_X,CHESS_Y+i);//左循环行
printf("┃");
}
gotoxy(0,0);
for(i = 0; i < CHESS_HIGHT; i++)//右
{// 列 +宽(宏12*2)
gotoxy(CHESS_X+CHESS_WIDTH,CHESS_Y+i);
printf("┃");
} // 列 行 高
gotoxy(CHESS_X,CHESS_Y+CHESS_HIGHT);
printf("┗");//底部转角
for(i = 1; i < CHESS_WIDTH / 2; i++)
{
printf("━"); //底部链接线
}
gotoxy(CHESS_X+CHESS_WIDTH,CHESS_Y+CHESS_HIGHT);
printf("┛");//底部转角
return;
}
typedef struct _chess_data//一个结构
{
char chessflag; //4种形态保留
char data; //数据
COORD xy; //位置POINT
}chess_data; //定义结构变量
//20种不成形态的棋子
chess_data DownChessData={0};
void InitChessData(void)
{
//□□
//□□ 类型状态
DownChessData.xy.X=CHESS_X+4; //行坐标
DownChessData.xy.Y=CHESS_Y+0;//列坐标
DownChessData.data=1;
DownChessData.data=1;
DownChessData.data=1;
DownChessData.data=1;
//状态-3 =状态
DownChessData=DownChessData=DownChessData=DownChessData;
}
void ShowChess(chess_data chess)
{
int x,y;
for(x = 0; x <= 3; x++)
{
for(y = 0; y <= 3; y++)
if(chess.data)
{
gotoxy(chess.xy.X+x*2,chess.xy.Y+y);
printf("□");
}
}
}
void playeane(void)
{
InitChessData();
ShowChess(DownChessData);
}
调用不了函数,望大神指导(要是只用main()页分开实现的话不出错,为什么调用函数就出错)
你把你写的函数的位置都调整到 main()函数的前面。 会不会有些库没包含进来呀 怀疑库文件没包含 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <share.h>
#include <Windows.h>
加上去也是一样 txt888 发表于 2014-6-3 11:13 static/image/common/back.gif
你把你写的函数的位置都调整到 main()函数的前面。
把函数都写到main()前面是不会错,我现在就是想知道把函数写在main()后面,可不可以,怎么调用 1980469235 发表于 2014-6-4 00:09 static/image/common/back.gif
把函数都写到main()前面是不会错,我现在就是想知道把函数写在main()后面,可不可以,怎么调用
可以,但是在main前必须就声明函数了才可以把函数的实现写后面 ravenhu13 发表于 2014-6-4 00:16 static/image/common/back.gif
可以,但是在main前必须就声明函数了才可以把函数的实现写后面
试了好多遍了,还是没实行,你能让它运行,分就给你
页:
[1]