/* Read 1 character - echo defines echo mode */ char getch_(int echo) { char ch; initTermios(echo); ch = getchar(); resetTermios(); return ch; }
/* skeleton program for play */ void Play(double seconds){ initTermios(); // initailize new terminal setting to make kbhit() and getch() work char cc; const double TIME_LIMIT = seconds * CLOCKS_PER_SEC; clock_t startTime = clock(); while ((clock() - startTime) <= TIME_LIMIT){ if (kbhit()){ cc = getch(); resetTermios(); // reset terminal setting to enable buffer i/o and echo (printf) printf("Pressed %c\n",cc); // process character initTermios(); // use new terminal setting again to make kbhit() and getch() work } } printf("\nTime Up\n"); resetTermios(); // restore default terminal setting }
void game::run(){ //TODO nanti harus diganti init(); drawCanvas(0,0,0,255); drawTextCentered("GRAPHICAT",9,50,3,255,0,0,255); drawTextCentered("PLANE SHOOTER",13,150,3,255,0,0,255); drawTextCentered("Press A or D to move ship left or right",39,250,1,255,0,0,255); drawTextCentered("Press J or L to rotate the ship turret",38,300,1,255,0,0,255); drawTextCentered("Press Space to shoot",20,350,1,255,0,0,255); drawTextCentered("Press Q to change weapon",24,400,1,255,0,0,255); printToScreen(); sleep(5); while (!gameOver()){ updateControls(); updateLogic(); drawScreen(); usleep(200); } usleep(500); drawTextCentered("YOU WIN",7,300,5,255,0,0,255); printToScreen(); usleep(500); finishPrinter(); resetTermios(); sleep(2); }
void inputHandler() { initTermios(); char cc; while(!stop) { if (kbhit()) { cc = getch();resetTermios(); switch (cc) { case 'h': case 'H' : system("clear"); F.FaceHappy(screen, wajah); break; case 'a': case 'A' : system("clear"); F.FaceAngry(screen, wajah); break; case 's': case 'S' : system("clear"); F.FaceSad(screen, wajah); break; case 'n': case 'N' : system("clear"); F.FaceNormal(screen, wajah); break; case 'k': case 'K' : system("clear"); F.FaceShocked(screen, wajah); break; case ',': case '<' : system("clear"); F.FaceWink1(screen, wajah); break; case '.': case '>' : system("clear"); F.FaceWink2(screen, wajah); break; case 'q' : case 'Q' : stop = true; break; } wakeUp = true; } initTermios(); } }
//thread void *inputHandler(void *vargp) { initTermios(); char cc; pthread_t tid2; pthread_create(&tid2, NULL, drawGun, NULL); drawTarget(getTargetPosX(TP),getTargetPosY(TP),50,220,10); while(stop == 0) { drawTarget(getTargetPosX(TP),getTargetPosY(TP),50,220,10); usleep(1000); if (kbhit()) { cc = getch();resetTermios(); switch (cc) { case 'w': case 'W' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,0,-15); break; case 'a': case 'A' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,-15,0); break; case 's': case 'S' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,0,15); break; case 'd': case 'D' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,15,0); break; case 'q' : case 'Q' : stop = 1; break; case 'i' : case 'I' : if(! isActive(B)) { makeBomb(getTargetPosX(TP),getTargetPosY(TP),&B); setActive(&B,1); } } initTermios(); } } pthread_join(tid2, NULL); }