鱼C论坛

 找回密码
 立即注册
查看: 2031|回复: 7

为什么函数调用不了

[复制链接]
发表于 2014-5-30 23:54:44 | 显示全部楼层 |阅读模式
5鱼币
#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[4][4]; //数据
COORD xy; //位置POINT
}chess_data; //定义结构变量
//20种不成形态的棋子
chess_data DownChessData[5][4]={0};
void InitChessData(void)
{
//□□
//□□ 类型状态
DownChessData[0][0].xy.X=CHESS_X+4; //行坐标
DownChessData[0][0].xy.Y=CHESS_Y+0;  //列坐标
DownChessData[0][0].data[0][0]=1;
DownChessData[0][0].data[1][0]=1;
DownChessData[0][0].data[0][1]=1;
DownChessData[0][0].data[1][1]=1;
   //状态-3 =状态
   DownChessData[0][1]=DownChessData[0][2]=DownChessData[0][3]=DownChessData[0][0];
}
void ShowChess(chess_data chess)
{
int x,y;
for(x = 0; x <= 3; x++)
{
  for(y = 0; y <= 3; y++)
   if(chess.data[x][y])
   {
    gotoxy(chess.xy.X+x*2,chess.xy.Y+y);
    printf("□");
   }
}
}
void playeane(void)
{
InitChessData();
ShowChess(DownChessData[0][0]);
}
调用不了函数,望大神指导(要是只用main()页分开实现的话不出错,为什么调用函数就出错)

最佳答案

查看完整内容

你把你写的函数的位置都调整到 main()函数的前面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-30 23:54:45 | 显示全部楼层
你把你写的函数的位置都调整到 main()函数的前面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-31 00:15:57 From FishC Mobile | 显示全部楼层
会不会有些库没包含进来呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-31 07:49:09 | 显示全部楼层
怀疑库文件没包含
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-31 11:19:16 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <share.h>
#include <Windows.h>

加上去也是一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-4 00:09:03 | 显示全部楼层

把函数都写到main()前面是不会错,我现在就是想知道把函数写在main()后面,可不可以,怎么调用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-4 00:16:41 | 显示全部楼层
1980469235 发表于 2014-6-4 00:09
把函数都写到main()前面是不会错,我现在就是想知道把函数写在main()后面,可不可以,怎么调用

可以,但是在main前必须就声明函数了才可以把函数的实现写后面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-6-4 13:09:21 | 显示全部楼层
ravenhu13 发表于 2014-6-4 00:16
可以,但是在main前必须就声明函数了才可以把函数的实现写后面

试了好多遍了,还是没实行,你能让它运行,分就给你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-22 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表