Beispiel #1
0
/* Read 1 character - echo defines echo mode */
char getch_(int echo) {
    char ch;
    initTermios(echo);
    ch = getchar();
    resetTermios();
    return ch;
}
Beispiel #2
0
/* 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
}
Beispiel #3
0
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);
}
Beispiel #4
0
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();
    }
}
Beispiel #5
0
//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); 
}