Patrunjel Posted November 2, 2010 Report Posted November 2, 2010 Salut, mi-a venit prin cap sa-mi fac un joculet (nu cine stie ce, insa mie mi se pare misto, chiar daca e in consola ), insa pentru asta am nevoie de clrscr() (sau un sfat legat de cum actualizez outputul, si Trolii tre sa se miste, nu? ), si as mai avea nevoie de o idee legata de introducerea datelor de la tastatura fara a mai apasa enter (si, eventual, fara sa apara acolo in consola, insa asta nu e neaparat necesar, daca folosesc ceva gen clrscr).Ma poate ajuta cineva? Quote
Xander Posted November 2, 2010 Report Posted November 2, 2010 (edited) system("cls"); pe windoz si system("clear"); pe linux cat despre input fara enter poti cu hook-uri pe key-uri (doar in consola ta ca banuiesc ca nu vrei sa faci keylogger )dar mai bine decat sa faci cu clear ..(e foarte greu) schimbi tu dinamic consola pe fiecare coordonata in parte (ti in memorie 2 matrici una pentru starea initiala si una pentru starea finala si modifici pe consola doar unde s-a schimbat ... nu tot)edit:#ifdef WIN32#define clrscr() system("cls");#else#define clrscr() system("clear");#endifsi ai clrscr fara conioedit2:cu asta alegi pozitia din consola unde afisezi ( din cate tin minte merge si win si lin )void gotoxy(int x, int y){COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } Edited November 2, 2010 by Xander Quote
Patrunjel Posted November 2, 2010 Author Report Posted November 2, 2010 (edited) Asta ma gandeam si eu, sa rescriu doar ceea ce s-a schimbat, insa habar n-am cum se face asta.In legatura cu restul chestiilor pe care le-ai zis, mersi mult, dar n-am inteles o iota PS: nu vreau sa fac niciun keylogger, bre, fac un RPG in consola, tu esti H, te misti, si trolii is T(si ei se misca ), si daca te-ai izbit in trol iti scade 20 viata, insa il omori.A,da, creste cate 1viata la 5 secunde. Cel putin asta-i planu de azi la amiaza pana acuma abea am reusit sa generez harta (si sa fac cateva teste, sa vad cat de mare sa fie), si sa fac trolii sa se miste(vreo 2 ore m-am chinuit nu stiam cum sa-i fac sa evite muntii, si bordura, si pe ei intre ei ).Oricum, mie mi se pare interesant, daca vrea careva sa citeasca sursa o pun si pe-aici cand e gata.PPS: Am bagat codu, insa imi raman reziduuri de harta in partea de sus .Decat sa iau moca la copy-paste, mai bine zi-mi ceva termeni de cautat pe google Edited November 2, 2010 by Patrunjel Quote
cigraphics Posted November 2, 2010 Report Posted November 2, 2010 iti dau un sfatNu folosii libraria conio.h la facultate ne punea sa o folosim da le-am spus ca e depasita si nu am sa folosesc asa ceva Quote
Patrunjel Posted November 2, 2010 Author Report Posted November 2, 2010 Crede-ma, poate fi oricat de depasita, tot m-ar multumi insa oricum n-am cum sa o folosesc, sunt pe linux, si din ce mi-a zis mie gogu, nu e conio pe linux.Decat asspain.h (sau ceva de genu ) care imita cumva conio, n-am ce-mi trebuie acolo. Quote
Xander Posted November 2, 2010 Report Posted November 2, 2010 din conio iti trebuie doar clrscr nu? adica:#include <stdlib.h>#ifdef WIN32#define clrscr() system("cls");#else#define clrscr() system("clear");#endifcand vrei sa cureti ecranu folosesti clrscr();P.S.: nu dai include conio sau altceva decat ce am scris eu mai susexemplu complet ... lol#include <stdio.h>#include <stdlib.h>#ifdef WIN32#define clrscr() system("cls");#else#define clrscr() system("clear");#endifint main(){ for(int i=1;i<=10000;i++) { printf("aaa %d\n" , i); clrscr(); }} Quote
Patrunjel Posted November 2, 2010 Author Report Posted November 2, 2010 da,asa am facut, imi raman bucati de output (vreo 2 linii ) de mai inainte.In fine, nu, nu clrscr() e cel mai important.Cel mai mult m-ar interesa sa pot sa introduc date fara sa apas enter, ca sa pot sa scriu functia de mutare a eroului Quote
Xander Posted November 2, 2010 Report Posted November 2, 2010 include <stdio.h>#include <stdlib.h>#include <termios.h>struct termios initial_settings, new_settings;int main(int argc, char *argv[]){ int n; unsigned char key; tcgetattr(0,&initial_settings); new_settings = initial_settings; new_settings.c_lflag &= ~ICANON; new_settings.c_lflag &= ~ECHO; new_settings.c_lflag &= ~ISIG; new_settings.c_cc[VMIN] = 0; new_settings.c_cc[VTIME] = 0; tcsetattr(0, TCSANOW, &new_settings); while(1) { n = getchar(); if(n != EOF) { key = n; if(key == 27) /* Escape key pressed */ { break; } if( 'A' <= key && key <= 'Z') key += 'a' - 'A'; printf("%c" , key); /* do something useful here with key */ } } tcsetattr(0, TCSANOW, &initial_settings); return(0);} Quote