Untitled
unknown
plain_text
a year ago
3.8 kB
4
Indexable
#include <xc.h> #include <libpic30.h> #include <stdio.h> #include <string.h> #include "lcd.h" #include "buttons.h" #define INITIAL_TIME (15) // Czas początkowy w sekundach (15 sekund dla testów) volatile unsigned int biale_czas = INITIAL_TIME; volatile unsigned int czarne_czas = INITIAL_TIME; void delay_ms(unsigned long milliseconds) { while (milliseconds--) { __delay32(4000); // Zakładając 8 MHz FCY (8 MIPS) } } int main(void) { char display_buffer[32]; LCD_Initialize(); int faza_gry = 3; // Faza początkowa: wybór kto zaczyna while (1) { // Obsługa przycisków funkcyjnych (mat i remis) - bez zmian switch (faza_gry) { case 0: // Koniec gry (mat lub remis) biale_czas = INITIAL_TIME; czarne_czas = INITIAL_TIME; faza_gry = 3; // Powrót do wyboru kto zaczyna break; case 1: // Tura białych if (BUTTON_IsPressed(BUTTON_S3)) { // Przełączanie na turę czarnych faza_gry = 2; } else { LCD_ClearScreen(); sprintf(display_buffer, "%02u:%02u czarne", czarne_czas / 60, czarne_czas % 60); LCD_PutString(display_buffer, strlen(display_buffer)); LCD_PutString("\n", 1); sprintf(display_buffer, "%02u:%02u biale", biale_czas / 60, biale_czas % 60); LCD_PutString(display_buffer, strlen(display_buffer)); delay_ms(1000); czarne_czas--; // Dekrementujemy czas czarnych, bo to oni czekają if (czarne_czas == 0) { faza_gry = 0; // Koniec czasu czarnych LCD_PutString("Czarne przegrywaja", strlen("Czarne przegrywaja")); delay_ms(10000); // Czas na odczytanie komunikatu } } break; case 2: // Tura czarnych (analogicznie do tury białych) if (BUTTON_IsPressed(BUTTON_S4)) { // Przełączanie na turę białych faza_gry = 1; } else { LCD_ClearScreen(); sprintf(display_buffer, "%02u:%02u biale", biale_czas / 60, biale_czas % 60); LCD_PutString(display_buffer, strlen(display_buffer)); LCD_PutString("\n", 1); sprintf(display_buffer, "%02u:%02u czarne", czarne_czas / 60, czarne_czas % 60); LCD_PutString(display_buffer, strlen(display_buffer)); delay_ms(1000); biale_czas--; // Dekrementujemy czas białych, bo to oni czekają if (biale_czas == 0) { faza_gry = 0; // Koniec czasu białych LCD_PutString("Biale przegrywaja", strlen("Biale przegrywaja")); delay_ms(10000); // Czas na odczytanie komunikatu } } break; case 3: // Wybór kto zaczyna LCD_ClearScreen(); LCD_PutString("Kto zaczyna?\n S3=b S4=cz", strlen("Kto zaczyna?\n S3=b S4=cz")); if (BUTTON_IsPressed(BUTTON_S3)) { faza_gry = 2; // Białe zaczynają, więc odliczamy czas czarnych } else if (BUTTON_IsPressed(BUTTON_S4)) { faza_gry = 1; // Czarne zaczynają, więc odliczamy czas białych } break; } // Resetowanie gry przyciskiem S5 - bez zmian } return 0; }
Editor is loading...
Leave a Comment