maybik писал(а):
вопросы по 3.0
вопрос 1 обязательно ставить мах232? я собираюсь настраивать с ноута серез адаптер на pl2303, там по идее тоже самое.
вопрос 2 тачмемори мне не нужен, можно просто убрать из схемы или надо править прошивку?
вопрос 3
Код:
case 0x00://"выключить" игрока
{
break;}
как описать команду выключить игрока? я так полагаю достаточно жизни свести на ноль? как сделать ссылку на момент потери жизни? объяснил как смог
2. можете убрать из схемы.
3. С ходу не отвечу.
В общем...
В функции
Код:
void hit_processing(trx_packet hit_packet)
Есть процедура обработки состояния, когда игрок вырублен.
Код:
life = 0;
life_in_percent=0;
WOUND_LED_ON;
display_life(life);//îòîáðàçèì óðîâåíü æèçíè íà äèîäàõ
display_life_update();//îòîáðàçèì óðîâåíü æèçíè íà ÆÊÈ
volatile uint8_t keypress_cntr; //ñ÷åò÷èê öèêëîâ, â òå÷åíèè êîòîðûõ êóðîê áûë íàæàò
keypress_cntr = 0;
while (eeprom_is_open);//äîæäåìñÿ, ïîêà eerom çàêðîåòñÿ
playgameoversound();
if ((eeprom_read_byte(&eeprom_tm_serial_num.device_code)!=0)&&(eeprom_read_byte(&eeprom_tm_serial_num.device_code)!=0xFF))
/*åñëè ÒÌ êëþ÷ óæå çàíåñ¸í â ïàìÿòü*/
{
joystick_event=no_pressing;
keyboard_event=no_key_pressing;
tm_event=no_tm_event;
uint8_t tm_valide;
tm_valide=0;
lcd_bl_off();
while (!tm_valide)
{//[while]
lcd_clrscr();
lcd_home();
lcd_puts("Äëÿ àêòèâàöèè");
lcd_gotoxy(0, 1);
lcd_puts("ïðèëîæèòå êëþ÷");
while (tm_event == no_tm_event)
{
WOUND_LED_INVERT;
USART_PutChar('1');
timer2 = 0;
while (timer2 < 1000);
WOUND_LED_INVERT;
timer2 = 0;
while (timer2 < 1000);
};
switch(tm_event)
{//[switch]
case no_tm_event:
{
}
break;
case tm_crc_error:
{
lcd_clrscr();
lcd_home();
lcd_puts("Îøèáêà CRC");
timer2 = 0;
while (timer2 < 6000){};
tm_event=no_tm_event;
}
break;
case tm_crc_ok:
{
if (tm_verification())
{ tm_valide=1;
lcd_clrscr();
lcd_home();
lcd_puts("֏!");
timer2 = 0;
while (timer2 < 6000){};
tm_event=no_tm_event;
break;
}
lcd_clrscr();
lcd_home();
lcd_puts("Íå òîò êëþ÷");
timer2 = 0;
while (timer2 < 6000){};
/*
lcd_clrscr();
lcd_home();
lcd_puts("Äëÿ àêòèâàöèè");
lcd_gotoxy(0, 1);
lcd_puts("ïðèëîæè êëþ÷");
*/
tm_event=no_tm_event;
}
break;
}//[/switch]
}//[while]
}//end if
else //òà÷ ìåìîðè íå çàïèñàí â ïàìÿòü
{//[else]
lcd_bl_off();
display_status();
rx_event = rx_event = NOT_EVENT;
ir_message.control_byte = 0;
while(!(((ir_message.control_byte ==Valid_value)&&(ir_message.ID==Command)&&(ir_message.param==0x05))||(joystick_event == key_central_pressing)))//ïîêà íå ïîëó÷èì êîìàíäó "ñòàðò"
{//[while]
rx_event = NOT_EVENT;
while((rxCount==0)&&(rx_event != RX_MESSAGE_COMPLITE)&&(joystick_event == no_pressing))//ïîêà íåò íèêàêèõ êîìàíä ïóëüòà
{//[while]
WOUND_LED_INVERT;
USART_PutChar('1');
timer2 = 0;
while (timer2 < 1000);
WOUND_LED_INVERT;
timer2 = 0;
while (timer2 < 1000);
}//[while]
if(joystick_event!=key_central_pressing)joystick_event = no_key_pressing;
if (rx_event == RX_MESSAGE_COMPLITE) ir_message = get_ir_message_from_buffer();//ïðèøëà êîìàíäà ïóëüòà, âûäåðãèâàåì çíà÷åíèÿ êîìàíäû èç áóôåðà ÈÊ ïðèåìíèêà
else //[else]
{
if (rxCount>0) finde_message_in_bt_buffer();
}//[else]
}//[while]
/*
while(keypress_cntr < 20)
{
WOUND_LED_INVERT;
USART_PutChar('1');
timer2 = 0;
while (timer2 < 1000);
WOUND_LED_INVERT;
timer2 = 0;
while (timer2 < 1000);
switch (FIRE_KEY_IN&FIRE_KEY_PIN) //ïðîâåðÿåì, íàæàò ëè êóðîê
{
case 0: keypress_cntr++ ; break;
case FIRE_KEY_PIN: keypress_cntr = 0; break;
default: keypress_cntr = 0;
}
}
*/
} //end else //òà÷ ìåìîðè íå çàïèñàí â ïàìÿòü
//"îæèâàåì" - íà÷èíàåì íîâóþ èãðó
if (simples_in_queue>1) //åñëè çâóê âûñòðëà âîñïðîèçâîäèòñÿ
{//[if]
simples_in_queue=1;//çàêðîåì eeprom
while (eeprom_is_open);//äîæäåìñÿ, ïîêà eerom çàêðîåòñÿ
}//[if]
init_var(); //èíèöèàëèçèðóåì ïåðåìåííûå
joystick_event=no_pressing; //î÷èùàåì ñîáûòèÿ äæîéñòèêà
keyboard_event=no_key_pressing;//î÷èùàåì ñîáûòèÿ òðèããåðà
reload_key_event=no_key_pressing;//î÷èùàåì ñîáûòèÿ ïåðåçàðÿäêè
rx_event = NOT_EVENT; //î÷èùàåì ñîáûòèÿ ÈÊ ïðèåìíèêà
display_status();//îáíîâëÿåì èíôîðìàöèþ íà äèñïëåå
// display_life(life);//îòîáðàçèì óðîâåíü æèçíè íà äèîäàõ
WOUND_LED_ON;
playstartsound();
//êîä îáðàáîòêè äîïîëíèòåëüíîé êîìàíäû
WOUND_LED_OFF;
/*
WOUND_LED_OFF;
init_var();//"îæèâàåì" - íà÷èíàåì íîâóþ èãðó
joystick_event=no_pressing;
keyboard_event=no_key_pressing;
tm_event=no_tm_event;
*/
// display_status();
}//[else]
//// display_life(life);//îòîáðàçèì óðîâåíü æèçíè íà äèîäàõ
// display_life_update();//îòîáðàçèì óðîâåíü æèçíè íà ÆÊÈ
//// lcd_bl_off();
//// display_status();
status_need_update = true;
}//[if]
Она такая страшная, потому что тач Мемори тут ещё учитывается, можно выкинуть, станет проще.
По уму её надо вытащить в отдельную функцию и использовать и при обработке команды 0x00
Тут выход из состояния по нажатию центральной кнопки джойстика, либо колючем Тач Мемори, либо командой с пульта 0x05.