POMOC - Funkce GotoXY,kbhit() – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

POMOC - Funkce GotoXY,kbhit() – C / C++ – Fórum – Programujte.comPOMOC - Funkce GotoXY,kbhit() – C / C++ – Fórum – Programujte.com

 

Hanmir10
Newbie
12. 5. 2013   #1
-
0
-

Zdravím potřebuji poradit chcu udělat program ,který po spuštění bude mít uprostřed hvězdičku ,když smáčknu klávesu a = posune se okamzite doleva , když zmáčknu s = posune se automaticky dolů , když w = nahoru a d = doprava .

Bohužel nefunguje mi to tak jak bych chtěl vždycky když zmáčknu a musím to potvrdit klávesou enter,ale já chcu aby se hvězdička posunula okamžitě po stisknuti klávesy a.

Moc prosím o vysvětlení jak to udělat popřípadě návrhu díky moc. Přikládám zdrojový kód :) http://pastebin.com/Cj3DKV5V ;

Nahlásit jako SPAM
IP: 78.45.234.–
Hanmir10
Newbie
12. 5. 2013   #2
-
0
-

#1 Hanmir1
 

#include <iostream>
#include <stdio.h>
#include <cstdio>
#include <Windows.h>

using namespace std;

void gotoXY(int x, int y);

int main(void)
{
	int x=50,y=15;
	char M;

	do{
		system("cls");
		gotoXY(x,y);
		cout << "*" ;

		M = getchar();

		if (M == 'a') x-- ;
		if (M == 's') y++ ;
		if (M == 'd') x++ ;
		if (M == 'w') y-- ;

	}while(1);

	return 0;
}

void gotoXY(int x, int y)
{
	COORD coord;
	coord.X = x;
	coord.Y = y;
	SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ),coord);
};
Nahlásit jako SPAM
IP: 78.45.234.–
Sefiros0
Návštěvník
17. 5. 2013   #3
-
0
-

Hoj,

nemůžeš odchytávat události z klávesnice pomocí funkce getchar(). Podle platformy na kterou děláš program musíš zvolit vhodnou knihovnu jež umožňuje odchytávat události klávesnice (popřípadě myši). V linuxu je to knihovna Xlib ve windows netuším, ale asi to bude obstarávat nějaká funkce WinAPI.

Nahlásit jako SPAM
IP: 80.188.252.–
Honza
~ Anonymní uživatel
450 příspěvků
18. 5. 2013   #4
-
0
-

Myslim, ze na to potrebujes funkci getch().

Nahlásit jako SPAM
IP: 89.102.99.–
Honza
~ Anonymní uživatel
450 příspěvků
18. 5. 2013   #5
-
0
-

A ještě místo system("cls") bych použil

void clear_screen (){

  DWORD n;
  DWORD size;
  COORD coord = {0};
  CONSOLE_SCREEN_BUFFER_INFO csbi;

  HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );

  GetConsoleScreenBufferInfo ( h, &csbi );

  size = csbi.dwSize.X * csbi.dwSize.Y;

  FillConsoleOutputCharacter ( h, TEXT ( ' ' ), size, coord, &n );
  GetConsoleScreenBufferInfo ( h, &csbi );
  FillConsoleOutputAttribute ( h, csbi.wAttributes, size, coord, &n );

  SetConsoleCursorPosition ( h, coord );
}
Nahlásit jako SPAM
IP: 89.102.99.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý