Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - muovere il cursore con tastiera?
Forum - C/C++ - muovere il cursore con tastiera?

Avatar
kelfen (Normal User)
Newbie


Messaggi: 14
Iscritto: 31/10/2008

Segnala al moderatore
Postato alle 12:22
Domenica, 25/01/2009
Ho trovato questo comando molto interessante: "BOOL GetCursorPos(LPPOINT lpPoint);" ma ho scoperto che è per il muose e soprattutto non penso sia eseguibile in dos...

mi servirebbe un comando o un "modo" per far si che essendoci a video quelle 3 righe (prog sotto) bastasse pigiare su o giù nella tastiera per selezionarne una.
ps. io ancora non so creare programmi ad interfaccia grafica, quindi vengono eseguiti in dos.

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3. void main()
  4. {
  5. int n;
  6. cout<<"1- Gioca"<<endl;
  7. cout<<"3-Istruzioni"<<endl;
  8. cout<<"3-opzioni"<<endl;
  9. cin>>n;




Ultima modifica effettuata da kelfen il 25/01/2009 alle 12:34
PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 12:12
Lunedì, 26/01/2009
anche se riuscissi a muovere il cursore il tuo programma prende l'input dal cin, quindi non ti serve selezionare le righe
prova usando getch() e una variabile che varia da 1 a 3, e poi dopo aver premuto enter con un if scegli l'operazione da eseguire


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
kelfen (Normal User)
Newbie


Messaggi: 14
Iscritto: 31/10/2008

Segnala al moderatore
Postato alle 14:29
Lunedì, 26/01/2009
Testo quotato

Postato originariamente da munkaka:

anche se riuscissi a muovere il cursore il tuo programma prende l'input dal cin, quindi non ti serve selezionare le righe
prova usando getch() e una variabile che varia da 1 a 3, e poi dopo aver premuto enter con un if scegli l'operazione da eseguire



quello si... ma io intendevo tipo che venissero fuori a video le 3 opzioni e schiacciando su o giu sulla tastiera, un pallino si posizionasse di fianco alla scleta e premendo "invio" si sceglieva dove entrare

ps. l'ho visto su un prog.

PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 21:46
Lunedì, 26/01/2009
int scelta(){
      int x1=15,x2=51,y=8,k=0,sw=0;
      gotoxy(x1,y);
      printf("-->");
      gotoxy(x2,y);
      printf("<--");
      do{
          k=_getch();
          switch (k){
              case 49:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=8;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 50:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=9;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 51:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=10;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 52:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=11;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 53:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=12;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 54:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=13;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 55:
                    gotoxy(x1,y);printf("   ");gotoxy(x2,y);printf("   ");y=14;
                    gotoxy(x1,y);printf("-->");gotoxy(x2,y);printf("<--");
              break;
              case 72:
                 if (y!=8){
                     gotoxy(x1,y);printf("   ");gotoxy(x2,y);
                     printf("   ");y--;gotoxy(x1,y);printf("-->");
                     gotoxy(x2,y);printf("<--");
                     }else {                        
                      gotoxy(x1,y);printf("   ");gotoxy(x2,y);
                     printf("   ");y=14;gotoxy(x1,y);printf("-->");
                     gotoxy(x2,y);printf("<--");
                         }
              break;
              case 80:
                 if (y!=14){
                     gotoxy(x1,y);printf("   ");gotoxy(x2,y);
                     printf("   ");y++;gotoxy(x1,y);printf("-->");
                     gotoxy(x2,y);printf("<--");
                     }else {  
                       gotoxy(x1,y);printf("   ");gotoxy(x2,y);
                     printf("   ");y=8;gotoxy(x1,y);printf("-->");
                     gotoxy(x2,y);printf("<--");
                         }
              break;
              
              }                  
          }while(k!=13);
          
      for(int i=8;i<=14;i++){
          if (y==i){sw=i-7;}
      }
return sw;      
}


implementa la libreria conio, modifica la stringa "<--" come più ti piace, mettendoci un pallino o quello che vuoi tu e modifica i numeri in modo da trovarti a tre scelte!! questo l'ho sudato e studiato io in ore e ore di sforzi mentali!!!!!


Il computer non è una macchina intelligente che aiuta le persone stupide.
E' una macchina stupida che funziona solo nelle mani delle persone intelligenti.
Programmatore, non per lavoro, ma per passione!!
PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 0:06
Martedì, 27/01/2009
ho trovato un programma che avevo fatto che fa quello che vuoi fare tu, ti allego la parte di codice che ti interessa


munkaka ha allegato un file: esempio.zip (6009 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da munkaka il 27/01/2009 alle 0:08


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 14:59
Martedì, 27/01/2009
Testo quotato

Postato originariamente da munkaka:

ho trovato un programma che avevo fatto che fa quello che vuoi fare tu, ti allego la parte di codice che ti interessa



questo pezzo di codice l'ho provato io, ma non funziona!!! e anke l'eseguibile non va, causa mancanza delle librerire specifiche!! cmq vedendo il sorgente ho notato ke potrebbe interessarmi!! non potresti postarmi tutto il codiced con le librerie?? vorrei studiarmele!!


Il computer non è una macchina intelligente che aiuta le persone stupide.
E' una macchina stupida che funziona solo nelle mani delle persone intelligenti.
Programmatore, non per lavoro, ma per passione!!
PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 18:49
Martedì, 27/01/2009
strano che non ti funziona, ho ricompilato il codice che ti ho dato con code blocks e visual studio e funziona
in ogni caso ti mando la cartella contentente il file exe compilato in release e anche gli header usati e il codice


munkaka ha allegato un file: esempio.zip (107846 bytes)
Clicca qui per scaricare il file


Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
kelfen (Normal User)
Newbie


Messaggi: 14
Iscritto: 31/10/2008

Segnala al moderatore
Postato alle 10:40
Mercoledì, 28/01/2009
Grazie mille a tutti!!!!!!!

adesso che ho visto come si fa, m studierò il comando gotoxy e proverò a rifarlo!!

edit.perfetto sono riuscito a rifarlo usando però solo i comandi che conosco.

Codice sorgente - presumibilmente C/C++

  1. char c,a1='*',a2=' ',a3=' ';
  2.         int s=1;
  3.         do
  4.         {
  5.                 system("cls");
  6.                 cout<<"Scegli:"<<endl<<endl;
  7.                 cout<<a1;
  8.                 cout<<"  Gioca"<<endl;
  9.                 cout<<a2;
  10.                 cout<<"  Istruzioni"<<endl;
  11.                 cout<<a3;
  12.                 cout<<"  Opzioni"<<endl;
  13.                 c=getch();
  14.                 if(c==72)
  15.                         s--;             //giu
  16.                 if(c==80)  
  17.                         s++;             //su
  18.                 if(s>3)
  19.                         s=1;
  20.                 if(s<1)
  21.                         s=3;
  22.                 a1=' ';a2=' ';a3=' ';
  23.                 if(s==1)
  24.                         a1='*';
  25.                 if(s==2)
  26.                         a2='*';
  27.                 if(s==3)
  28.                         a3='*';
  29.         }while(c!=13);



l'unico problema è che il "cls" è un pò lento e si vede ammalapena il refresh della pagina..
adesso vedrò di capire come funzia il "gotoxy" e poi lo farò con quello.

Ultima modifica effettuata da kelfen il 28/01/2009 alle 12:46
PM Quote
Avatar
Il_maca (Normal User)
Rookie


Messaggi: 49
Iscritto: 19/12/2008

Segnala al moderatore
Postato alle 16:39
Venerdì, 30/01/2009
Testo quotato

Postato originariamente da munkaka:

strano che non ti funziona, ho ricompilato il codice che ti ho dato con code blocks e visual studio e funziona
in ogni caso ti mando la cartella contentente il file exe compilato in release e anche gli header usati e il codice



questo mi funziona!! grazie mille! è davvero interessante


Il computer non è una macchina intelligente che aiuta le persone stupide.
E' una macchina stupida che funziona solo nelle mani delle persone intelligenti.
Programmatore, non per lavoro, ma per passione!!
PM Quote