當前位置:首頁 » 編程語言 » c語言coord

c語言coord

發布時間: 2025-10-03 22:07:37

1. c語言 CONSOLE_SCREEN_BUFFER_INFO 這個語句有什麼用

COORD和CONSOLE_SCREEN_BUFFER_ INFO是wincon.h定義的控制台結構體類型,其原型如下:

//控制台窗口信息結構體
typedefstruct_CONSOLE_SCREEN_BUFFER_INFO{
COORDdwSize;//緩沖區大小
COORDdwCursorPosition;//當前游標位置
WORDwAttributes;//字元屬性
SMALL_RECTsrWindow;//當前窗口顯示的大小和位置
COORDdwMaximumWindowSize;//最大的窗口緩沖區大小
}CONSOLE_SCREEN_BUFFER_INFO;


舉個簡單的例子:

#include<windows.h>
#include<stdio.h>
#include<conio.h>
intmain(void)
{
HANDLEhOut;
CONSOLE_SCREEN_BUFFER_INFObInfo;//存儲窗口信息
COORDpos={0,0};
//獲取標准輸出設備句柄
hOut=GetStdHandle(STD_OUTPUT_HANDLE);
//獲取窗口信息
GetConsoleScreenBufferInfo(hOut,&bInfo);
printf(" Thesoulselectsherownsociety ");
printf("Thenshutsthedoor ");
printf("Onherdevinemajority ");
printf("Obtrudenomore ");
_getch();
//向窗口中填充字元以獲得清屏的效果
FillConsoleOutputCharacter(hOut,'',bInfo.dwSize.X*bInfo.dwSize.Y,pos,NULL);
//關閉標准輸出設備句柄
CloseHandle(hOut);
return0;
}

2. c語言的迷宮問題

//尋路_帶權重_帶障礙_最短_文件地圖_不閃------wlfryq------//
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>

typedefstruct
{
intx;
inty;
}_PT;

_PTpt;
introw=0,col=0;

//設置CMD窗口游標位置
voidsetxy(intx,inty)
{
COORDcoord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
//獲取當前CMD當前游標所在位置
voidgetxy()
{
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
COORDcoordScreen={0,0};//游標位置
CONSOLE_SCREEN_BUFFER_INFOcsbi;
if(GetConsoleScreenBufferInfo(hConsole,&csbi))
{
pt.x=csbi.dwCursorPosition.X;
pt.y=csbi.dwCursorPosition.Y;
}
}

typedefstruct
{
intx;
inty;
inttype;
intv;
}PT;

PT**s=NULL,stack[50],start,end,c;
intpos=0;

voidprt()
{
inti,j;
system("cls");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
if(s[i][j].type==1)
{
printf("■");
}
elseif(i==end.x&&j==end.y)
{
printf("★");
}
elseif(i==c.x&&j==c.y)
{
printf("◎");
}
else
{
printf("");
}
}
printf(" ");
}
Sleep(500);
}

voidstack_in(PTa)
{
stack[pos++]=a;
}

PTstack_out()
{
inti;
PTt;
t=stack[0];
for(i=0;i<pos-1;i++)
{
stack[i]=stack[i+1];
}
pos--;
returnt;
}

voidfun()
{
PTa;
intx,y,v;
while(1)
{
if(pos==0)
{
break;
}
a=stack_out();
x=a.x;
y=a.y;
if(x==start.x&&y==start.y)
{
break;
}
v=s[x][y].v;
if(x-1>=0&&s[x-1][y].type==0&&(s[x-1][y].v==-1||s[x-1][y].v>v+1))
{
s[x-1][y].v=v+1;
stack_in(s[x-1][y]);
}
if(x+1<=row-1&&s[x+1][y].type==0&&(s[x+1][y].v==-1||s[x-1][y].v>v+1))
{
s[x+1][y].v=v+1;
stack_in(s[x+1][y]);
}
if(y-1>=0&&s[x][y-1].type==0&&(s[x][y-1].v==-1||s[x-1][y].v>v+1))
{
s[x][y-1].v=v+1;
stack_in(s[x][y-1]);
}
if(y+1<=col-1&&s[x][y+1].type==0&&(s[x][y+1].v==-1||s[x-1][y].v>v+1))
{
s[x][y+1].v=v+1;
stack_in(s[x][y+1]);
}
}
}

voidgo(intx,inty)
{
printf(" 按任意鍵開始 ");
getchar();
intv;
while(1)
{
if(x==end.x&&y==end.y)
{
setxy(0,y+2);
printf("end....");
return;
}
v=s[x][y].v;
if(v==0)
{
return;
}
if(x-1>=0&&s[x-1][y].v==v-1)
{
c=s[x-1][y];
setxy(y*2,x);
x=x-1;
printf("");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
elseif(x+1<=row-1&&s[x+1][y].v==v-1)
{
c=s[x+1][y];
setxy(y*2,x);
x++;
printf("");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
elseif(y-1>=0&&s[x][y-1].v==v-1)
{
c=s[x][y-1];
setxy(y*2,x);
y--;
printf("");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
elseif(y+1<=col-1&&s[x][y+1].v==v-1)
{
c=s[x][y+1];
setxy(y*2,x);
y++;
printf("");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
}
printf(" returngo ");
system("pause");
}

voidGetMapFromFile()
{
inti,j,x,y,len;
charch[50]={''};
FILE*fp=fopen("e:\map1.txt","r");
if(fp==NULL)
{
printf("openfilefailed. ");
return;
}
x=0;

while(!feof(fp))
{
fgets(ch,50,fp);
row++;
}
col=strlen(ch);
fseek(fp,0L,SEEK_SET);
while(!feof(fp))
{
fgets(ch,50,fp);
if(s==NULL)
{
len=strlen(ch);
for(i=len-1;i>0;i--)
{
if(ch[i]!='0'&&ch[i]!='1')
{
ch[i]='';
}
else
{
break;
}
}
len=strlen(ch);
s=(PT**)malloc(sizeof(PT*)*row);
for(j=0;j<len;j++)
{
*(s+j)=(PT*)malloc(sizeof(PT)*len);
}
}
y=0;
for(i=0;i<len;i++)
{
s[x][y].type=ch[i]-48;
s[x][y].x=x;
s[x][y].y=y;
s[x][y].v=-1;
y++;
}
x++;
}
start=s[row-2][1];
end=s[row-2][len-2];
fclose(fp);
}

intmain()
{
GetMapFromFile();
inti,j;
intx,y;
x=end.x;
y=end.y;
s[x][y].v=0;
stack_in(end);
fun();
c=start;
prt();
go(start.x,start.y);
return0;
}

3. C語言中 gotoxy有什麼作用

是游標定位函數,在windows.h中,不過還得寫一下函數,以下參考:

#include<windows.h>
intGotoxy(intx,inty)
intGotoxy(intx,inty)//定位游標位置
{
HANDLEhandle;//定義句柄變數handle
COORDcoord;//定義結構體coord(坐標系coord)
coord.X=x;//橫坐標x
coord.Y=y;//縱坐標y
handle=GetStdHandle(STD_OUTPUT_HANDLE);//獲取控制台輸出句柄(值為-11)
SetConsoleCursorPosition(handle,coord);//移動游標
}
intmain()
{
Gotoxy(x,y);//x為橫坐標,即為所在行數;y為縱坐標,即為所在列數
}
熱點內容
redhat怎麼打開ftp 發布:2025-10-04 00:05:24 瀏覽:267
shell調用存儲過程 發布:2025-10-04 00:04:47 瀏覽:957
樹莓派gcc編譯選項x86平台 發布:2025-10-03 23:57:57 瀏覽:240
oppo手機密碼忘了怎麼刷機 發布:2025-10-03 23:56:50 瀏覽:723
如何查看賬戶密碼 發布:2025-10-03 23:51:41 瀏覽:741
exe編譯後怎麼存儲 發布:2025-10-03 23:33:51 瀏覽:83
javaforremove 發布:2025-10-03 23:32:11 瀏覽:745
機頂盒的賬戶密碼是多少 發布:2025-10-03 23:15:47 瀏覽:117
手機wifi加密設置方法 發布:2025-10-03 23:06:43 瀏覽:699
雲伺服器遠程 發布:2025-10-03 23:01:21 瀏覽:711