Esempio n. 1
0
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);
}
Esempio n. 2
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));
}
Esempio n. 3
0
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;
        }
    }
}