int game(char **grid, char **gridenemy) { char str[3]; int *coord; if ((coord = malloc(sizeof(*coord) * 2)) == NULL) return (1); while (check_loose(grid, gridenemy) != 1) { my_printf("\nmy navy:"); my_display(grid); my_printf("\nenemy navy:"); my_display(gridenemy); my_printf("\nattack : "); check_input_coord(str, coord); send_coord(coord); hitornot(gridenemy, coord); if (check_win(grid, gridenemy) == 1) return (1); my_printf("\nwaiting for enemy's attack...\n"); receive_coord(coord); check_result(grid, coord); } free(coord); return (0); }
void send_error(int type, int level) { struct msghdr hdr; hdr.sender = current_proc; hdr.receiver = PROC_COORD; hdr.info_level = level; hdr.msgtype = type; hdr.un.errno = errno; hdr.payload_len = 0; send_coord(&hdr, sizeof(hdr)); }
int main(void) { OSCTUN = 0b0111; // Tune internal FRC: 9.7MHz+3% to have 10MHz => 20MIPS initPWM(); initTimer2(); initADC(); initTimer1(); initLedOutputs(); initUART(); /* starting state */ send_ping = true; /* Enable ADC */ ADCONbits.ADON = 1; /* Start the ADC module*/ /* Enable Timer 1 */ T1CONbits.TON = 1; unsigned int fetched_RTT1_overflows, fetched_RTT2_overflows, fetched_RTT1_time, fetched_RTT2_time; unsigned int i = 0; unsigned int j = 0; Point point; point.x = 0; point.y = 0; point.z = 0; while(1) { // LATBbits.LATB2 = RTT1_received; // LATBbits.LATB3 = RTT2_received; IEC0bits.ADIE = 0; fetched_RTT1_overflows = RTT1_overflows; fetched_RTT2_overflows = RTT2_overflows; fetched_RTT1_time = RTT1_time; fetched_RTT2_time = RTT2_time; IEC0bits.ADIE = 1; ++i; // if (i == 65000) { // ++j; // i = 0; // } if (i == 5000) { //LATBbits.LATB3 = !LATBbits.LATB3; if (RTT1_received && RTT2_received) { unsigned int RTT1 = fetched_RTT1_overflows*3277 + (fetched_RTT1_time/20) - 16000; unsigned int RTT2 = fetched_RTT2_overflows*3277 + (fetched_RTT2_time/20) - 16000; int error = track(RTT1, RTT2, &point); if (error == 0) { // send_debug("RTTs:"); // send_coord(RTT1, RTT2); // send_debug("Point:"); int x = (int) point.x; int y = (int) point.y; send_coord(x, y); // if (point.x < 0) { //// send_debug("X NEGATIF"); // // } // send_coord(-1,-1); } else { // send_debug("BUG!"); // send_coord(error, 1); } } i = 0; } } }