PDA

View Full Version : حرکت کاراکتر با نگه داشتن یک دکمه



Random
شنبه 14 خرداد 1384, 16:03 عصر
یعنی مثلا یک کاراکتر '1' در صفحه نمایش داریم وقتی دکمه ی arrow left را نگه می داریم این کاراکتر به سمت چپ حرکت کند.چطور می شود این کار را کرد و چه توابعی برای این کار وجود دارند؟

karim_medusa
شنبه 14 خرداد 1384, 21:05 عصر
getch()
gotoxy()

به زبان سی !

omid_Ahmadi
شنبه 14 خرداد 1384, 21:26 عصر
میتونید از کد اسکی کاراکترهای Arrow Key استفاده کنید و اگر کلید زده شده یکی از کلیدهای Arrow Key بود بر حسب کد کلید موقعیت جدید کاراکتر رو تعیین کنید و کاراکتر رو در اونجا چاپ کنید و به جای موقعیت قبلی اون هم یک space چاپ کنید

Random
شنبه 14 خرداد 1384, 22:13 عصر
میتونید از کد اسکی کاراکترهای Arrow Key استفاده کنید و اگر کلید زده شده یکی از کلیدهای Arrow Key بود بر حسب کد کلید موقعیت جدید کاراکتر رو تعیین کنید و کاراکتر رو در اونجا چاپ کنید و به جای موقعیت قبلی اون هم یک space چاپ کنید
خوب اگه اینکار رو بکنیم باید دکمه ی left را بعد از هر بار فشار دادن رها کنیم و دوباره فشار دهیم ولی من می خوام که دکمه رو نگه دارم.

karim_medusa
شنبه 14 خرداد 1384, 23:18 عصر
خوب اگه اینکار رو بکنیم باید دکمه ی left را بعد از هر بار فشار دادن رها کنیم و دوباره فشار دهیم ولی من می خوام که دکمه رو نگه دارم.

علاوه بر اون دو تابع می تونی از این تابع هم کمک بگیری تا فشار دادن کلیدی از صفحه کلید رو تشخیص بدی:

kbhit()

Pars Giga
یک شنبه 15 خرداد 1384, 07:45 صبح
#include <stdio.h>
#include <stdlib.h>
#include >time.h>
main()
{
int num;
clock_t goal;
for(num=0;num<=79;num++)
{
goal=2+clock();
while(goal<clock(0)
;
printf("."(;
}
}
[code/]

Random
یک شنبه 15 خرداد 1384, 11:46 صبح
توی C تابع
gotoxy() در هدر
<conio.h> بود تو
VC++ در چه هدریه؟

Pars Giga
یک شنبه 15 خرداد 1384, 13:19 عصر
:موفق:

karim_medusa
یک شنبه 15 خرداد 1384, 13:51 عصر
در زبان ++C همچین توابعی نداریم : gotoxy و هم clrscr و باید شبیه سازی بشند یه نمونش رو من پیدا کردم برات میزارم :


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

void gotoxy(short x, short y) {
HANDLE hConsoleOutput;
COORD Cursor_Pos = {x, y};

hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput, Cursor_Pos);
}

void clrscr(void) {
CONSOLE_SCREEN_BUFFER_INFO csbi;
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {0, 0};
DWORD count;

GetConsoleScreenBufferInfo(hStdOut, &csbi);
FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
SetConsoleCursorPosition(hStdOut, coord);
}

Random
یک شنبه 15 خرداد 1384, 15:33 عصر
کد اسکی دکمه های left و right و اینا چیه؟

Random
پنج شنبه 19 خرداد 1384, 11:51 صبح
اگر برای نوشتن این برنامه از توابع getch و gotoxy استفاده بشه موقعی که یک دکمه زده می شه مثلا دکمه ی بالا کاراکتر فرضا یک خانه به سمت بالا می رود حالا اگر دکمه ی مثلا چپ بعد از آن زده شود کاراکتر یک بار بالا می رود و بعد از آن به چپ می آید.چرا؟
edit: حل شد.

Random
پنج شنبه 19 خرداد 1384, 14:16 عصر
از همه ی کسانی که در این موضوع جواب من را دادند تشکر می کنم مشکل من با این برنامه حل شد. :) :موفق: