C语言如何将坐标中的(x,y)提取出来?

用C语言编写五子棋程序,下棋部分的思路是首先鼠标左键点击棋盘,然后判断棋子落点,最后在屏幕上显示。卡在了提取坐标的地方。因为鼠标点击之后经过判断之后显示在屏幕上的点的坐标是经过修改的,那么怎么把这个坐标提取呢?表述有点混乱因为我不太能想明白请见谅。部分程序:void playgame(){ MOUSEMSG m; //定义鼠标类型,结构体,取名为m int a = 0, b = 0; int x; int y; while (1) { m = GetMouseMsg(); //用m获取一个鼠标消息,如果没有,就等待 if (m.uMsg == WM_LBUTTONDOWN) //判断当前消息是否为鼠标左键按下 { //绝对值 abs() for (int i = 1; i < 20; i++) { for (int j = 1; i < 20; i++) { if (abs(m.x - 25 * i) < 12 && abs(m.y - 25 * j) < 25) { a = i, b = j; m.x = i,m. y = j *25; } } } if (flag % 2 == 0) { setfillcolor(BLACK); solidcircle(m.x, m.y, 10); //画圆,圆心坐标,半径,m为鼠标,m.x表示鼠标点横坐标 } if (flag % 2 == 1) { setfillcolor(WHITE); solidcircle(m.x, m.y, 10); //画圆,圆心坐标,半径,m为鼠标,m.x表示鼠标点横坐标 } flag++; } }}
很多函数用的easy x
表述有点混乱,经过鼠标点击之后程序里面就有一个m.x和m.y,此时x,y代表的是当前鼠标的x,y坐标(不知道多少),经过abs之后(x,y)的值变成了坐标上的点并且是整数了,但是由于程序里面是用的m.x和m.y,而要想输出点的话要将它们取出来,但是如果直接用x,y表示坐标的话会报错说没有定义就直接使用。
简洁一些说就是函数里面的m.x和m.y已经代表了坐标,但是之后如果直接定义int x,y程序会报错说使用了未赋值的函数,如果用m.x和m.y表示的话达不到提高精度的目的,所以想明白在这种情况下如何把x和y的坐标值提取出来。
源程序:https://pan.baidu.com/s/1jvD8X_njJeqqezS3Sz0gtg
思路都在上面了

用ReadConsoleOutputCharacterA函数,在windows.h中。

给你一个封好的函数吧,其作用是提取出窗口中第x行y列的位置的字符是什么。(如果没有东西会返回空格符号)。

#include<windows.h>
//下标从1开始,x行y列。
char GetStr(int x, int y)
{
COORD pos;
//ReadConsoleOutputCharacterA里的x和y指的是x列y行,且从0开始标号 
pos.X = y-1;pos.Y = x-1;
LPSTR str;
DWORD read;
ReadConsoleOutputCharacterA(GetStdHandle(STD_OUTPUT_HANDLE), str, 1, pos, &read);
return str[0];
}

使用举例:

int main()
{
printf("kjndfgdfg\nkhgfhfhfgd\njifdgdfgg\n");
printf("1,2:%c\n",GetStr(1,2));
return 0;
}

输出为

kjndfgdfg
khgfhfhfgd
jifdgdfgg
1,2:j

追问

虽然不是我的问题所在但是还是谢谢您,我的问题是经过鼠标点击之后程序里面就有一个m.x和m.y,此时x,y代表的是当前鼠标的x,y坐标(不知道多少),经过abs之后(x,y)的值变成了坐标上的点并且是整数了,但是由于程序里面是用的m.x和m.y,而要想输出点的话要将它们取出来,但是如果直接用x,y表示坐标的话会报错说没有定义就直接使用,所以就一直没有试出来T﹏T

追答

还是不是很懂您的问题 能再说一下吗?

追问

就是首先鼠标点击得到一个坐标m.x和m.y,然后需要把这个坐标显示在事先生成的图纸上,但是假如直接用(x,y)来表示会报错说x和y未定义值,上面我已经用网盘把源程序发出来了,问题就在下棋部分的x,y的定义那里开始

温馨提示:内容为网友见解,仅供参考
无其他回答

...并存储在变量 x 和 y 中。然后确定坐标(坐标)(x,y)是?
用printf函数打印提示信息,让用户输入两个整数 用scanf函数读取用户输入的两个整数,并赋值给x和y 用if-else语句判断x和y的符号,确定坐标(x,y)所在的象限或轴线 用printf函数打印结果 以下是用C语言编写的示例代码:include <stdio.h> \/\/引入头文件int main(){ int x, y; \/\/定义变量 ...

C语言中如何输入坐标
输入坐标一般有两种方法,第一种使用gotoxy和gets,先跳转到指定坐标输出信息,再在指定坐标处输出User Name,跳转到指定坐标输入信息,最后输入用户名,name为所定义的字符数组。第二种方法将光标移动到指定位置说明:gotoxy(x,y)将光标移动到指定行y和列x。设置光标到文本屏幕的指定位置,其中参数x,y...

C语言控制台在指定位置输出字符
c语言控制台在指定位置输出字符代码演示如下:include <windows.h> void PrintChar(char *ch,UINT count,UINT x,UINT y) \/\/在坐标(x,y)处输出字符串ch,ch里有count个字符 { HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;ULONG unuse;pos.X=x;pos.Y=y;CONSOLE_SCREEN_BUFFER_INFO ...

c语言x y是什么意思
在C语言中,x和y通常是用来表示变量的标识符。它们可以代表不同的变量类型,如整型、浮点型、字符型等。当我们声明一个变量时,我们需要给它一个唯一的标识符,这样就可以在程序中使用这个变量了。x和y只是一个约定俗成的命名规则,可以根据需要改变。x和y可以用来表示不同的数据类型,例如,在图形化...

1,输入两个数代表一个点的坐标(x,y),然后判断点(x,y)属于哪一个象限.用...
h>int main() {int x,y;printf("输入2个整数(空格隔开,q退出):\\n");while(scanf("%d%d",&x,&y) == 2) {if(x == 0) {if(y == 0) printf("(0,0)在坐标原点\\n");else if(y > 0) printf("(0,%d)在Y上半轴上\\n",y);else printf("(0,%d)在Y下半轴上\\n",y)...

c语言编程,输入坐标,显示所在坐标
int p_x = 0 , p_y = 0 ;printf("please type in the location , like 3,4: ");scanf("%d,%d" , &p_x , &p_y);printf("the location is : (%d , %d)",p_x , p_y);

圆周等份分孔如何计算X,Y坐标值 C语言程序
我假设变量为(x、y)分别为x轴、y轴坐标变量。则将坐标赋值,为x=getx();y=gety();(画图模式下)在这里,我一般是直接对寄存器进行中断取得 鼠标 的值。在对他进行操作。c语言只有以上2种模式,通过你的提问,我觉得你问的是文本模式下的。如果你觉得我回答不够详细 ...

C语言求出平面坐标系中任意两点间的距离.点的信息(x坐标值,y坐标值...
int main(){ double dis;int x1,y1,x2,y2;printf("请输入第一个点的坐标:");scanf("%d,%d",&x1,&y1);printf("请输入第二个点的坐标:");scanf("%d,%d",&x2,&y2);dis=sqrt((x1-x2)*(x1-x2)*1.0+(y1-y2)*(y1-y2)*1.0);printf("这两点间的距离为%lf\\n",dis)...

...在平面坐标系中,有一个正方形,四个角的坐标(x,y)分别是(x,y)分别...
main(){ float x,y;int n,i;printf("input number of points N:\\n");scanf("%d",&n); \/\/ 输入点数 for (i=0;i<n;i++){ printf("\\ninput x y of point %d\\n",i+1);scanf("%f %f",&x,&y); \/\/输入坐标 if (x > -1.0 && x < 1.0 && y > -1.0 && ...

C语言中如何将一个数字的各个位上的数分别提取?
第二:转化为字符串,这里要用到一个函数itoa。同样是计算123各个位数。代码:int data = 123;char array[100];itoa(data, array, 10); \/\/转化为字符串printf("%c\\n", array[0]);printf("%c\\n", array[1]);printf("%c\\n", array[2]);结果和上面一样!两种方式都能计算出,但是...

相似回答