ورود

View Full Version : تعیین موقعیت مکان نما



هم دانشگاهی
شنبه 15 آبان 1389, 19:04 عصر
سلام دوستان!

یه سوال داشتم ! چه طور میشه توی یه برنامه موقعیت مکان نما رو تعیین کرد؟

یعنی مثلا ما یه چیزهایی رو چاپ میکنیم بعد میخواهیم بدونیم که الان مکان نما کجاست؟

آیا برای این موضوع تابع خاصی هست؟

ممنون میشم کمکم کنین!

sh4mid
شنبه 15 آبان 1389, 19:22 عصر
سلام
اگر Compilre مورد استفادتون Turbo C یا Borland C زمان عهد تیر کمون شاه هست :لبخند: :لبخند: از توابع wherex و wherey استفاده کنید ، اگر کمی جدیدتر است


#include <windows.h>

void gotoxy( int column, int line )
{
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ),coord);
}

int wherex()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD result;
if (!GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ),&csbi))
return -1;
return result.X;
}

int wherey()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD result;
if (!GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ),&csbi))
return -1;
return result.Y;
}

هم دانشگاهی
شنبه 15 آبان 1389, 20:18 عصر
ولی این چرا هر بار یه چیز چاپ میکنه؟

من gotoxy رو میزنم مثلا 0و2 بعد وقتی wherexو wherey رو فراخوانی میکنم هر بار
برای x مقدار 60- و y مقدار 34 چاپ میشه!

از راهنماییتون خیلی ممنونم!

sh4mid
شنبه 15 آبان 1389, 21:39 عصر
سلام
تو Compiler های تیرکمون شاهی یا compiler های جدید؟ :لبخند:
تو کدومشون همچین مشکلی داری؟

هم دانشگاهی
شنبه 15 آبان 1389, 22:19 عصر
من با Dev-cpp کار میکنم!

sh4mid
شنبه 15 آبان 1389, 23:38 عصر
سلام
یک اشتباه کوچولو داشتم :خجالت:
تو توابع wherex و wherey قبل از return آخر اضافه کن
result=csbi.dwCursorPosition;

khafan_bat
دوشنبه 17 آبان 1389, 00:18 صبح
ممنون از راهنماییتون . من این برنامه رو الان تو ویژوال استودیو کامپایل و تست کردم .

تشکر








#include <iostream>
#include <conio.h>
#include <windows.h>

void gotoxy( int column, int line );
int wherex();
int wherey();

using namespace std;

void main()
{
gotoxy(10,10);
cout<<"salam"<<endl<<endl;
cout<<"\t"<<wherex()<<" "<<wherey();
getch();

}


void gotoxy( int column, int line )
{
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ),coord);
}


int wherex()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD result;
if (!GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ),&csbi))
return -1;
result=csbi.dwCursorPosition;
return result.X;
}

int wherey()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
COORD result;
if (!GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ),&csbi))
return -1;
result=csbi.dwCursorPosition;
return result.Y;
}